🇰🇷 한글 설명
OpenTelemetry.Exporter.Zipkin의 .NET Zipkin 익스포터는 1.15.2 이하 버전에서 span 속성으로부터 파생된 원격 엔드포인트 캐시 키가 무제한으로 증가할 수 있습니다. 고카디널리티 환경에서 지속적으로 고유한 원격 엔드포인트 값이 발생하면 프로세스 메모리 사용량이 점차 증가하여 가용성이 저하될 수 있습니다. 이 문제는 최대 크기가 고정된 제한적이고 스레드 안전한 LRU 캐시를 도입한 1.15.3 버전에서 수정되었습니다.
💡 쉬운 설명
Zipkin으로 추적 데이터를 내보내는 .NET 프로그램이 서로 다른 원격 주소를 계속 기록하면, 그 정보를 저장하는 메모리가 끝없이 늘어납니다. 시간이 지나면 메모리가 부족해져 프로그램이 느려지거나 멈출 수 있습니다.
🇺🇸 원문 (English)
OpenTelemetry.Exporter.Zipkin is the .NET Zipkin exporter for OpenTelemetry. In versions 1.15.2 and earlier, the Zipkin exporter remote endpoint cache accepts unbounded key growth derived from span attributes. In high-cardinality scenarios, a process using Zipkin export for client or producer spans could experience avoidable memory growth under sustained unique remote endpoint values, increasing process memory usage over time and degrading availability. This issue is fixed in version 1.15.3, which introduces a bounded, thread-safe LRU cache for remote endpoints with a fixed maximum size.
📍 영향받는 시스템
OpenTelemetry.Exporter.Zipkin 1.15.2 이하 버전을 사용하는 .NET 애플리케이션
⚔️ 공격 벡터
공격자가 span 속성에 고유한 원격 엔드포인트 값을 대량으로 유발하는 요청을 지속적으로 보내 캐시 메모리를 고갈시키는 방식(메모리 증가에 따른 서비스 거부)
🛡️ 대응 방법
OpenTelemetry.Exporter.Zipkin 패키지를 1.15.3 이상으로 업그레이드합니다.
🔧 검증 코드
출력된 버전이 1.15.3 미만이면 취약하므로 업그레이드가 필요하고, 1.15.3 이상이면 패치가 적용된 것입니다.
dotnet list package 2>/dev/null | grep -i 'OpenTelemetry.Exporter.Zipkin'