system()함수 사용에 관하여...
글쓴이: 불량청년 / 작성시간: 월, 2003/02/24 - 9:46오후
개인적으로 쉘에서 어떠한 작업을 많이 하게 하는 프로그램을 C로 만들
었습니다. 그런데 파이프나 exec함수군을 사용하지 않고 system()함수를
사용했습니다. 어디선가 보안에 문제가 된다고 하는데...
컴파일한 바이너리 코드를 보니 코드섹션에 쉘에서 수행되는 명령어가
그대로 있는거 같은데... system()함수가 보안에 문제가 어느정도
있는지 궁금합니다. 일반적으로 사용자 패스워드같은건 거의 프로그램
수행시 동적으로 입력받아서 처리하게 했는데...
Forums:
맨페이지를 보면 기본적인 것은 충족이 되실 겁니다.[quote]
맨페이지를 보면 기본적인 것은 충족이 되실 겁니다.
한글로..
rommance.net
[re]
system() 함수의 가장 큰 문제점은
내부적으로 exec( "/bin/sh", args ); 를 실행한다는 점입니다.
다시 말하면 system( "/bin/ls" ); 했을때 이것은 내부적으로
exec( "/bin/sh", "/bin/sh", "/bin/ls" ); 한것과 똑같은 거라는건데요
주어진 명령을 쉘을 사용해 실행한다는것은 사용자가 메타문자를 사용할 수 있음을 의미합니다.
가령 예를 들어서
system( "/usr/sbni/sendmail user@somehost.com < hello.txt" );
이 문장을 실행한다고 했을때 user@somehost.com 을 사용자로부터 입력받는 상황을 볼 수 있겠습니다. 만약 사용자가 "user@somehost.com" 같은 올바른 Email 주소 대신, "user@somehost.com;rm -rf /" 와 같은 메타문자가 포함된 쉘 명령을 사용한다면 system() 함수는 이를 여과없이 실행시키게 됩니다.
댓글 달기