🔍 CVE-2026-44645

6.5
CVSS Score
MEDIUM
2026-06-17
2026-06-22 18:27
✅ 완료

🇰🇷 한글 설명

LiquidJS 10.25.7 이하 버전에서 renderLimit 옵션이 빈 본문을 가진 {% for %} 또는 {% tablerow %} 태그에 의해 우회되는 취약점이 발견되었습니다. 공격자는 이를 통해 설정된 시간 제한을 무시하고 반복문을 실행하여 Node.js 이벤트 루프를 점유함으로써 서비스 거부(DoS) 공격을 수행할 수 있습니다.

💡 쉬운 설명

템플릿 엔진의 실행 시간 제한 기능이 특정 조건에서 작동하지 않는 문제입니다. 공격자가 특수하게 제작된 코드를 보내면 서버가 응답하지 못하게 만들어 서비스를 마비시킬 수 있습니다.

🇺🇸 원문 (English)

LiquidJS is a Shopify/GitHub Pages compatible template engine written in pure JavaScript. In versions 10.25.7 and below, the renderLimit option can be fully bypassed by a {% for %} (or {% tablerow %}) tag whose body is empty. The renderLimit option is documented in docs/source/tutorials/dos.md as the mechanism that "mitigates this by limiting the time consumed by each render() call." The per-iteration time check is reached only when the body contains at least one template node, so a template such as {%- for i in (1..N) -%}{%- endfor -%} iterates the full collection without ever consulting renderLimit. With a configured renderLimit of 50 ms, a single parseAndRenderSync call has been observed to consume 2.26 seconds (~45× over the limit) and scales linearly with N up to memoryLimit, allowing a low-privileged template author to wedge an event-loop thread for an attacker-chosen duration. Deployments that rely on a finite renderLimit for DoS protection (common in multi-tenant template-authoring environments) can still be forced by a single crafted template to monopolize a Node.js event-loop worker for attacker-controlled time, potentially stalling in-flight requests, with availability impact only. This issue has been fixed in version 10.26.0.

📍 영향받는 시스템

LiquidJS 10.25.7 및 그 이하 모든 버전

⚔️ 공격 벡터

내용이 비어 있는 반복문 태그({%- for i in (1..N) -%}{%- endfor -%})를 포함한 템플릿을 전송하여 이벤트 루프 점유

🛡️ 대응 방법

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:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Node.js