26일차 MOPB 취약점이 발표되었습니다. 오늘 발표된 취약점은 조금 억지스러운 면이 있군요.

( 26 일차 취약점 리스트 )
33번째 취약점은 mail() 함수의 취약점입니다. mail() 함수는 입력받은 문자열을 ASCIIZ 문자열 (끝이 NULL 로 끝나는 문자열)로 다루는데, 이를 이용해 메일 내용을 개발자가 의도했던 내용과 다른 내용으로 바꿀 수 있는 취약점입니다.
원문의 예제를 보시면 이해가 더 빠르실텐데요.
코드를 보시면 \0 이후의 문자열은 상대방에게 전달되지 않겠죠.
일반적인 메일 발송의 경우 이 취약점을 공격해도 해커 입장에서 별 이득이 없습니다. 그러나 고객을 대상으로 보내는 대량 메일 발송의 경우 자사가 미리 준비해둔 메일 내용이 아닌, 다른 메일 내용이 고객에게 뿌려질 수 있다는 문제가 있습니다. 물론 그 전에 해커가 메일을 발송할 수 있는 권한을 획득해야 하겠죠. 그러나 그런 권한을 획득했다면 굳이 이 취약점을 이용할 필요가 없죠.
34번째 취약점은 mail() 함수의 보안 기능을 우회할 수 있는 취약점입니다. mail() 함수는 메일 제목(Subject)과 수신자(To) 헤더에 Carriage Return, Line Feed 등의 특수 문자를 집어넣으면 공백문자열로 치환해주고 있습니다. 메일 헤더를 조작하지 못하도록 하기 위한 보안 기능이죠.
예를 들어 누군가가
http://www.example.com/mail_send.php?subject=Test&to=a@example.com\r\nbcc=b@example.com 같은 형태로 Bcc 헤더를 추가해 스팸을 보낼 수도 있으니까요.
그러나 이 보안 기능이 문자열을 처리하는 과정에 헛점이 있어 아래와 같이 하면 메일 헤더를 조작할 수 있다고 합니다.
위의 예제를 보시면 Another-Header 를 추가하고 있는 것을 보실 수 있습니다.
위의 2 가지 취약점은 PHP 4.4.6 최신 버전을 포함한 하위버전, PHP 5.2.1 최신 버전을 포함한 하위버전이 해당된다고 합니다.
PHP 로 개발된 대량 메일 발송 프로그램을 보유하신 분들은 34 번째 취약점에 해당될 수 있으니, 기존의 메일 발송 통계를 확인해보시고, 주기적으로 현황을 모니터링하시는 것이 좋겠습니다.

( 26 일차 취약점 리스트 )
33번째 취약점은 mail() 함수의 취약점입니다. mail() 함수는 입력받은 문자열을 ASCIIZ 문자열 (끝이 NULL 로 끝나는 문자열)로 다루는데, 이를 이용해 메일 내용을 개발자가 의도했던 내용과 다른 내용으로 바꿀 수 있는 취약점입니다.
원문의 예제를 보시면 이해가 더 빠르실텐데요.
<?php
mail("test@domain(dot)com", "Truncation Test", "You will see this message\0but not this");
?>
코드를 보시면 \0 이후의 문자열은 상대방에게 전달되지 않겠죠.
일반적인 메일 발송의 경우 이 취약점을 공격해도 해커 입장에서 별 이득이 없습니다. 그러나 고객을 대상으로 보내는 대량 메일 발송의 경우 자사가 미리 준비해둔 메일 내용이 아닌, 다른 메일 내용이 고객에게 뿌려질 수 있다는 문제가 있습니다. 물론 그 전에 해커가 메일을 발송할 수 있는 권한을 획득해야 하겠죠. 그러나 그런 권한을 획득했다면 굳이 이 취약점을 이용할 필요가 없죠.
34번째 취약점은 mail() 함수의 보안 기능을 우회할 수 있는 취약점입니다. mail() 함수는 메일 제목(Subject)과 수신자(To) 헤더에 Carriage Return, Line Feed 등의 특수 문자를 집어넣으면 공백문자열로 치환해주고 있습니다. 메일 헤더를 조작하지 못하도록 하기 위한 보안 기능이죠.
예를 들어 누군가가
http://www.example.com/mail_send.php?subject=Test&to=a@example.com\r\nbcc=b@example.com 같은 형태로 Bcc 헤더를 추가해 스팸을 보낼 수도 있으니까요.
그러나 이 보안 기능이 문자열을 처리하는 과정에 헛점이 있어 아래와 같이 하면 메일 헤더를 조작할 수 있다고 합니다.
<?php
mail("test@domain(dot)com", "Test\r\n \nAnother-Header: Blub", "Message");
?>
위의 예제를 보시면 Another-Header 를 추가하고 있는 것을 보실 수 있습니다.
위의 2 가지 취약점은 PHP 4.4.6 최신 버전을 포함한 하위버전, PHP 5.2.1 최신 버전을 포함한 하위버전이 해당된다고 합니다.
PHP 로 개발된 대량 메일 발송 프로그램을 보유하신 분들은 34 번째 취약점에 해당될 수 있으니, 기존의 메일 발송 통계를 확인해보시고, 주기적으로 현황을 모니터링하시는 것이 좋겠습니다.

덧글