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

14일차 MOPB 취약점은 위험도가 높은 취약점으로 아래와 같습니다.


( 14일차 취약점 리스트 )



22번째 취약점은 session_regenerate_id() 함수의 double free 취약점입니다. double free 취약점이란 malloc() 계열 함수를 이용해 heap 에 할당한 영역을 free() 를 두 번 하게 되어서 발생하는 것인데, 프로그래머들은 일반적으로 free()의 내부 동작을 모르기 때문에 'free 를 두번 호출한게 왜 보안 취약점이 되나?' 라고 말하기 쉽습니다.

그러나 free()는 heap 매니저가 복잡한 동작을 수행하도록 하기 때문에,
1. 해커가 원하는 내용을 메모리 상에 덮어 쓸 수 있게 되거나
2. 임의의 명령어를 실행
하는 등의 문제가 발생합니다.

PHP 의 session_regenerate_id() 가 세션을 해제하고, 다시 생성하는 와중에 '메모리 부족' 등으로 인해 에러가 발생하면 코드 흐름 상에서 double free 취약점이 발생한다고 하는군요.

취약점 검증 도구(PoC)가 함께 제공되고 있는데, 해당 취약점을 이용해 로컬 서버의 4444 포트에 백도어를 여는 것을 보여주고 있습니다.

이 취약점은 PHP 5.x 최신 버전인 5.2.1 을 포함해 하위 버전이 모두 영향을 받는다고 합니다. 현재로선 다음 버전 릴리즈때 해당 취약점이 패치되어 있기를 바라는 수 외에는 뾰족한 수가 없는 듯...

다수의 사용자가 사용하는 호스팅 환경이라면 find 명령어를 이용해 악의적인 스크립트를 돌리는 사용자가 없는지 주기적으로 확인해주시는 것이 좋을 듯 합니다.

트랙백

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

덧글

덧글 입력 영역