휴~ Stefan Esser 가 오늘 발표된 2 개의 취약점 외에 추가로 2 개의 취약점을 더 발표했습니다. 발표 시기나 발표 분량이 불규칙해서 쫓아가기 힘들군요. 날짜 단위로 구분하기도 애매하고... 이제 Month of PHP Bugs 에서 발표된 취약점은 총 9 개가 되었습니다.
추가 발표된 취약점의 리스트는 아래 그림과 같습니다.

( 추가로 발표된 취약점 리스트 )
추가 발표된 취약점의 특징은 PHP 보안팀의 무능함을 보여주려고 한다는 것입니다. Mr. Esser 입장에서는 두 취약점이 PHP 보안팀이 밥값을 못해서 벌어진 일이라고 보는 거죠.
8 번째 취약점은 phpinfo() 함수의 취약점으로 예전에 발표된 취약점이 다시 불거져 나온 것입니다. 이럴 때 보안 전문가들은 '쟤네들 소스 관리 체계나 변경 관리 체계도 없나봐' 라고 얘기하곤 하는데, 저 같은 경우 상용 유닉스에서 자주 본 모습이라 새삼스러울 것도 없습니다.
phpinfo() 함수가 사용자 입력을 그대로 결과 화면에 출력하기 때문에 XSS 취약점에 노출되어 있다고 발표된게 좀 됐죠? 해당 취약점을 고친 후에 이런 저런 기능이 추가되고 하다보니, 다시 동일한 취약점이 나오게 되었다네요. PHP 4.4.3 부터 4.4.6 최신 버전까지 모두 이 취약점에 노출되어 있다니 아쉽습니다.
해당 취약점에 대해서는 테스트 코드와 수동 테스트 방법이 제공되니까 업무에 참고하시길 바라고, 운영 서버에는 phpinfo() 가 포함된 소스를 find 명령어로 다 뒤져서 제거해주시는 것이 좋겠습니다. 아시다시피 phpinfo() 는 시스템에 대해 너무나 상세한 정보를 해커에게 제공하니까 운영 서버에서 제거하는게 원칙입니다. 모의해킹 하다 보면 80 ~ 90 % 의 운영 서버가 phpinfo() 를 info.php 나 phpinfo.php, test.php 로 웹 서버 루트에 올려놓고 계시더군요. 뚫리기 딱 좋습니다.
9 번째 취약점은 PHP 의 CVS 버전이 가진 취약점입니다. 이 취약점은 PHP 보안팀 입장에선 결정타라고 볼 수 있는데요, 한마디로 '보안에 대해 깊이 있는 지식이 없는 사람들이 보안전문가인척 하면서 대충 소스 고쳐서 오히려 문제를 만들어냈다.' 라는 비난을 받기 딱 좋은거죠.
이 취약점은 PHP 프로젝트가 strncpy, sprintf 같은 취약하다고 알려진 함수들을 strlcpy, spprintf 같은 안전한 함수로 대체하는 와중에 불거져 나온 취약점입니다. 전체 로직에 대한 명확한 이해가 없이 함수를 1:1 로 대치시키니까 코드가 쪽나거나, 멀쩡하던 코드에 버퍼오버플로우 취약점이 생기는 거죠.
CVS 버전의 PHP 는 WDDX extension 에 버퍼오버플로우 취약점이 있다고 하니 주의하시는 게 좋겠습니다. 취약점 검증 도구(Proof of Concept)가 함께 제공되니까 Snapshot 버전 쓰시는 분들은 확인해보시는게 좋겠네요.
외국이나 한국이나 보안 전문가인 척하며 사기치고 다니는 사기꾼들이 진짜 보안 전문가들 속썩이는 건 마찬가지인가 봅니다. (이 부분은 오해의 여지가 있어 삭제합니다)
--- 추가 ---
8 번째 취약점에 대해 추가할 사항이 있습니다.
원래 Stefan Esser 가 발표한 내용에는 4.4.3 부터 4.4.6 이 취약하다고 적혀있는데, PHP 6.0 snapshot 버전에서 테스트한 결과 역시 취약한 것으로 확인되었습니다.
테스트 결과는 다음과 같습니다.

( PHP 6.0 snapshot 버전 확인 결과 )
무려 3 군데에서 사용자 입력값을 그대로 반환하는 군요.
PHP 6.0 snapshot 이 취약하다는 것은 얼마전 릴리즈된 PHP 5.2.1 도 역시 취약할 가능성이 매우 높다는 것입니다. 주의하시길 바랍니다.
추가 발표된 취약점의 리스트는 아래 그림과 같습니다.

