사이트 내 전체검색
검색목록
왜 setuid shell scripts를 사용할 수 없는가?
로빈아빠
https://cmd.kr/server/837 URL이 복사되었습니다.

본문

여러기지 이유로 사용해서는 안되는데, 대개는 유닉스  커널에 있는 버그와 관련
되어 있다. 여기에 몇가지 잘 알려진 문제가 나오는데, 이들은 최근에 와서야 수
정되었다.
(1)script가 "#!/bin/sh"로 시작하고, link(symbolic이든 다른것이든)rk "-i"와 함게
만들어질 수 있다면,script를 실행할 수  있으므로 setuid shell로 바로 들어갈 수
있다. "#!/bin/sh -i",즉 interactive shell이다.
(2)명령어 처리가 시작되는 시점과 그리고 새롭게  setuid를 설정하는 exec()ed가
진행되는 시점 사이에서  어느 셀스크립트를 당신이 선택,실행가능한  것으로 바
꾸어주는가 하는 상황이  많은 커널들에게 피해를 입힌다.  계속해서 집중적으로
파고든다면 이론상으로는,누구든지  실행시키기를 원하는 프로그램의  커널을 얻
을 수 있다
(3)IFS의 버그 : IFS변수는 명령어들을 처리할 때  셀에 의해서 공백으로 처리되
는 문자들의  표를 가지고있다. '/'문자를  가지는 IFS변수를 바꾸어 'bin/true'를
'bin true'로 바꿀 수 있다.
만일 원하는 것이 변경된 IFS변수를 빼내는 것이라면 'bin'명령을 당신의 경로에
설치하고 'bin/true'라는 setuid 스크립트를 실행하면 된다.
정말로 스크립트를 이용하여 setuid를 설정하려면 다음의 두가지 방법이 있다.
a)스크립트가 실행되기 전에  IFS와 PATH를 리셋시키지 않도록 주의하며 스크
립트 주변의 'C'에  setuid를 집어넣는다. 만일 시스템이  라이브러리와 링크시키
기 시작한다면 LD_LIBRARY_PATH의 설정값을 생각해 보는것이 좋다.
b)안전한 setuid의  설정의 용이성을 가지고 있으며  보안에 매우 강한  perl같은
스크립트 언어를 사용하라.
그러나 진짜로 안전한 것은 아예 setuid 스크립트를 사용하지 않는것이다.

댓글목록

등록된 댓글이 없습니다.

47 (1/1P)

Search

Copyright © Cmd 명령어 3.14.132.178