애드센스4



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

죄송합니다. 제가 주말에 쉬느라 포스팅이 늦어졌습니다.
30일차 MOPB 취약점은 64비트 환경 사용자에게 해당되는 취약점입니다.



( 30일차 취약점 리스트 )


38번째 취약점은 'PHP 포맷스트링 취약점'이라는 새로운 장르의 취약점입니다. PHP printf() 류의 함수들은 64bit long 값을 내부적으로 32bit 로 처리하는데 이 과정에서 값이 잘리면서 양수값이 음수값이 될 수 있습니다(Assembly 레벨에서 bit 값을 생각해보시면 이해가 빠를 듯).

PHP 의 printf() 함수들은 내부적으로 php_formatted_print() 라는 함수와 php_sprintf_getnumber() 라는 함수를 사용하는데, php_sprintf_getnumber() 내부에서 사용하는 변수들이 int 값이어서 64bit long 값이 32bit int 로 잘리게 된다고 합니다.

이로 인해 양수값이 음수값으로 처리될 수 있으며, 결과적으로 프로그래머가 의도한 메모리 위치가 아닌 다른 위치를 액세스할 수 있게 됩니다.

또한 php_sprintf_appendstring() 함수에도 문제가 있다고 하는데, 이 함수를 몇 차례 호출해서 heap 상의 데이터를 수정해서 format string 공격이 가능하다고 하네요.

취약점 검증 도구(PoC)는 다음 주 경에 내놓겠다고 합니다. Hardend-PHP 팀이 한 달간 너무 강행군을 한 탓인 듯...

이 취약점은 PHP 4.4.5 미만, PHP 5.2.1 미만에 해당하는 64 bit 시스템에서 발생한다고 하니, 최신 버전으로 업데이트하신 분들이나, 32bit 시스템을 사용하시는 분들은 마음을 놓으셔도 될 듯 합니다.

트랙백

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

덧글

댓글 입력 영역


애드센스7