
# 보안 권고: CVE-2026-50787 e-SIC Livre CAPTCHA 생성의 통제되지 않은 리소스 소비 취약점을 상세히 설명하는 보안 권고로, 과도한 크기의 매개변수를 통해 원격 서비스 거부(DoS)를 유발할 수 있습니다.
e-SIC Livre (esiclivre) 의 CAPTCHA 생성 구성 요소에 리소스 소비 취약점이 존재합니다.
취약한 엔드포인트는 CAPTCHA 이미지 크기, 글꼴 크기 및 렌더링할 문자 수를 정의하는 사용자 제어 매개변수를 허용합니다. 이러한 값은 적절한 범위 검사 없이 사용됩니다.
인증되지 않은 원격 공격자는 과도하게 큰 값을 제공하여 이미지 생성 및 텍스트 렌더링 중에 애플리케이션이 상당한 메모리와 CPU 리소스를 소비하도록 할 수 있습니다. 이로 인해 애플리케이션 시간 초과, HTTP 5xx 응답, 작업자 고갈 또는 서비스 거부가 발생할 수 있습니다.
0a72b4c9ab89244ec3bd3d7fa0b765850cc9afd7 커밋까지 포함restrito/inc/captcha.php엔드포인트는 다음 GET 매개변수를 허용합니다:
l - 이미지 너비a - 이미지 높이tf - 글꼴 크기ql - CAPTCHA 문자 수이러한 매개변수는 사용자 입력에서 직접 가져오며 적절한 상한값 없이 이미지 처리 작업에 사용됩니다.
취약한 코드는 $_GET에서 직접 값을 읽습니다:
$largura = $_GET["l"];
$altura = $_GET["a"];
$tamanho_fonte = $_GET["tf"];
$quantidade_letras = $_GET["ql"];
captcha($largura,$altura,$tamanho_fonte,$quantidade_letras);
제공된 너비와 높이는 이후 GD 이미지 생성 함수에 전달됩니다:
$imagem = imagecreate($largura,$altura);
사용자 제어 ql 값은 CAPTCHA 문자 렌더링 시 수행되는 반복 횟수도 결정합니다:
for($i = 1; $i <= $quantidade_letras; $i++){
imagettftext(
$imagem,
$tamanho_fonte,
rand(-25,25),
($tamanho_fonte*$i),
($tamanho_fonte + 10),
$branco,
$fonte,
substr($palavra,($i-1),1)
);
}
이러한 값이 합리적인 한도로 제한되지 않기 때문에 특수하게 제작된 요청은 애플리케이션이 과도한 이미지 할당 및 텍스트 렌더링 작업을 수행하도록 강제할 수 있습니다.
취약한 CAPTCHA 엔드포인트는 원격으로 접근 가능합니다.
공격자는 이미지 크기, 글꼴 크기 또는 문자 수에 비정상적으로 큰 값을 포함하는 요청을 제출할 수 있습니다. 그러면 서버는 PHP GD 작업을 사용하여 해당 값을 처리하려고 시도합니다.
이로 인해 다음이 발생할 수 있습니다:
취약한 기능에 도달하는 데 인증이 필요하지 않습니다.
성공적인 악용은 통제되지 않은 리소스 소비를 통한 서비스 거부(DoS) 로 이어질 수 있습니다.
영향은 PHP 구성, 사용 가능한 시스템 리소스, 웹 서버 구성 및 동시 요청 수에 따라 달라집니다.
이 취약점은 리소스 집약적인 GD 이미지 작업에 전달되기 전에 사용자 제어 매개변수에 대한 검증 부족과 상한값 부재로 인해 발생합니다.
애플리케이션은 처리 전에 모든 CAPTCHA 생성 매개변수를 엄격하게 검증해야 합니다.
권장 조치는 다음과 같습니다:
방어적 제한의 예로는 애플리케이션의 의도된 인터페이스에 따라 너비, 높이, 글꼴 크기 및 CAPTCHA 길이에 대한 합리적인 최대값이 포함될 수 있습니다.
CVE가 요청되고 할당된 시점에는 업스트림 수정 사항이 없었습니다.
영향을 받는 버전을 배포하는 사용자는 업스트림 수정 사항이 제공될 때까지 로컬 검증 및 리소스 제한을 적용해야 합니다.
Bryan Romero 가 발견 및 보고 https://github.com/brynax
이 권고는 취약점, 기술적 근본 원인 및 방어 및 수정 목적을 위한 권장 완화 조치를 문서화합니다. 악용을 용이하게 할 수 있는 자동화된 서비스 거부 도구, 대규모 악용 방법 및 운영 지침은 의도적으로 생략합니다.