{"id":"CVE-2026-112375","kind":"vulnerability","aliases":["CVE-2026-112375"],"related":[],"title":"Apache Kafka: unauthorized config request reads broker files and environment variables","description":"An authenticated Kafka principal with no authorization grants (not even ALTER_CONFIGS) can make a broker read a file or an environment variable from the broker host and return its contents. An IncrementalAlterConfigs (or AlterConfigs) request targeting a BROKER resource reaches the broker's configuration validation before any authorization check is applied to that path. Validation resolves configuration variables such as ${file:/path:key} or ${env:VAR} using a ConfigProvider named in the request, and this resolution bypasses the org.apache.kafka.automatic.config.providers allowlist that was added as the mitigation for CVE-2024-31141. An arbitrary ConfigProvider (for example FileConfigProvider or EnvVarConfigProvider) is therefore instantiated and the referenced file or environment variable is read, and a type-validation error returns the resolved content to the caller.\n\n\nImpact:\n\nOn a cluster with an authorizer enabled, an authenticated principal with no authorization grants can read the contents of files accessible to the broker process, and the broker's environment variables, exposing credentials, keystores, or other secrets, defeating the CVE-2024-31141 allowlist. The read is bounded by the broker process's file permissions. The brokers and the cluster remain available; the issue is disclosure of file and environment- variable contents. Clusters with no authorizer configured are not affected in practice, because every principal already holds ALTER_CONFIGS there.\n\n\nMitigation:\n\nUpgrade to Apache Kafka 4.2.2, 4.3.2, or 4.4.0. As defense in depth, run brokers under a least-privileged operating-system account so that sensitive files are not readable by the broker process.\n\n\nResolution:\n\nFrom Apache Kafka 4.2.2, 4.3.2, and 4.4.0: broker configuration changes are authorized (ALTER_CONFIGS on the cluster) before the configuration is validated, and configuration- variable resolution enforces the config-providers allowlist.","summary":"An authenticated Kafka principal with no grants can send an IncrementalAlterConfigs or AlterConfigs request that makes the broker resolve config variables like ${file:/path:key} or ${env:VAR}, bypassing the CVE-2024-31141 provider allowlist. The attacker gets back the contents of files the broker can read and its environment variables, which may include credentials and keystores.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["broker-operators","infrastructure","kafka","self-hosted"],"not_affected_if":["no-authorizer-configured","patched-release"],"how_to_check":"- Check the Kafka version with `kafka-broker-api-versions.sh --bootstrap-server <broker>` or the broker's installed release, and see whether it is below `4.2.2`, `4.3.2` or `4.4.0`.\n- Confirm an authorizer is enabled by looking for `authorizer.class.name` in `server.properties`; clusters without an authorizer are not affected in practice.","fix":"- Upgrade Apache Kafka to `4.2.2`, `4.3.2` or `4.4.0`.\n- As defense in depth, run brokers under a least-privileged OS account so sensitive files are not readable by the broker process.","status":"open","published_at":"2026-10-28T17:17:42+00:00","first_seen_at":"2026-10-28T17:34:09+00:00","triaged_at":"2026-10-28T17:35:06+00:00","updated_at":"2026-10-28T17:35:06+00:00","category":"infrastructure","confidence":0.8,"triage":{"at":"2026-10-28T17:35:06Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Apache Kafka to `4.2.2`, `4.3.2` or `4.4.0`.\n- As defense in depth, run brokers under a least-privileged OS account so sensitive files are not readable by the broker process.","reach":"network","title":"Apache Kafka: unauthorized config request reads broker files and environment variables","impact":"high","summary":"An authenticated Kafka principal with no grants can send an IncrementalAlterConfigs or AlterConfigs request that makes the broker resolve config variables like ${file:/path:key} or ${env:VAR}, bypassing the CVE-2024-31141 provider allowlist. The attacker gets back the contents of files the broker can read and its environment variables, which may include credentials and keystores.","category":"infrastructure","nicknames":[],"who_cares":["kafka","self-hosted","broker-operators"],"confidence":0.8,"needs_auth":"yes","worst_case":"Attacker reads broker files and environment variables, including secrets.","analyst_note":"","how_to_check":"- Check the Kafka version with `kafka-broker-api-versions.sh --bootstrap-server <broker>` or the broker's installed release, and see whether it is below `4.2.2`, `4.3.2` or `4.4.0`.\n- Confirm an authorizer is enabled by looking for `authorizer.class.name` in `server.properties`; clusters without an authorizer are not affected in practice.","needs_analyst":false,"not_affected_if":["no-authorizer-configured","patched-release"],"who_is_affected":"Clusters with an authorizer enabled, where some authenticated principal exists that holds no ALTER_CONFIGS grant, are exposed. Clusters with no authorizer configured are not affected in practice, since every principal already holds ALTER_CONFIGS there.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000718,"input_tokens":3872,"output_tokens":661,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-112375':14A,17A '-2024':57B,172C,248C '-2026':13A,16A '-31141':58B,173C,249C '/path':49B,145C '4.2.2':302C,336C '4.3.2':303C,337C '4.4.0':305C,339C 'access':228C 'account':320C 'add':166C 'affect':286C 'allowlist':60B,163C,250C,364C 'alreadi':292C 'alter':93C,294C,345C 'alterconfig':38B,117C 'apach':1A,300C,334C 'appli':134C 'arbitrari':175C 'attack':62B 'authent':27B,84C,216C 'author':89C,131C,213C,220C,282C,344C 'avail':268C 'back':64B 'bound':254C 'broker':7A,19B,43B,70B,98C,108C,121C,125C,231C,235C,257C,263C,311C,330C,340C 'broker-oper':18B 'bypass':54B,160C 'caller':206C 'chang':342C 'check':132C 'cluster':210C,266C,279C,349C 'config':4A,45B,94C,295C,346C,362C 'config-provid':361C 'configprovid':152C,176C 'configur':127C,140C,283C,341C,352C,356C 'content':66B,113C,203C,225C,278C 'credenti':80B,240C 'cve':12A,15A,56B,171C,247C 'defeat':245C 'defens':307C 'depth':309C 'disclosur':272C 'enabl':214C 'enforc':359C 'env':52B,148C 'environ':10A,75B,104C,190C,237C,276C 'envvarconfigprovid':181C 'error':199C 'even':92C 'everi':290C 'exampl':178C 'expos':239C 'file':8A,48B,68B,101C,144C,188C,227C,260C,274C,324C 'fileconfigprovid':179C 'get':63B 'grant':32B,90C,221C 'hold':293C 'host':25B,109C 'impact':207C 'includ':79B 'incrementalalterconfig':36B,115C 'infrastructur':21B 'instanti':184C 'issu':270C 'kafka':2A,22B,28B,85C,301C,335C 'key':50B,146C 'keystor':82B,241C 'least':315C 'least-privileg':314C 'like':47B 'make':41B,96C 'may':78B 'mitig':169C,297C 'name':153C 'oper':20B,318C 'operating-system':317C 'org.apache.kafka.automatic.config.providers':162C 'path':137C 'permiss':261C 'practic':288C 'princip':29B,86C,217C,291C 'privileg':316C 'process':232C,258C,331C 'provid':59B,363C 'reach':123C 'read':6A,72B,99C,193C,223C,252C 'readabl':327C 'referenc':187C 'remain':267C 'request':5A,39B,118C,156C 'resolut':159C,332C,358C 'resolv':44B,139C,202C 'resourc':122C 'return':111C,200C 'run':310C 'secret':244C 'self':24B 'self-host':23B 'send':34B 'sensit':323C 'system':319C 'target':119C 'therefor':183C 'type':197C 'type-valid':196C 'unauthor':3A 'upgrad':298C 'use':150C 'valid':128C,138C,198C,354C 'var':53B,149C 'variabl':11A,46B,76B,105C,141C,191C,238C,277C,357C","nicknames":[],"mitigations":[],"who_affected":"Clusters with an authorizer enabled, where some authenticated principal exists that holds no ALTER_CONFIGS grant, are exposed. Clusters with no authorizer configured are not affected in practice, since every principal already holds ALTER_CONFIGS there.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T17:17:42+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-112375","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-112375","severity":null,"published_at":"2026-10-28T17:17:42+00:00","modified_at":"2026-10-28T17:17:42+00:00","first_seen_at":"2026-10-28T17:34:09+00:00","fetched_at":"2026-10-28T17:34:09+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"}