🇰🇷 한글 설명
LiquidJS 10.27.2 미만 버전에서 ownPropertyOnly 설정이 상속된 배열 인덱스를 일관되게 제한하지 못하는 취약점이 발견되었습니다. 공격자가 프로토타입 상태나 상속된 배열 인덱스 데이터를 조작할 수 있다면, 특정 필터나 메서드를 통해 원래 숨겨져야 할 값을 노출시킬 수 있습니다.
💡 쉬운 설명
템플릿 엔진이 특정 데이터를 숨기려고 시도하지만, 특수한 명령어나 필터를 사용하면 숨겨진 내부 정보가 밖으로 새어 나갈 수 있는 문제입니다. 이를 통해 공격자는 시스템의 민감한 정보를 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
LiquidJS is a Shopify / GitHub Pages compatible template engine in pure JavaScript. Prior to 10.27.2, enabling ownPropertyOnly does not consistently restrict inherited array indices because negative indexing, .first, .last, the first filter, the last filter, join, reverse, slice, compact, and for-loop iteration can read prototype-provided elements outside readJSProperty(). An attacker who can influence prototype state or inherited array-index data and cause templates to render affected operations can disclose values that ownPropertyOnly is expected to hide. Direct positive indexing and ordinary object prototype reads are blocked, but the alternate array paths remain affected. This issue is fixed in 10.27.2.
📍 영향받는 시스템
LiquidJS 10.27.2 미만 버전
⚔️ 공격 벡터
조작된 프로토타입 데이터나 특정 배열 메서드(.first, .last, slice 등)를 이용한 템플릿 렌더링 공격
🛡️ 대응 방법
LiquidJS를 최신 버전인 10.27.2 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 10.27.2 미만이면 취약한 상태이며, 10.27.2 이상이면 안전합니다.
npm list liquidjs | grep -E 'liquidjs@([0-9]+\.[0-9]+\.[0-9]+)'