🔍 CVE-2026-45617

7.5
CVSS Score
HIGH
2026-06-17
2026-10-25 23:10
✅ 완료

🇰🇷 한글 설명

LiquidJS 10.25.7 이하 버전의 strip_html 필터에서 정규 표현식의 결함으로 인해 ReDoS(정규 표현식 서비스 거부) 취약점이 발생합니다. 공격자가 특수하게 조작된 입력을 전송할 경우 V8 엔진의 백트래킹으로 인해 Node.js 이벤트 루프가 차단되고 CPU 사용량이 급증하여 서비스가 중단될 수 있습니다.

💡 쉬운 설명

특정한 규칙을 가진 긴 문장을 입력하면 컴퓨터가 이를 처리하느라 과도하게 계산을 반복하게 만드는 공격입니다. 이로 인해 웹사이트가 응답을 멈추거나 서버가 마비될 수 있습니다.

🇺🇸 원문 (English)

LiquidJS is a Shopify/GitHub Pages compatible template engine written in pure JavaScript. In versions 10.25.7 and below, the built-in strip_html filter uses a regex containing four flawed lazy-quantified alternatives, leading to ReDoS via quadratic backtracking. When the input contains many <script, <style, or <!-- opener tokens without matching closers, the V8 regex engine performs O(N²) backtracking, blocking the Node.js event loop. A single ~350 KB request ('<script'.repeat(50000)) stalls the process for ~10 seconds; cost grows quadratically with input size. The default memoryLimit: Infinity does not bound regex CPU, and even when configured strip_html only charges str.length to the limit — the regex itself runs unbounded. A single unauthenticated request containing crafted untrusted input can cause severe event-loop blocking and CPU amplification that saturates Node.js workers while bypassing memoryLimit protections. This issue has been fixed in version 10.26.0.

📍 영향받는 시스템

LiquidJS 10.25.7 및 그 이하 모든 버전

⚔️ 공격 벡터

인증되지 않은 사용자가 조작된 HTML 태그(예: <script 반복)가 포함된 요청을 전송하여 서버의 CPU를 점유함

🛡️ 대응 방법

LiquidJS를 취약점이 해결된 버전인 10.26.0 이상으로 업데이트하십시오.

🔧 검증 코드

출력된 버전 번호가 10.26.0보다 낮으면 취약한 상태이며, 10.26.0 이상이면 안전합니다.

Shell / Script
npm list liquidjs | grep -E 'liquidjs@([0-9]{1,2}\.[0-9]{2}\.[0-9]{1,2})'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Node.js