{"id":"CVE-2026-115644","kind":"vulnerability","aliases":["CVE-2026-115644"],"related":[],"title":"Apache Kafka Connect: admin listener skips auth, exposing logger controls","description":"Apache Kafka Connect contains an authentication bypass vulnerability affecting the admin REST API when admin.listeners is configured with a separate listener from the main listeners property.\n\nWhen operators isolate the admin REST API by explicitly configuring the \"admin.listeners\" property, REST extensions specified via rest.extension.classes (such as BasicAuthSecurityRestExtension) are not registered or applied to the admin resource configuration.\n\nWhile the primary REST API listener (configured via listeners) enforces configured authentication and authorization filters, endpoints mounted under the separate admin listener (/admin/loggers) fail to inherit or instantiate these extension filters. As a result, the admin logger endpoint accepts unauthenticated read and write requests even when security extensions are active on the main listener.\n\nImpact:\n\nAn unauthenticated attacker with network access to the admin listener can:\n\n  1. Read the complete set of logger names and levels, disclosing loaded class names and which security extensions are in use.\n  2. Write logger levels, including with scope=cluster which propagates the change to all workers in the Connect cluster. This can be used to suppress\n     logging (setting root to OFF) or generate excessive log output (setting root to TRACE), potentially impacting availability and observability.\n\nMitigation:\n\n  Users who cannot upgrade immediately can remove the admin.listeners configuration (or leave it unset). When unset, admin resources share the regular listener and inherit its security extensions.\n\nResolution:\n\n\nFrom Apache Kafka 4.2.2, 4.3.2, and 4.4.0, we make sure the REST extensions specified via \"rest.extension.classes\" will also apply to \"admin.listeners\".","summary":"When Kafka Connect's admin.listeners property is set, the separate admin REST listener does not apply the configured security extensions, so /admin/loggers is reachable without credentials. An unauthenticated attacker with network access to that listener can read logger names and levels and change logger levels cluster-wide, including silencing logs or flooding them at TRACE.","severity":"medium","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["java","kafka","kafka-connect","package","self-hosted"],"not_affected_if":["admin-listeners-unset","default-config","listener-not-network-reachable"],"how_to_check":"- Check whether `admin.listeners` is set in the Kafka Connect worker configuration (connect-distributed.properties or equivalent).\n- Check whether `rest.extension.classes` lists a security extension such as BasicAuthSecurityRestExtension.\n- Check the Kafka Connect version with `connect-distributed.sh --version` or the Kafka package version, and compare against the fixed releases.","fix":"- Upgrade Apache Kafka to `4.2.2`, `4.3.2`, or `4.4.0`, the releases that apply rest.extension.classes to admin.listeners.\n- Until upgrading, remove `admin.listeners` from the worker configuration so admin resources share the regular listener and inherit its security extensions.\n- Restrict network access to the admin listener port with firewall rules.","status":"open","published_at":"2026-10-28T17:18:00+00:00","first_seen_at":"2026-10-28T17:34:09+00:00","triaged_at":"2026-10-28T17:35:04+00:00","updated_at":"2026-10-28T17:35:04+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-28T17:35:04Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Apache Kafka to `4.2.2`, `4.3.2`, or `4.4.0`, the releases that apply rest.extension.classes to admin.listeners.\n- Until upgrading, remove `admin.listeners` from the worker configuration so admin resources share the regular listener and inherit its security extensions.\n- Restrict network access to the admin listener port with firewall rules.","reach":"network","title":"Apache Kafka Connect: admin listener skips auth, exposing logger controls","impact":"low","summary":"When Kafka Connect's admin.listeners property is set, the separate admin REST listener does not apply the configured security extensions, so /admin/loggers is reachable without credentials. An unauthenticated attacker with network access to that listener can read logger names and levels and change logger levels cluster-wide, including silencing logs or flooding them at TRACE.","category":"package","nicknames":[],"who_cares":["kafka","kafka-connect","self-hosted","java"],"confidence":0.8,"needs_auth":"no","worst_case":"unauthenticated users change Connect logger levels cluster-wide","analyst_note":"","how_to_check":"- Check whether `admin.listeners` is set in the Kafka Connect worker configuration (connect-distributed.properties or equivalent).\n- Check whether `rest.extension.classes` lists a security extension such as BasicAuthSecurityRestExtension.\n- Check the Kafka Connect version with `connect-distributed.sh --version` or the Kafka package version, and compare against the fixed releases.","needs_analyst":false,"not_affected_if":["default-config","admin-listeners-unset","listener-not-network-reachable"],"who_is_affected":"Only Kafka Connect deployments that set admin.listeners to a separate listener are exposed, and the exposure matters only when the admin listener is reachable from a network the attacker can reach. Deployments that leave admin.listeners unset share the main listener and inherit its authentication, so they are not affected by this flaw.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000739,"input_tokens":3756,"output_tokens":726,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-115644':13A,16A '-2026':12A,15A '/admin/loggers':47B,161C '1':205C '2':226C '4.2.2':302C '4.3.2':303C '4.4.0':305C 'accept':177C 'access':57B,199C 'activ':188C 'admin':4A,36B,92C,112C,136C,159C,174C,202C,287C 'admin.listeners':30B,96C,119C,279C,319C 'affect':90C 'also':316C 'apach':1A,82C,300C 'api':94C,114C,143C 'appli':41B,133C,317C 'attack':54B,196C 'auth':7A 'authent':87C,150C 'author':152C 'avail':267C 'basicauthsecurityrestextens':128C 'bypass':88C 'cannot':273C 'chang':68B,237C 'class':217C 'cluster':72B,233C,244C 'cluster-wid':71B 'complet':208C 'configur':43B,98C,117C,138C,145C,149C,280C 'connect':3A,21B,28B,84C,243C 'contain':85C 'control':10A 'credenti':51B 'cve':11A,14A 'disclos':215C 'endpoint':154C,176C 'enforc':148C 'even':183C 'excess':258C 'explicit':116C 'expos':8A 'extens':45B,122C,168C,186C,222C,297C,311C 'fail':162C 'filter':153C,169C 'flood':78B 'generat':257C 'host':25B 'immedi':275C 'impact':193C,266C 'includ':74B,230C 'inherit':164C,294C 'instanti':166C 'isol':110C 'java':17B 'kafka':2A,18B,20B,27B,83C,301C 'kafka-connect':19B 'leav':282C 'level':66B,70B,214C,229C 'listen':5A,38B,60B,102C,106C,144C,147C,160C,192C,203C,292C 'load':216C 'log':76B,251C,259C 'logger':9A,63B,69B,175C,211C,228C 'main':105C,191C 'make':307C 'mitig':270C 'mount':155C 'name':64B,212C,218C 'network':56B,198C 'observ':269C 'oper':109C 'output':260C 'packag':22B 'potenti':265C 'primari':141C 'propag':235C 'properti':31B,107C,120C 'reachabl':49B 'read':62B,179C,206C 'regist':131C 'regular':291C 'remov':277C 'request':182C 'resolut':298C 'resourc':137C,288C 'rest':37B,93C,113C,121C,142C,310C 'rest.extension.classes':125C,314C 'result':172C 'root':253C,262C 'scope':232C 'secur':44B,185C,221C,296C 'self':24B 'self-host':23B 'separ':35B,101C,158C 'set':33B,209C,252C,261C 'share':289C 'silenc':75B 'skip':6A 'specifi':123C,312C 'suppress':250C 'sure':308C 'trace':81B,264C 'unauthent':53B,178C,195C 'unset':284C,286C 'upgrad':274C 'use':225C,248C 'user':271C 'via':124C,146C,313C 'vulner':89C 'wide':73B 'without':50B 'worker':240C 'write':181C,227C","nicknames":[],"mitigations":[],"who_affected":"Only Kafka Connect deployments that set admin.listeners to a separate listener are exposed, and the exposure matters only when the admin listener is reachable from a network the attacker can reach. Deployments that leave admin.listeners unset share the main listener and inherit its authentication, so they are not affected by this flaw.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T17:18:00+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-115644","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115644","severity":null,"published_at":"2026-10-28T17:18:00+00:00","modified_at":"2026-10-28T17:18:00+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"}