{"id":"CVE-2026-81872","kind":"vulnerability","aliases":["CVE-2026-81872","GHSA-hjf4-fphr-2h65","GO-2026-6615"],"related":[],"title":"OpenTelemetry-Go: BatchProcessor can busy-spin when export buffer is full in go.opentelemetry.io/otel/sdk/log","description":"OpenTelemetry-Go is the Go implementation of OpenTelemetry. Prior to version 0.21.0, the go.opentelemetry.io/otel/sdk/log BatchingProcessor can enter a tight CPU loop when attacker-driven log emission fills its asynchronous export buffer while the exporter is backpressured. NewBatchingProcessor wraps the exporter with newBufferExporter(exporter, 1), and the poll loop calls queue.TryDequeue and bufferExporter.EnqueueExport before immediately signaling pollTrigger whenever the queue remains at or above batchSize. Because a failed nonblocking EnqueueExport leaves the queue length unchanged, the processor repeatedly retries without waiting for its ticker, exhausting CPU and degrading or denying service in the embedding process. This issue is fixed in version 0.21.0.","summary":"The OpenTelemetry Go log SDK's batch processor can enter a tight CPU loop when its export buffer is full and the exporter is backpressured. An attacker who can make the application emit many logs can exhaust CPU and degrade or deny service in the process.","severity":"medium","cvss":6.3,"epss":0.00383,"exploited":false,"exploited_at":null,"products":[{"name":"go.opentelemetry.io/otel/sdk/log","fixed":["0.21.0"],"affected":"< 0.21.0","ecosystem":"go"}],"ecosystems":["go"],"tags":["go","opentelemetry","package","services"],"not_affected_if":["not-using-otel-log-sdk"],"how_to_check":"Run `go list -m go.opentelemetry.io/otel/sdk/log` in the service module and check whether the version is below 0.21.0.","fix":"Upgrade go.opentelemetry.io/otel/sdk/log to 0.21.0 or later.","status":"open","published_at":"2026-09-16T21:17:22+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","triaged_at":"2026-10-23T21:46:11+00:00","updated_at":"2026-10-23T21:46:11+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-23T21:46:11Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade go.opentelemetry.io/otel/sdk/log to 0.21.0 or later.\nunknown","reach":"unknown","impact":"low","summary":"The OpenTelemetry Go log SDK's batch processor can enter a tight CPU loop when its export buffer is full and the exporter is backpressured. An attacker who can make the application emit many logs can exhaust CPU and degrade or deny service in the process.","category":"package","who_cares":["go","opentelemetry","services"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Attacker-driven log volume exhausts CPU and denies service in the process.","analyst_note":"","how_to_check":"Run `go list -m go.opentelemetry.io/otel/sdk/log` in the service module and check whether the version is below 0.21.0.\nunknown\nunknown","needs_analyst":false,"not_affected_if":["not-using-otel-log-sdk"],"user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000497,"input_tokens":3133,"output_tokens":368,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':19A,27A,30A '-6615':28A '-81872':20A,31A '/otel/sdk/log':17A,34A,101C '0.21.0':97C,189C '1':132C '2h65':25A 'applic':70B 'asynchron':117C 'attack':65B,111C 'attacker-driven':110C 'backpressur':63B,124C 'batch':45B 'batchingprocessor':102C 'batchprocessor':4A 'batchsiz':152C 'buffer':11A,56B,119C 'bufferexporter.enqueueexport':140C 'busi':7A 'busy-spin':6A 'call':137C 'cpu':51B,76B,107C,173C 'cve':18A,29A 'degrad':78B,175C 'deni':80B,177C 'driven':112C 'embed':181C 'emiss':114C 'emit':71B 'enqueueexport':157C 'enter':48B,104C 'exhaust':75B,172C 'export':10A,55B,61B,118C,122C,128C,131C 'fail':155C 'fill':115C 'fix':186C 'fphr':24A 'full':13A,58B 'ghsa':22A 'ghsa-hjf4-fphr-2h65':21A 'go':3A,26A,35B,41B,87C,90C 'go.opentelemetry.io':16A,33A,100C 'go.opentelemetry.io/otel/sdk/log':15A,32A,99C 'hjf4':23A 'immedi':142C 'implement':91C 'issu':184C 'leav':158C 'length':161C 'log':42B,73B,113C 'loop':52B,108C,136C 'make':68B 'mani':72B 'newbatchingprocessor':125C 'newbufferexport':130C 'nonblock':156C 'opentelemetri':2A,36B,40B,86C,93C 'opentelemetry-go':1A,85C 'packag':37B 'poll':135C 'polltrigg':144C 'prior':94C 'process':84B,182C 'processor':46B,164C 'queue':147C,160C 'queue.trydequeue':138C 'remain':148C 'repeat':165C 'retri':166C 'sdk':43B 'servic':38B,81B,178C 'signal':143C 'spin':8A 'ticker':171C 'tight':50B,106C 'unchang':162C 'version':96C,188C 'wait':168C 'whenev':145C 'without':167C 'wrap':126C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-16T21:17:22+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"govuln","external_id":"GO-2026-6615","url":"https://pkg.go.dev/vuln/GO-2026-6615","severity":null,"published_at":"2026-10-01T20:24:10+00:00","modified_at":"2026-10-01T20:24:10+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","fetched_at":"2026-10-23T19:13:08+00:00","note":null},{"source":"epss","external_id":"CVE-2026-81872","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-81872","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-23T19:13:43+00:00","fetched_at":"2026-10-23T19:13:43+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-81872","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-81872","severity":null,"published_at":"2026-09-16T21:17:22+00:00","modified_at":"2026-09-30T17:43:24+00:00","first_seen_at":"2026-10-23T19:35:23+00:00","fetched_at":"2026-10-23T19:35:23+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}