( 추가로 발표된 취약점 리스트 )
추가 발표된 취약점의 특징은 PHP 보안팀의 무능함을 보여주려고 한다는 것입니다. Mr. Esser 입장에서는 두 취약점이 PHP 보안팀이 밥값을 못해서 벌어진 일이라고 보는 거죠.
8 번째 취약점은 phpinfo() 함수의 취약점으로 예전에 발표된 취약점이 다시 불거져 나온 것입니다. 이럴 때 보안 전문가들은 '쟤네들 소스 관리 체계나 변경 관리 체계도 없나봐' 라고 얘기하곤 하는데, 저 같은 경우 상용 유닉스에서 자주 본 모습이라 새삼스러울 것도 없습니다.
phpinfo() 함수가 사용자 입력을 그대로 결과 화면에 출력하기 때문에 XSS 취약점에 노출되어 있다고 발표된게 좀 됐죠? 해당 취약점을 고친 후에 이런 저런 기능이 추가되고 하다보니, 다시 동일한 취약점이 나오게 되었다네요. PHP 4.4.3 부터 4.4.6 최신 버전까지 모두 이 취약점에 노출되어 있다니 아쉽습니다.
해당 취약점에 대해서는 테스트 코드와 수동 테스트 방법이 제공되니까 업무에 참고하시길 바라고, 운영 서버에는 phpinfo() 가 포함된 소스를 find 명령어로 다 뒤져서 제거해주시는 것이 좋겠습니다. 아시다시피 phpinfo() 는 시스템에 대해 너무나 상세한 정보를 해커에게 제공하니까 운영 서버에서 제거하는게 원칙입니다. 모의해킹 하다 보면 80 ~ 90 % 의 운영 서버가 phpinfo() 를 info.php 나 phpinfo.php, test.php 로 웹 서버 루트에 올려놓고 계시더군요. 뚫리기 딱 좋습니다.
9 번째 취약점은 PHP 의 CVS 버전이 가진 취약점입니다. 이 취약점은 PHP 보안팀 입장에선 결정타라고 볼 수 있는데요, 한마디로 '보안에 대해 깊이 있는 지식이 없는 사람들이 보안전문가인척 하면서 대충 소스 고쳐서 오히려 문제를 만들어냈다.' 라는 비난을 받기 딱 좋은거죠.
이 취약점은 PHP 프로젝트가 strncpy, sprintf 같은 취약하다고 알려진 함수들을 strlcpy, spprintf 같은 안전한 함수로 대체하는 와중에 불거져 나온 취약점입니다. 전체 로직에 대한 명확한 이해가 없이 함수를 1:1 로 대치시키니까 코드가 쪽나거나, 멀쩡하던 코드에 버퍼오버플로우 취약점이 생기는 거죠.
CVS 버전의 PHP 는 WDDX extension 에 버퍼오버플로우 취약점이 있다고 하니 주의하시는 게 좋겠습니다. 취약점 검증 도구(Proof of Concept)가 함께 제공되니까 Snapshot 버전 쓰시는 분들은 확인해보시는게 좋겠네요.
--- 추가 ---
8 번째 취약점에 대해 추가할 사항이 있습니다.
원래 Stefan Esser 가 발표한 내용에는 4.4.3 부터 4.4.6 이 취약하다고 적혀있는데, PHP 6.0 snapshot 버전에서 테스트한 결과 역시 취약한 것으로 확인되었습니다.
테스트 결과는 다음과 같습니다.

( PHP 6.0 snapshot 버전 확인 결과 )
무려 3 군데에서 사용자 입력값을 그대로 반환하는 군요.
PHP 6.0 snapshot 이 취약하다는 것은 얼마전 릴리즈된 PHP 5.2.1 도 역시 취약할 가능성이 매우 높다는 것입니다. 주의하시길 바랍니다.
공유하기 버튼
|
|

덧글
... 뭐랄까. 생각만큼 그리 "PHP 최후의 날" 급의 강력한 버그는 없다는 느낌도 드네요. 제가 너무 강렬한 버그를 기대하는걸까요?
Please check the last screenshot. it's obvious that PHP 6.0 CVS snapshot is affected.
Other contents written in *korean* are the summary of the MOPB vulnerabilities day 3, 4.
I'm introducing the works of the MOPB to many korean nerds.
tenga un día agradable
그래서, 제 컴퓨터에다가 아파치+php+mysql 설치 하였고.
phpinfo화면이 나타나게 하고요
http://localhost/index.php 옆에다 ?a[]=<script>alert(/XSS/);</script>를 붙이고
실행을 했더니 안되는거에요..
'다른 사이트에서 해보면 되는건가?' 하는 생각이 들어서요
다른 사이트의 phpinfo 화면 켜고 그 주소 옆에다 ?a[]=<script>alert(/XSS/);</script>를 붙이고 실행하니 /xss/ 이런 창이 뜨더라고요
궁금한게 있는데요.. 제가 범죄를 저질른건가요? 저 이제 잡혀가나요?
잡혀간다는거 농담이지요?... ㅜㅜ