애드센스4



Month of PHP Bugs - 28일차 보안 정보

28일차 MOPB 취약점이 발표되었습니다.



( 28일차 취약점 리스트 )


36번째 취약점은 PHP 의 보안 매커니즘인 open_basedir 제한을 우회할 수 있는 취약점입니다. PHP 는 세션 데이터를 저장하기 위한 설정값 session.save_path 를 별도로 지정하지 않으면 환경 설정값 TMPDIR 를 사용하게 됩니다.

자동으로 TMPDIR 를 사용하는 과정이 open_basedir 점검 과정 이후에 일어나기 때문에, open_basedir 설정을 우회해서 다른 디렉터리에 접근할 수 있다고 합니다.

예제를 보시면 이해가 더 쉬울 텐데요.
<?php
  ini_set("session.save_path", "/sessions/user2/"); <-- open_basedir 제한에 걸림
  putenv("TMPDIR=/sessions/user2/");                  <-- TMPDIR 설정
  ini_set("session.save_path", "");                          <-- open_basedir 제한에 안걸림
  @session_start();
?>


위에서 보면 첫번째 줄의 session.save_path 설정은 open_basedir 제한에 걸리게 되어 에러가 납니다. 반면 세번째 줄은 성공하게 됩니다.

첫번째 줄은 session.save_path 설정 이후 open_basedir 점검이 일어나기 때문에 open_basedir 제한에 걸리게 됩니다.

세번째 줄은 session.save_path 설정을 NULL 로 했죠? 이때 open_basedir 을 점검한 후, TMPDIR 환경 설정값으로 session.save_path 를 설정하게 됩니다. 이미 open_basedir 점검은 통과했으니 우회 성공!

해당 취약점은 PHP 4.4.5 미만, PHP 5.2.1 미만에 해당된다고 하니 최신 버전으로 업데이트하시면 되겠습니다.

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://swbae.egloos.com/tb/1536793 [도움말]

덧글

댓글 입력 영역


애드센스7