오늘도 Month of PHP Bugs 에서 2 개의 취약점을 추가로 발표했습니다. 오늘 발표된 취약점의 특징은 민감한 정보를 유출할 수 있는 취약점이라는 것입니다. 취약점의 리스트는 아래 그림과 같습니다.

( 5일차 취약점 리스트 )
10번째 취약점은 PHP 세션 핸들러 내부의 php_binary 핸들러가 취약하게 구현되어 있어서 heap 상의 정보를 해커에게 노출한다는 점입니다. 원인은 바운더리 체크를 안하기 때문이며, 노출되는 정보의 양은 126 바이트 정도라는 군요. 발표 자료를 직접 보시면 취약점 검증 도구(Proof of Concept)를 이용해 미리 기록해놓은 가비지 정보를 보는 내용이 나옵니다. 여기서야 알파벳 A 로 이루어진 쓸모없는 정보였지만, 실환경이었다면 민감한 정보였겠죠.
11번째 취약점은 PHP 의 WDDX 확장 모듈의 취약점으로 10번째 취약점과 매우 비슷한 취약점입니다. 대신 이 취약점은 heap 이 아니라 stack 의 정보를 노출한다는 점에 차이가 있습니다. 발표 자료를 보시면 php_set_session_var() 함수가 특정한 key 에 key_length 사이즈의 데이터를 바인딩하는 것을 보실 수 있는데, 이때 key_length 값이 제대로 초기화 안되고 사용되어 해커가 얼마든지 조작할 수 있다고 합니다. 10번째 취약점과 달리 key_length 값을 해커가 임의로 조작할 수 있기 때문에 보고 싶은 정보를 제약없이 액세스할 수 있습니다.
10번째 취약점과 11번째 취약점이 최근 발표된 PHP 4.4.6 과 5.2.1 에서 패치가 되었는지 여부에 대해선 발표 자료만으로는 알기 어렵네요.
그리고 오늘의 보너스!
Stefan Esser 에게 8번째 취약점이 PHP 6.0 snapshot 에서도 취약하다고 알려준 바 있는데, 8번째 취약점 발표 자료에 재미있는 내용을 추가했네요. 한국분들이라면 좋아하실 듯... (잘 안보이시는 분들은 UTF-8 로 보셔야 제대로 보입니다)

( 5일차 취약점 리스트 )
10번째 취약점은 PHP 세션 핸들러 내부의 php_binary 핸들러가 취약하게 구현되어 있어서 heap 상의 정보를 해커에게 노출한다는 점입니다. 원인은 바운더리 체크를 안하기 때문이며, 노출되는 정보의 양은 126 바이트 정도라는 군요. 발표 자료를 직접 보시면 취약점 검증 도구(Proof of Concept)를 이용해 미리 기록해놓은 가비지 정보를 보는 내용이 나옵니다. 여기서야 알파벳 A 로 이루어진 쓸모없는 정보였지만, 실환경이었다면 민감한 정보였겠죠.
11번째 취약점은 PHP 의 WDDX 확장 모듈의 취약점으로 10번째 취약점과 매우 비슷한 취약점입니다. 대신 이 취약점은 heap 이 아니라 stack 의 정보를 노출한다는 점에 차이가 있습니다. 발표 자료를 보시면 php_set_session_var() 함수가 특정한 key 에 key_length 사이즈의 데이터를 바인딩하는 것을 보실 수 있는데, 이때 key_length 값이 제대로 초기화 안되고 사용되어 해커가 얼마든지 조작할 수 있다고 합니다. 10번째 취약점과 달리 key_length 값을 해커가 임의로 조작할 수 있기 때문에 보고 싶은 정보를 제약없이 액세스할 수 있습니다.
10번째 취약점과 11번째 취약점이 최근 발표된 PHP 4.4.6 과 5.2.1 에서 패치가 되었는지 여부에 대해선 발표 자료만으로는 알기 어렵네요.
그리고 오늘의 보너스!
Stefan Esser 에게 8번째 취약점이 PHP 6.0 snapshot 에서도 취약하다고 알려준 바 있는데, 8번째 취약점 발표 자료에 재미있는 내용을 추가했네요. 한국분들이라면 좋아하실 듯... (잘 안보이시는 분들은 UTF-8 로 보셔야 제대로 보입니다)



덧글
wafe 2007/03/05 12:21 # 삭제 답글
오오 "감사합니다" 멋지네요. ^^저도 감사합니다. 이곳에서 좋은 정보도 얻고 정신도 차리고 있습니다.
aromi 2007/03/05 13:10 # 삭제 답글
오픈소스의 장점을 설명하면서 아파치 웹서버가 릴리즈한지 2시간만에 버그를 발견하고 즉시 패치했다는 예를 들곤 하는데, PHP팀이 오픈소스의 장점을 말아먹지 않기 위해 정신차려야 할 것 같습니다.저는 몇년 전에는 PHP로 개발했었는데 3~4 버전 사이에 혼란이 너무 심해서 결국 포기하고 타 언어로 갈아탔습니다. 정식 릴리즈가 컴파일이 안되서 며칠 삽질하다 CVS에서 받아 올렸던 기억이 새삼스럽게 떠오릅니다. 며칠 허비한 시간이 너무 아까워 테스트도 제대로 안하고 릴리즈하냐라고 투덜댔는데 사실이었나 봅니다.
헐랭이 2007/03/05 15:40 # 답글
wafe// Stefan Esser 가 한글을 배우기 때문인 듯 해요. 제가 보낸 메일에 답장이 한글로 왔더군요. 약간 서툰 한글이었지만 의사소통에 전혀 문제가 없었습니다. 저도 영어나 독어를 그 정도로 잘했으면 좋겠네요. 독일 컴퓨터 잡지 C't 를 술술 읽고 대화도 어느 정도 되는 수준이면 좋겠는데... 왜 C't 냐구요? 해킹 관련한 유용한 정보가 많더라구요. ㅋㅋ... 역시 기술하면 독일! 하는 생각이 들더군요.aromi // 들러주셔서 감사해요. 이번 일을 계기로 PHP 프로젝트도 보안에 더욱 신경쓰는 모습을 보여주리라 기대하고 있습니다.