🔍 CVE-2026-33671

7.5
CVSS Score
HIGH
2026-03-26
2026-06-17 10:37
✅ 완료

🇰🇷 한글 설명

Picomatch 라이브러리의 특정 버전에서 정규 표현식 서비스 거부(ReDoS) 취약점이 발견되었습니다. 공격자가 조작된 extglob 패턴을 입력할 경우, 정규 표현식의 치명적인 백트래킹으로 인해 CPU 사용량이 급증하고 Node.js 이벤트 루프가 차단될 수 있습니다.

💡 쉬운 설명

특수하게 만들어진 복잡한 문자를 입력하면 컴퓨터가 이를 처리하느라 과부하가 걸려 멈추게 되는 문제입니다. 이를 통해 서비스가 중단될 수 있으므로 주의가 필요합니다.

🇺🇸 원문 (English)

Picomatch is a glob matcher written JavaScript. Versions prior to 4.0.4, 3.0.2, and 2.3.2 are vulnerable to Regular Expression Denial of Service (ReDoS) when processing crafted extglob patterns. Certain patterns using extglob quantifiers such as `+()` and `*()`, especially when combined with overlapping alternatives or nested extglobs, are compiled into regular expressions that can exhibit catastrophic backtracking on non-matching input. Applications are impacted when they allow untrusted users to supply glob patterns that are passed to `picomatch` for compilation or matching. In those cases, an attacker can cause excessive CPU consumption and block the Node.js event loop, resulting in a denial of service. Applications that only use trusted, developer-controlled glob patterns are much less likely to be exposed in a security-relevant way. This issue is fixed in picomatch 4.0.4, 3.0.2 and 2.3.2. Users should upgrade to one of these versions or later, depending on their supported release line. If upgrading is not immediately possible, avoid passing untrusted glob patterns to `picomatch`. Possible mitigations include disabling extglob support for untrusted patterns by using `noextglob: true`, rejecting or sanitizing patterns containing nested extglobs or extglob quantifiers such as `+()` and `*()`, enforcing strict allowlists for accepted pattern syntax, running matching in an isolated worker or separate process with time and resource limits, and applying application-level request throttling and input validation for any endpoint that accepts glob patterns.

📍 영향받는 시스템

picomatch 4.0.4, 3.0.2, 2.3.2 미만 버전

⚔️ 공격 벡터

신뢰할 수 없는 사용자가 조작된 extglob 패턴(예: +(), *() 포함)을 입력하여 라이브러리에 전달

🛡️ 대응 방법

picomatch를 4.0.4, 3.0.2 또는 2.3.2 이상의 버전으로 업그레이드하거나, noextglob: true 옵션을 사용하여 extglob 지원을 비활성화하십시오.

🔧 검증 코드

출력된 버전이 취약한 버전 범위(4.0.4, 3.0.2, 2.3.2 미만)에 해당하는지 확인하십시오.

Shell / Script
npm list picomatch | grep picomatch

📊 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