CVE-2026-33532 in yaml
요약
\~에 의해 VulDB • 2026. 06. 17.
`yaml`은 JavaScript용 YAML 파서 및 직렬화 라이브러리입니다. 버전 1.x 브랜치에서 1.10.3 미만 또는 2.x 브랜치에서 2.8.3 미만의 `yaml` 버전을 사용하여 YAML 문서를 구문 분석하면 스택 오버플로(stack overflow)로 인해 RangeError가 발생할 수 있습니다. 노드 해결(resolution)/구성(composition) 단계는 깊이 제한 없이 재귀 함수 호출을 사용합니다. 파싱할 YAML 데이터를 제공할 수 있는 공격자는 작은 페이로드(~2–10 KB)를 사용하여 `RangeError: Maximum call stack size exceeded`를 트리거할 수 있습니다. 이 RangeError는 YAMLParseError가 아니므로 YAML 관련 오류만 포착하는 애플리케이션에서는 예기치 않은 예외 유형에 직면하게 됩니다. 호스트 애플리케이션의 예외 처리 방식에 따라 요청이 실패하거나 Node.js 프로세스가 종료될 수 있습니다. 흐름 시퀀스(flow sequences)는 최소한의 바이트(레벨당 2바이트: `[`와 `]` 각 하나)로 깊은 중첩을 허용합니다. 기본 Node.js 스택에서는 약 1,000–5,000 레벨의 중첩(입력 크기 2–10 KB)이 호출 스택(call stack)을 고갈시킵니다. 정확한 임계값은 환경에 따라 다릅니다(Node.js 버전, 스택 크기, 호출 시점의 호출 스택 깊이). 참고: 라이브러리의 `Parser`(CST 단계)는 스택 기반 반복(iterative) 접근 방식을 사용하므로 영향을 받지 않습니다. 실제 호출 스택 재귀(recursion)를 사용하는 것은 구성/해결(compose/resolve) 단계뿐입니다. 세 가지 공개 파싱 API 모두 영향을 받습니다: `YAML.parse()`, `YAML.parseDocument()`, 그리고 `YAML.parseAllDocuments()`. 버전 1.10.3 및 2.8.3에는 패치가 포함되어 있습니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.