🇰🇷 한글 설명
오픈소스 헤드리스 커머스 플랫폼인 Vendure의 3.6.5 미만 버전에서 발생하는 취약점입니다. 인증되지 않은 공격자가 Shop GraphQL API의 StringOperators.regex를 통해 정규표현식 백트래킹을 유발하여 서비스 거부(DoS) 상태를 만들 수 있습니다. 이 문제는 Node.js 이벤트 루프를 차단하여 스토어프런트와 관리자 API를 모두 중단시킬 수 있습니다.
💡 쉬운 설명
악의적인 정규표현식 패턴을 입력하여 서버의 계산 능력을 마비시키는 공격입니다. 이 공격을 받으면 쇼핑몰 사이트가 응답하지 않거나 접속이 불가능해질 수 있습니다.
🇺🇸 원문 (English)
Vendure is an open-source headless commerce platform. Prior to 3.6.5, the public Shop GraphQL API allows an unauthenticated caller to supply a catastrophically backtracking pattern through StringOperators.regex. packages/core/src/service/helpers/list-query-builder/parse-filter-params.ts passes the raw pattern to the REGEXP implementation registered by packages/core/src/service/helpers/list-query-builder/list-query-builder.ts, and better-sqlite3 and sqljs evaluate it synchronously in the Node.js event loop. ShopProductsResolver.products is publicly reachable, so one nested-quantifier pattern can block request processing and make the storefront and admin API unavailable, while repeated requests can sustain denial of service. PostgreSQL and MySQL or MariaDB deployments do not execute this regular expression in the Node.js event loop. This issue is fixed in version 3.6.5.
📍 영향받는 시스템
Vendure version < 3.6.5 (SQLite/sqljs 사용 환경)
⚔️ 공격 벡터
인증되지 않은 사용자가 Shop GraphQL API의 regex 필터에 복잡한 정규표현식 패턴을 전송
🛡️ 대응 방법
Vendure를 최신 보안 패치가 적용된 버전인 3.6.5 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 3.6.5 미만인 경우 해당 취약점에 노출된 상태입니다.
npm list @vendure/core | grep -E '@vendure/core@([0-3]\.[0-5]\.[0-4]|\d+\.\d+\.\d+)'