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

3월, 화창한 봄이지만 보안 인력들에겐 Month of PHP Bugs 의 악몽이 기다리고 있는 시기이기도 합니다. 미국 시간으론 3월의 첫날인 오늘, 드디어 Month of PHP Bugs 의 서막이 올랐습니다.

Stefan Esser 는 트래픽이 몰릴 것을 예상해서 자신의 개인 블로그Hardened-PHP 사이트가 아닌 별도의 사이트에서 PHP 의 취약점 정보를 공개했습니다.

약속대로 PHP 의 core 에 존재하는 보안 취약점 3가지가 공개됐는데, 그의 말을 빌면 '첫날이라 PHP 커뮤니티에 알려진지 오래된 취약점' 몇 가지를 공개했다네요. 취약점의 리스트는 아래 그림과 같습니다.


( 첫날 발표된 취약점 리스트 )


1번 취약점은 PHP 4 의 내부 레퍼런스 카운터 사이즈가 너무 작아 생기는 문제로 공격시 Safe-Mode 같은 PHP 의 보안 메커니즘을 우회할 수 있고, root 권한 획득을 위한 발판으로 작용할 수 있다고 합니다. 이 취약점은 로컬에서만 공격 가능한 취약점으로 파악됩니다. 함께 발표된 다른 취약점과 달리 취약 여부를 파악하기 위한 검증 도구(Proof of Concept)도 함께 발표되었으니 확인 작업이 편하실 듯 하네요.

PHP 5 사용자는 레퍼런스 카운터 사이즈가 32비트로 확장되서 해당 취약점의 영향을 받지 않는다고 하니 안심하셔도 좋을 듯... 그러나 PHP 4 사용자라면 문제입니다. 현재 PHP 프로젝트에서는 이 취약점에 대해 고칠 의사가 없다고 하는군요. 기존에 PHP 4 기반으로 개발된 어플리케이션을 버리고 PHP 5 로 이전할 수도 없고, 취약점이 널리 알려졌는데 손놓고 있을 수도 없고 진퇴양난이군요.

호스팅 환경과 같이 여러 사용자가 함께 사용하는 환경이라면 혹시 고객 중에 위의 검증 도구를 수정해서 공격을 시도하는 사람이 없는지 쉘스크립트로 24시간 모니터링하는 방법 외에 뾰족한 수가 없을 듯 합니다.

2번, 3번 취약점은 1번 취약점과 달리 PHP 버전에 상관없는 취약점으로 원격에서도 공격 가능한 취약점입니다. PHP 를 이용해 재귀 호출(recursion)을 수행하는 경우 너무 많은 재귀 호출이 발생하면 stack 이 모자라 오버플로우가 발생하면서 Zend Engine 이 뻣어버린다는군요. 현재 PHP 프로젝트에서는 이 취약점에 대해서도 고칠 의사가 없다고 합니다. 유일한 해결책은 Stefan Esser 가 PHP 보안 강화 프로젝트로 개발한 수호신(Suhosin) 패치를 적용하는 것이라고 하네요.

첫날이라 맛보기 삼아 그나마 약한 취약점 몇 가지를 보여준 듯 한데요, 앞으로 어떤 무시무시한 취약점들이 우리를 기다리고 있을지 기대 됩니다.

혹 '왜 이런 미친 짓을 해서 여러 사람 피해주냐?' 라고 생각하시는 분이 계시다면, 꼭 Month of PHP Bugs 사이트에 가셔서 FAQ 를 보시기 바라며, 저는 이만~

--- 추가 ---
1번 취약점에 대한 검증 도구는 관련 문서를 꼭 세심하게 읽고 나서, 테스트 서버에서 적용해보시기 바랍니다. 그냥 돌리면 안되게 되있습니다. 운영 서버에 하시는 분은 설마 안계시겠죠?

트랙백

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

덧글

  • CN 2007/03/04 18:21 # 삭제 답글

    Month of PHP bugs에 관심을 가지신 분들이 많더군요. 헐랭이님의 글들이 KLDPed(http://kldp.org/node/79283)되었습니다.
  • 헐랭이 2007/03/04 19:08 # 답글

    CN// 블로그에 들러주셔서 감사합니다. KLDP 에 올려주신 것에도 감사~ IRC 에서는 자주 뵈었는데, 블로그로는 처음이 아닌가 싶네요. 앞으로도 자주 들러주세요~ *^^*
  • LEE 2007/03/05 13:09 # 삭제 답글

    헐랭이님 irc서버는 어디를 이용하시는지요? 그리고 채널명도?함께?ㅋㅋ
  • 헐랭이 2007/03/05 15:44 # 답글

    HanIRC 의 #lisp 방에서 opt9 으로 어슬렁거리고 있습니다. 이 방은 lisp 프로그래밍에 대해 대화를 주고 받는 곳이고, 극도로 '썰렁'합니다.
덧글 입력 영역