🇰🇷 한글 설명
Perl의 HTML::FormFu 2.08 이하 버전에서 쿼리 스트링의 반복 횟수 제한 부재로 인해 리소스 고갈이 발생할 수 있습니다. 공격자가 조작된 반복 횟수를 전달하면 서버의 CPU와 메모리가 급격히 소모되어 서비스 거부 상태에 빠질 수 있습니다.
💡 쉬운 설명
웹사이트의 입력 양식을 조작하여 서버가 감당할 수 없는 엄청난 양의 작업을 강제로 수행하게 만드는 공격입니다. 이로 인해 서버의 컴퓨터 자원이 바닥나 웹사이트가 느려지거나 멈출 수 있습니다.
🇺🇸 원문 (English)
HTML::FormFu versions through 2.08 for Perl allow resource exhaustion via an unbounded repeat count from the query string in Repeatable elements.
When a Repeatable element has counter_name set, its process method reads the repeat count from the named query string parameter, checks only that it is a positive integer, and passes it to repeat, which deep-clones the element's child subtree once per iteration. Nothing caps the value, and no attribute lets an application impose a limit.
The count is read on every request, before the form decides whether it was submitted, so a plain GET reaches the clone loop with no credentials, no session and no request body. Nesting multiplies: a Repeatable inside a Repeatable takes a counter at each level, so an outer and an inner value of 100 build 10,000 clones.
Once the form is submitted, each cloned field's constraints scan the whole element tree in _find_field_value, so cost grows faster than linearly with the count. A single request exhausts memory and CPU.
The latest release on CPAN is 2.07, from 2018. Version 2.08 exists only in the git repository.
📍 영향받는 시스템
HTML::FormFu versions through 2.08 (Perl)
⚔️ 공격 벡터
인증이 필요 없는 GET 요청을 통해 쿼리 스트링에 조작된 반복 횟수(counter_name)를 전달
🛡️ 대응 방법
HTML::FormFu를 최신 버전으로 업데이트하거나, 입력값에 대한 반복 횟수 제한 로직을 애플리케이션 레벨에서 구현
🔧 검증 코드
출력된 버전 번호가 2.08 이하이면 해당 취약점에 노출된 상태입니다.
perl -MHTML::FormFu -e 'print $HTML::FormFu::VERSION . "\n"'