CVE-2026-72923은 Microsoft.OpenApi.YamlReader와 Microsoft.OpenApi.Readers에서 YAML 앵커(anchor)와 별칭(alias)의 중첩 확장을 악용해 메모리를 과도하게 소모시키는 서비스 거부(DoS) 취약점입니다. 공개된 OpenAPI 문서 파싱 API에 신뢰할 수 없는 YAML을 전달하는 서비스라면, 단일 요청만으로 파싱 프로세스를 메모리 부족(OOM) 상태로 종료시킬 수 있어 가용성 관점의 점검이 필요합니다. CVE-2026-72923 기록에 따라 이 취약점은 GitHub_M이 부여한 공개(PUBLISHED) 상태의 CVE입니다.
개요

YAML 표준의 앵커와 별칭 기능을 이용해 작은 입력 문서가 내부적으로 지수적으로 확장되는 이른바 빌리언 러프스(billion laughs) 계열 공격입니다. 공급자 자문에 따르면, 중첩된 앵커와 별칭을 포함하는 YAML을 파싱하는 과정에서 확장에 상한이 없어 자원 소모가 통제되지 않고, 파싱 프로세스가 과도한 메모리를 할당하다가 OOM으로 종료됩니다.
문제는 공개(public) YAML 리더 API를 통한 OpenAPI 문서 파싱 경로에서 발생합니다. GitHub Advisory Database에서도 이 취약점이 공개 YAML 리더 API를 통한 OpenAPI 문서 파싱에 영향이 있으며 과도한 메모리 할당을 유발한다고 설명합니다. 따라서 사용자 제공 문서를 받아 파싱하는 웹 서비스가 주요 공격 경로이며, 파싱 프로세스의 비정상 종료(OOM)로 인한 서비스 거부와, OOM 종료가 프로세스 재시작으로 이어질 경우의 연쇄적인 서비스 불안정 가능성이 우려되는 구간입니다.
영향 범위
공급자 자문에 명시된 영향 버전은 다음과 같습니다.
- Microsoft.OpenApi.YamlReader: 2.0.0-preview.11 이상 2.12.0 미만
- Microsoft.OpenApi.YamlReader: 3.0.0 이상 3.10.0 미만
- Microsoft.OpenApi.Readers: 1.6.30 미만(1.X 전 버전 대상)
- 공개 YAML 리더 API로 신뢰할 수 없는 OpenAPI 문서를 파싱하는 .NET 애플리케이션·서비스
특정 패키지 버전을 사용하는 것 자체가 곧 공격 대상은 아닙니다. 핵심은 이 패키지로 외부 입력을 파싱하는지입니다. 워크플로나 파이프라인 등 신뢰된 내부 문서만 파싱하는 용도라면 실질 노출은 제한적일 수 있으나, 이는 배포 환경에 따라 달라지는 조건부 판단입니다.
기술적 분석
Microsoft.OpenApi.YamlReader 자문의 기술적 설명을 보면, 이 취약점은 중첩된 앵커와 별칭이 메모리를 과도하게 소모시켜 OOM 조건을 통해 프로세스를 종료시키는 구조입니다. 수정 방식도 확인됩니다. v3.10.0 릴리스 노트에는 "bound YAML anchor/alias expansion to prevent OOM (billion laughs)"라는 항목이 있어, 앵커·별칭 확장에 상한을 두어 OOM을 방지하는 방향으로 해결한 것을 알 수 있습니다.
현재 증거에는 야생에서의 실제 악용 사례나 공개 PoC가 확인되지 않았습니다. 다만 공개 API를 통한 낮은 악용 난이도(단일 악성 YAML 문서 전달)를 고려하면, 신뢰할 수 없는 입력을 파싱하는 인터넷 노출 서비스에서는 실제 악용 가능성을 배제하기 어렵다는 조건부 운영 판단이 합리적입니다. 이는 확인된 사실이 아니라 영향 범위 조건에 기반한 해석입니다.
한편 CVSS 점수, CVE 상세 설명 전문, CISA KEV 등재 여부는 현재 증거에서 확인되지 않아 심각도 판단의 근거가 부족합니다. 2.x 계열과 Readers 1.x의 개별 패치 릴리스 노트 원문도 현재 증거에 포함되지 않으며, 업그레이드 목표는 공급자 자문의 영향 범위 기준으로 정하는 수준에 머무릅니다.
대응 방안
대응은 점검부터 시작합니다.
- 먼저 조직 내 .NET 프로젝트에서 Microsoft.OpenApi.YamlReader와 Microsoft.OpenApi.Readers 패키지 사용 여부와 버전을 점검하세요(SBOM, 의존성 매니페스트, 패키지 레지스트리 검색 활용).
- 사용자가 제출한 OpenAPI/Swagger 문서를 서버 측에서 파싱하는 서비스를 우선 식별하고, 이 경로가 취약 버전 위에서 동작하는지 확인하세요.
- 외부 입력을 파싱하는 경로가 취약 버전을 사용한다면, 패치 전까지 신뢰할 수 없는 YAML 문서의 처리를 제한하거나 입력 크기·복잡도 제한, 파싱 격리(별도 프로세스·컨테이너) 등 완화 조치를 검토하세요. 이 완화 조치는 확인된 사실이 아니라 파싱 경로가 공격 진입점이라는 근거에서 도출한 운영 권고입니다.
영구적인 해결책은 업그레이드입니다.
- Microsoft.OpenApi.YamlReader 2.x는 2.12.0 이상으로, 3.x는 3.10.0 이상으로 업그레이드하세요.
- Microsoft.OpenApi.Readers 1.x는 1.6.30 이상으로 업그레이드하세요(공급자 권고 기준).
- 적용 후 앵커/별칭 확장 상한이 정상 동작하는지, 과도하게 중첩된 YAML 문서가 거부·제한되는지 확인하세요.
탐지 관점에서는 확인된 전용 시그니처가 없습니다. 운영 관점에서 프로세스 메모리 급증과 OOM 종료 이력, 특정 사용자·IP에서 반복 제출되는 작은 크기 YAML 문서, 문서 파싱 API 호출 직후의 프로세스 재시작 패턴 등 이상 징후를 모니터링하는 것이 실용적인 대안입니다. 다만 이는 취약점 동작 원리에 근거한 탐지 아이디어이며 확인된 IOC는 아닙니다.
참고자료
- CVE-2026-72923: Microsoft.OpenApi.YamlReader vulnerable to denial of service via YAML alias expansion
- Microsoft.OpenApi.YamlReader/Readers vulnerable to denial of service via YAML alias expansion (GHSA-7pxr-59rr-hqj2)
- GHSA-7pxr-59rr-hqj2: Microsoft.OpenApi.YamlReader vulnerable to denial of service via YAML alias expansion (CVE-2026-72923)
- Release v3.10.0 · microsoft/OpenAPI.NET
함께 읽으면 좋은 글
- pyLoad getUserData 권한 설정 변경 점검: Perms.ANY 데코레이터 제거와 실무 대응
- Vikunja WebSocket 세션 폐기 우회: 삭제된 세션 토큰의 실시간 알림 수신 조건 점검
- CVE-2026-108258: Shiny for Python 북마크 복원의 경로 순회 취약점, 1.6.4에서 수정
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!