2009-05-06 6 views
3

내 호스팅 회사는 Apache/HTTP POST와 함께 CGI-Bin Perl 스크립트와 함께 사용할 때 버퍼 오버 플로우/리소스 문제를 일으키는 적절한 양의 가비지 바이트로 HTML 양식 텍스트 입력 필드를 채울 수 있다고 말합니다 (예 : NMS FormMail).Perl CGI 프로그램은 HTML 문의 양식에 버퍼 오버 플로우 또는 스크립트 취약점이 있습니까?

그들은 사이트를 손상시킬 수있는 임의의 스크립트 (입력 필드 텍스트의 일부로 저장 됨)가 서버에서 실행될 수있는 지점에서 코어 덤프가 발생한다고 말합니다. 그들은 이것이 Apache/Perl 설정 —에서 게시 된 필드의 문자 수를 제한함으로써이를 방지하기 위해 Perl 스크립트에 따라 보호된다는 것을 의미하지 않는다고 말합니다. 그러나 스크립트가 필드 크기를 제한하기 전에 코어 덤프가 발생할 수있는 것처럼 보입니다.

이 유형의 문의 양식 및 방법은 수천 개의 사이트에서 널리 사용되고 있으므로 본인이 말하는 것이 사실인지 궁금합니다. 보안 전문가가 나와 계신가요 —이 사실입니까? 나는 또한 같은 일이 PHP 스크립트로 일어날 수 있는지 궁금해. 안전한 사이트 문의 스크립트/방법에 대해 무엇을 권하고 싶습니까?

답변

2

버퍼 오버 플로우에 대해 잘 모르겠지만 어쨌든 POST 크기를 제한하지 않아도됩니다. 스크립트 상단에 다음을 추가하십시오.

use CGI qw/:standard/; 
$CGI::POST_MAX=1024 * 100; # max 100K posts 
$CGI::DISABLE_UPLOADS = 1; # no uploads 
1

특정 취약점에 대한 참조를 사용자에게 제공하도록 요청하십시오. 특수하게 조작 된 POST 요청으로 인해 버퍼 오버 플로우가 발생할 수있는 Apache 버전이있을 것이라고 확신하지만 NMS FormMail에만 국한되지는 않습니다.

0

Formail은 과거에 그러한 취약성이 있었기 때문에 귀하의 ISP가이를 설명하기 위해 사용하고 있다고 생각합니다. 펄 스크립트에서의 잘못된 습관은 그러한 비애로 이어질 수 있습니다.

가능한 경우 perl 스크립트가 모든 사용자 입력을 확인하도록하는 것이 좋습니다. 그렇지 않으면 신뢰할 수있는 스크립트 만 사용하고 업데이트 된 스크립트를 계속 업데이트하십시오.

+0

'NMS FormMail'ne 'FormMail'from Matt scrpts –

1

당신은 확실히 당신의 호스팅 회사의 구체적인 내용을 문의해야합니다. 거기에 많은 관련이없는 진술이 있습니다.

"버퍼 오버플로"와 "자원 문제"는 완전히 다른 것입니다. 버퍼 오버 플로우는 perl이나 mod_perl 또는 httpd 자체를 크래시 할 것을 암시합니다. 이 경우 이러한 구성 요소 중 하나에 버그가 있으며 문제의 버그를 참조하고 보안 업데이트를 적용 할시기에 대한 일정을 제공해야합니다. 이러한 버그는 확실히 Bugtraq을 만들 것입니다.

반면 자원 문제는 완전히 다른 것입니다. POST에서 많은 메가 바이트를 보내면 임의의 양의 메모리를 먹을 수 있습니다. 이는 httpd.conf에 LimitRequestBody 지정 문을 구성하여 해결할 수 있습니다. 기본값은 무제한입니다. 이것은 호스팅 제공 업체가 설정해야합니다.

그들은 코어 덤프가되는 (입력 필드 텍스트의 일부로 저장) 임의의 스크립트 사이트를 손상시킬 수있는 서버에서 실행할 수있는 포인트가 발생 말한다. 그들은 이것이 Apache/Perl 구성에서 보호 할 수있는 것이 아니라 게시 된 필드의 문자 수를 제한함으로써이를 방지하는 Perl 스크립트에 달려 있다고 말합니다. 그러나 스크립트가 필드 크기를 제한하기 전에 코어 덤프가 발생할 수있는 것처럼 보입니다. 이 아파치 (또는 mod_perl)에서 코어 덤프를 만드는 경우

다시, 그것은 아파치 (또는 mod_perl)의 버그를 나타낸다.Perl의 동적 인 메모리와 가비지 수집 된 메모리 관리는 원칙적으로 버퍼 오버 플로우 나 나쁜 포인터의 영향을받지 않습니다. 이것은 perl 자체의 버그가 이것을 일으킬 수 없다는 것을 말하는 것이 아니라, perl 언어 자체가 코어 덤프를 이런 방식으로 야기하는 데 필요한 언어 기능을 가지고 있지 않다는 것입니다.

스크립트가 데이터에 액세스 할 때까지는 여기에 설명 된 것을 방지하기에는 너무 이르다. 물론 스크립트에는 자체적 인 보안 문제가 있으며 perl 스크립트를 속여 임의의 명령을 실행하는 많은 방법이 있습니다. 여기에 설명 된 방식으로 임의의 메모리 위치로 점프 할 수있는 방법은 많지 않습니다.