🔍 CVE-2026-47256

5.3
CVSS Score
MEDIUM
2026-09-14
2026-09-25 14:23
✅ 완료

🇰🇷 한글 설명

OpenTelemetry 0.154.0 미만 버전의 Sentry exporter에서 서비스 이름(service.name) 속성을 검증 없이 Sentry API URL에 삽입하는 취약점이 발견되었습니다. 공격자가 특수 문자를 포함한 프로젝트 슬러그를 사용하여 API 경로를 조작하거나 경로 탐색을 수행함으로써, 인증된 토큰을 이용해 Sentry의 관리 및 조직 엔드포인트에 접근할 수 있습니다.

💡 쉬운 설명

프로그램이 데이터를 보내는 주소를 만들 때 사용자가 입력한 이름을 제대로 검사하지 않아 발생하는 문제입니다. 나쁜 의도를 가진 사용자가 주소를 교묘하게 바꿔서 관리자 권한이 필요한 중요한 정보에 접근할 수 있습니다.

🇺🇸 원문 (English)

OpenTelemetry, also known as OTel, is a vendor-neutral open source Observability framework for instrumenting, generating, collecting, and exporting telemetry data such as traces, metrics, and logs. Prior to 0.154.0, the Sentry exporter reads the remote OTLP sender-controlled service.name resource attribute in exporter/sentryexporter/sentry_exporter.go through extractProjectSlug and getOrCreateProjectEndpoint, passes the raw project slug to GetOTLPEndpoints and GetProjectKeys in exporter/sentryexporter/sentry_client.go, and interpolates it into a Sentry API URL without applying projectSlugRegexp through validateRoutingConfig at runtime in exporter/sentryexporter/config.go. Special characters can turn the expected path suffix into query data in all deployments or introduce slash and dot segments that traverse paths when the Sentry deployment normalizes them, while the Collector attaches its operator-configured bearer token to the request. A successful request can reach token-authorized administrative, organization, member, or key endpoints within the configured Sentry organization, and an attacker-controlled project slug can redirect subsequently exported telemetry. Sentry token middleware prevents cross-organization access. This issue is fixed in version 0.154.0.

📍 영향받는 시스템

OpenTelemetry (OTel) versions prior to 0.154.0

⚔️ 공격 벡터

원격에서 조작된 service.name 리소스 속성을 통한 API URL 경로 조작 및 경로 탐색(Path Traversal)

🛡️ 대응 방법

OpenTelemetry를 0.154.0 버전 이상으로 업데이트하십시오.

🔧 검증 코드

출력된 버전이 0.154.0 미만이면 취약한 상태이며, 0.154.0 이상이면 안전합니다.

Shell / Script
go list -m github.com/open-telemetry/opentelemetry-collector/exporter/sentryexporter 2>/dev/null | grep -E 'v0\.(15[0-4]|15[0-5]|15[6-9]|1[6-9][0-9]|[2-9][0-9]{2})\.' || echo 'Version check required via build manifest'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N