🇰🇷 한글 설명
OpenTelemetry.Resources.Azure의 AzureVmMetaDataRequestor 클래스가 Azure VM 메타데이터 서비스 응답을 크기 제한 없이 메모리에 로드하여, 공격자가 임의로 큰 응답을 반환할 경우 힙 할당이 제한 없이 증가합니다. 이로 인해 메모리 부하, 가비지 컬렉션 정지 또는 프로세스 OOM 종료 발생 가능. 버전 1.15.1-beta.1에서 응답 스트리밍 처리 및 4 MiB 크기 제한으로 해결됨.
💡 쉬운 설명
Azure 설정 정보를 가져오는 .NET 라이브러리가 받은 데이터 크기를 확인하지 않아, 공격자가 초대형 데이터를 보내면 프로그램의 메모리가 고갈되어 멈춥니다. 라이브러리를 최신 버전으로 업데이트하면 해결됩니다.
🇺🇸 원문 (English)
OpenTelemetry.Resources.Azure is the .NET resource detector for Azure environments. In versions 1.15.0-beta.1 and earlier, the AzureVmMetaDataRequestor class makes HTTP requests to the Azure VM instance metadata service and reads the response body into memory without any size limit. An attacker who controls the configured endpoint, or who can intercept traffic to it via a man-in-the-middle attack, can return an arbitrarily large response body. This causes unbounded heap allocation in the consuming process, leading to high transient memory pressure, garbage-collection stalls, or an OutOfMemoryException that terminates the process. As a workaround, disable the Azure VM resource detector or use network-level controls such as firewall rules, mTLS, or a service mesh to prevent man-in-the-middle attacks on the Azure VM instance metadata endpoint. This issue is fixed in version 1.15.1-beta.1, which streams responses rather than buffering them entirely in memory and ignores responses larger than 4 MiB.
📍 영향받는 시스템
OpenTelemetry.Resources.Azure 버전 1.15.0-beta.1 이하
⚔️ 공격 벡터
Azure VM 메타데이터 엔드포인트 제어 또는 중간자 공격으로 임의로 큰 HTTP 응답 반환
🛡️ 대응 방법
버전 1.15.1-beta.1 이상으로 업그레이드하거나 방화벽/mTLS로 메타데이터 엔드포인트 보호
🔧 검증 코드
설치된 OpenTelemetry.Resources.Azure 버전이 1.15.1-beta.1 이상이면 안전, 이하 버전이면 취약함
dotnet list package --include-transitive 2>/dev/null | grep -i 'opentelemetry.resources.azure'