{"id":"CVE-2026-16454","kind":"vulnerability","aliases":["CVE-2026-16454","GHSA-92r3-p8c2-3fpx"],"related":[],"title":"Eclipse hawkBit DDI has Privilege Escalation that allows Tenant-Isolated Firmware Exfiltration","description":"## **Description**\nA privilege escalation vulnerability has been identified in the Direct Device Integration (DDI) Controller of **Eclipse hawkBit** (versions 1.0.3 and prior).\n\nThis vulnerability allows an authenticated device to escalate its permissions and bypass the strict boundaries of its assigned updates. Under normal operation, a device should be restricted **strictly to the specific firmware artifacts explicitly assigned to it**. However, this flaw enables any authenticated device to bypass this restriction and download any firmware artifact **within the same tenant**.\n\nThis is **not** an authentication bypass; the requesting device must possess valid credentials for its respective tenant. Instead, the issue stems from a flaw in object-level authorization validation.\n\nA related, lower-severity helper issue exists in the listing software modules artifacts metadata endpoint. This endpoint does not enforce assignment checks, enabling an authenticated device to list and enumerate available firmware artifacts, which can facilitate targeted exfiltration using the main download authorization bypass.\n\n---\n\n## **Impact**\n* **Severity:** Moderate\n* **Scope:** Tenant-isolated. An attacker must be an authenticated device within the target tenant to exploit this vulnerability.\n* **Confidentiality Impact:** **Low**. While firmware binaries can be retrieved, the impact is mitigated because access is restricted strictly to the scope of the pre-authenticated tenant, and no administrative or cross-tenant data is exposed. Additionally, production firmware binaries are by design not expected to contain highly sensitive or confidential data (such as hardcoded credentials or private keys), further supporting the Low confidentiality rating.\n\n---\n\n## **Affected Products and Versions**\n* **Product:** `eclipse-hawkbit/hawkbit`\n* **Affected Component:** `hawkbit-ddi/hawkbit-ddi-resource`, as well as the compiled binaries and Docker images that contain this component.\n* **Affected Versions:** `1.0.3` and prior versions.\n* **Patched Version:** `1.0.4`\n\n---\n\n## **Remediation**\nUpgrade to version **1.0.4** or later. \n\n**Fix details:** The download authorization logic has been corrected to ensure that assignment-based verification is executed on every artifact download request. Additionally, the software module metadata endpoint has been updated to enforce proper authorization, restricting access exclusively to software modules and artifacts that are explicitly assigned to or already installed on the requesting device.\n\n---\n\n## **Credits**\nEclipse would like to thank **Santosh Kumar Puppala** (GitHub: [Santoshkumarpuppala](https://github.com/Santoshkumarpuppala), Email: santhoshkumar7794@gmail.com) for discovering and reporting this vulnerability through coordinated disclosure.","summary":"Eclipse hawkBit's DDI controller does not check artifact assignment on firmware downloads, so any authenticated device can fetch any firmware artifact within its own tenant. The metadata endpoint that lists software module artifacts also lacks assignment checks, which helps an attacker enumerate targets.","severity":"medium","cvss":4.3,"epss":0.00356,"exploited":false,"exploited_at":null,"products":[{"name":"org.eclipse.hawkbit:hawkbit-ddi-resource","fixed":["1.0.4"],"affected":"<= 1.0.3","ecosystem":"maven"},{"name":"eclipse hawkbit","fixed":["1.0.4"],"affected":"< 1.0.4","ecosystem":"vendor"}],"ecosystems":["maven","vendor"],"tags":["cwe-284","cwe-862","firmware-updates","hawkbit","iot","java","package"],"not_affected_if":["hawkbit-1.0.4-or-later","no-ddi-endpoint"],"how_to_check":"- Check the version of `org.eclipse.hawkbit:hawkbit-ddi-resource` in your build files or running images, and flag anything at or below `1.0.3`.\n- Look for the hawkBit DDI controller in Docker images and compiled binaries you deploy.","fix":"- `org.eclipse.hawkbit:hawkbit-ddi-resource` upgrade to `1.0.4` or later.","status":"open","published_at":"2026-07-21T17:17:05+00:00","first_seen_at":"2026-11-06T18:11:02+00:00","triaged_at":"2026-11-06T18:11:56+00:00","updated_at":"2026-11-06T18:13:15+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-06T18:11:56Z","model":"claude-haiku-5-5","output":{"fix":"- `org.eclipse.hawkbit:hawkbit-ddi-resource` upgrade to `1.0.4` or later.","reach":"internet","title":"Eclipse hawkBit: authenticated devices can download other devices' firmware in tenant","impact":"low","summary":"Eclipse hawkBit's DDI controller does not check artifact assignment on firmware downloads, so any authenticated device can fetch any firmware artifact within its own tenant. The metadata endpoint that lists software module artifacts also lacks assignment checks, which helps an attacker enumerate targets.","audience":"businesses","category":"package","nicknames":[],"who_cares":["hawkbit","java","firmware-updates","iot"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"Authenticated device reads other firmware artifacts in its tenant.","analyst_note":"","how_to_check":"- Check the version of `org.eclipse.hawkbit:hawkbit-ddi-resource` in your build files or running images, and flag anything at or below `1.0.3`.\n- Look for the hawkBit DDI controller in Docker images and compiled binaries you deploy.","plain_action":"","needs_analyst":false,"not_affected_if":["hawkbit-1.0.4-or-later","no-ddi-endpoint"],"who_is_affected":"Deployments running the hawkBit DDI controller at version 1.0.3 or earlier are exposed, since devices authenticate to it to receive updates. The attacker must already hold valid device credentials for the same tenant, so deployments with no device fleet or with single-tenant access controls are lower risk. Teams that only use the management API and not DDI can skip it, though the sources do not say this explicitly.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000847,"input_tokens":5273,"output_tokens":640,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-16454':16A,24A '-2026':15A,23A '-284':33B '-862':35B '/hawkbit':337C '/hawkbit-ddi-resource':343C '/santoshkumarpuppala),':442C '1.0.3':106C,359C '1.0.4':365C,370C '3fpx':21A '92r3':19A 'access':277C,410C 'addit':300C,396C 'administr':292C 'affect':329C,338C,357C 'allow':8A,111C 'alreadi':423C 'also':77B 'artifact':51B,64B,76B,141C,161C,209C,229C,393C,416C 'assign':52B,79B,126C,143C,217C,386C,420C 'assignment-bas':385C 'attack':84B,249C 'authent':58B,113C,151C,170C,221C,253C,288C 'author':194C,239C,377C,408C 'avail':227C 'base':387C 'binari':268C,303C,349C 'boundari':123C 'bypass':120C,154C,171C,240C 'check':50B,80B,218C 'compil':348C 'compon':339C,356C 'confidenti':263C,314C,327C 'contain':310C,354C 'control':47B,101C 'coordin':452C 'correct':381C 'credenti':178C,319C 'credit':429C 'cross':295C 'cross-ten':294C 'cve':14A,22A 'cwe':32B,34B 'data':297C,315C 'ddi':3A,28A,46B,100C,342C 'descript':87C 'design':306C 'detail':374C 'devic':59B,98C,114C,132C,152C,174C,222C,254C,428C 'direct':97C 'disclosur':453C 'discov':446C 'docker':351C 'download':55B,158C,238C,376C,394C 'eclips':1A,43B,103C,335C,430C 'eclipse':30A 'eclipse-hawkbit':334C 'email':443C 'enabl':149C,219C 'endpoint':71B,211C,213C,401C 'enforc':216C,406C 'ensur':383C 'enumer':85B,226C 'escal':6A,90C,116C 'everi':392C 'exclus':411C 'execut':390C 'exfiltr':13A,234C 'exist':203C 'expect':308C 'explicit':142C,419C 'exploit':260C 'expos':299C 'facilit':232C 'fetch':61B 'firmwar':12A,37B,54B,63B,140C,160C,228C,267C,302C 'firmware-upd':36B 'fix':373C 'flaw':148C,189C 'ghsa':18A 'ghsa-92r3-p8c2-3fpx':17A 'github':438C 'github.com':441C 'github.com/santoshkumarpuppala),':440C 'hardcod':318C 'hawkbit':2A,27A,31A,39B,44B,104C,336C,341C 'hawkbit-ddi':340C 'hawkbit-ddi-resource':26A 'help':82B 'helper':201C 'high':311C 'howev':146C 'identifi':94C 'imag':352C 'impact':241C,264C,273C 'instal':424C 'instead':183C 'integr':99C 'iot':40B 'isol':11A,247C 'issu':185C,202C 'java':41B 'key':322C 'kumar':436C 'lack':78B 'later':372C 'level':193C 'like':432C 'list':73B,206C,224C 'logic':378C 'low':265C,326C 'lower':199C 'lower-sever':198C 'main':237C 'metadata':70B,210C,400C 'mitig':275C 'moder':243C 'modul':75B,208C,399C,414C 'must':175C,250C 'normal':129C 'object':192C 'object-level':191C 'oper':130C 'org.eclipse.hawkbit':25A 'p8c2':20A 'packag':42B 'patch':363C 'permiss':118C 'possess':176C 'pre':287C 'pre-authent':286C 'prior':108C,361C 'privat':321C 'privileg':5A,89C 'product':301C,330C,333C 'proper':407C 'puppala':437C 'rate':328C 'relat':197C 'remedi':366C 'report':448C 'request':173C,395C,427C 'resource':29A 'respect':181C 'restrict':135C,156C,279C,409C 'retriev':271C 'santhoshkumar7794@gmail.com':444C 'santosh':435C 'santoshkumarpuppala':439C 'scope':244C,283C 'sensit':312C 'sever':200C,242C 'softwar':74B,207C,398C,413C 'specif':139C 'stem':186C 'strict':122C,136C,280C 'support':324C 'target':86B,233C,257C 'tenant':10A,68B,165C,182C,246C,258C,289C,296C 'tenant-isol':9A,245C 'thank':434C 'updat':38B,127C,404C 'upgrad':367C 'use':235C 'valid':177C,195C 'verif':388C 'version':105C,332C,358C,362C,364C,369C 'vulner':91C,110C,262C,450C 'well':345C 'within':65B,162C,255C 'would':431C","nicknames":[],"mitigations":[],"who_affected":"Deployments running the hawkBit DDI controller at version 1.0.3 or earlier are exposed, since devices authenticate to it to receive updates. The attacker must already hold valid device credentials for the same tenant, so deployments with no device fleet or with single-tenant access controls are lower risk. Teams that only use the management API and not DDI can skip it, though the sources do not say this explicitly.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["eclipsehawkbit","hawkbit","orgeclipsehawkbithawkbitddiresource"],"ptokens":["ddi","eclipse","hawkbit","org","resource"],"labels":["cwe284","cwe862","firmwareupdates","hawkbit","iot","java","maven","medium","package","vendor"],"campaign_type":null,"search_a":"'-16454':16A,24A '-2026':15A,23A '3fpx':21A '92r3':19A 'allow':8A 'cve':14A,22A 'ddi':3A,28A 'eclips':1A 'eclipse':30A 'escal':6A 'exfiltr':13A 'firmwar':12A 'ghsa':18A 'ghsa-92r3-p8c2-3fpx':17A 'hawkbit':2A,27A,31A 'hawkbit-ddi-resource':26A 'isol':11A 'org.eclipse.hawkbit':25A 'p8c2':20A 'privileg':5A 'resource':29A 'tenant':10A 'tenant-isol':9A","search_b":"'-284':33B '-862':35B 'also':77B 'artifact':51B,64B,76B 'assign':52B,79B 'attack':84B 'authent':58B 'check':50B,80B 'control':47B 'cwe':32B,34B 'ddi':46B 'devic':59B 'download':55B 'eclips':43B 'endpoint':71B 'enumer':85B 'fetch':61B 'firmwar':37B,54B,63B 'firmware-upd':36B 'hawkbit':39B,44B 'help':82B 'iot':40B 'java':41B 'lack':78B 'list':73B 'metadata':70B 'modul':75B 'packag':42B 'softwar':74B 'target':86B 'tenant':68B 'updat':38B 'within':65B","search_c":"'/hawkbit':337C '/hawkbit-ddi-resource':343C '/santoshkumarpuppala),':442C '1.0.3':106C,359C '1.0.4':365C,370C 'access':277C,410C 'addit':300C,396C 'administr':292C 'affect':329C,338C,357C 'allow':111C 'alreadi':423C 'artifact':141C,161C,209C,229C,393C,416C 'assign':126C,143C,217C,386C,420C 'assignment-bas':385C 'attack':249C 'authent':113C,151C,170C,221C,253C,288C 'author':194C,239C,377C,408C 'avail':227C 'base':387C 'binari':268C,303C,349C 'boundari':123C 'bypass':120C,154C,171C,240C 'check':218C 'compil':348C 'compon':339C,356C 'confidenti':263C,314C,327C 'contain':310C,354C 'control':101C 'coordin':452C 'correct':381C 'credenti':178C,319C 'credit':429C 'cross':295C 'cross-ten':294C 'data':297C,315C 'ddi':100C,342C 'descript':87C 'design':306C 'detail':374C 'devic':98C,114C,132C,152C,174C,222C,254C,428C 'direct':97C 'disclosur':453C 'discov':446C 'docker':351C 'download':158C,238C,376C,394C 'eclips':103C,335C,430C 'eclipse-hawkbit':334C 'email':443C 'enabl':149C,219C 'endpoint':211C,213C,401C 'enforc':216C,406C 'ensur':383C 'enumer':226C 'escal':90C,116C 'everi':392C 'exclus':411C 'execut':390C 'exfiltr':234C 'exist':203C 'expect':308C 'explicit':142C,419C 'exploit':260C 'expos':299C 'facilit':232C 'firmwar':140C,160C,228C,267C,302C 'fix':373C 'flaw':148C,189C 'github':438C 'github.com':441C 'github.com/santoshkumarpuppala),':440C 'hardcod':318C 'hawkbit':104C,336C,341C 'hawkbit-ddi':340C 'helper':201C 'high':311C 'howev':146C 'identifi':94C 'imag':352C 'impact':241C,264C,273C 'instal':424C 'instead':183C 'integr':99C 'isol':247C 'issu':185C,202C 'key':322C 'kumar':436C 'later':372C 'level':193C 'like':432C 'list':206C,224C 'logic':378C 'low':265C,326C 'lower':199C 'lower-sever':198C 'main':237C 'metadata':210C,400C 'mitig':275C 'moder':243C 'modul':208C,399C,414C 'must':175C,250C 'normal':129C 'object':192C 'object-level':191C 'oper':130C 'patch':363C 'permiss':118C 'possess':176C 'pre':287C 'pre-authent':286C 'prior':108C,361C 'privat':321C 'privileg':89C 'product':301C,330C,333C 'proper':407C 'puppala':437C 'rate':328C 'relat':197C 'remedi':366C 'report':448C 'request':173C,395C,427C 'respect':181C 'restrict':135C,156C,279C,409C 'retriev':271C 'santhoshkumar7794@gmail.com':444C 'santosh':435C 'santoshkumarpuppala':439C 'scope':244C,283C 'sensit':312C 'sever':200C,242C 'softwar':207C,398C,413C 'specif':139C 'stem':186C 'strict':122C,136C,280C 'support':324C 'target':233C,257C 'tenant':165C,182C,246C,258C,289C,296C 'tenant-isol':245C 'thank':434C 'updat':127C,404C 'upgrad':367C 'use':235C 'valid':177C,195C 'verif':388C 'version':105C,332C,358C,362C,364C,369C 'vulner':91C,110C,262C,450C 'well':345C 'within':162C,255C 'would':431C","first_public_at":"2026-06-26T09:35:51+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-92r3-p8c2-3fpx","url":"https://github.com/advisories/GHSA-92r3-p8c2-3fpx","severity":"medium","published_at":"2026-11-06T18:09:45+00:00","modified_at":"2026-11-06T18:09:46+00:00","first_seen_at":"2026-11-06T18:11:02+00:00","fetched_at":"2026-11-06T18:19:44+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-16454","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-16454","severity":null,"published_at":"2026-07-21T17:17:05+00:00","modified_at":"2026-10-24T19:10:00+00:00","first_seen_at":"2026-11-06T18:13:15+00:00","fetched_at":"2026-11-06T18:13:15+00:00","note":null}],"documents":[{"id":88428,"url":"https://api.github.com/repos/eclipse-hawkbit/hawkbit/security-advisories/GHSA-92r3-p8c2-3fpx","title":"Maintainer's advisory: api.github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's advisory: api.github.com"},{"id":88429,"url":"https://github.com/eclipse-hawkbit/hawkbit/security/advisories/GHSA-92r3-p8c2-3fpx","title":"Maintainer's advisory: github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":"2026-06-26T09:35:51+00:00","relation":"advisory","confidence":null,"note":"Maintainer's advisory: github.com"},{"id":88430,"url":"https://github.com/eclipse-hawkbit/hawkbit/pull/3156","title":"Patch: github.com","kind":"other","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":88431,"url":"https://github.com/eclipse-hawkbit/hawkbit/pull/3161","title":"Patch: github.com","kind":"other","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":88432,"url":"https://github.com/eclipse-hawkbit/hawkbit/commit/6cb34fd77f6a60cfb0ee5b379093593cbe56591a","title":"Patch: github.com","kind":"other","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":88433,"url":"https://github.com/eclipse-hawkbit/hawkbit/commit/914b8b406bd77838cffbef80c1ea4cff5a15c710","title":"Patch: github.com","kind":"other","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":88434,"url":"https://github.com/eclipse-hawkbit/hawkbit/releases/tag/1.0.4","title":"Release: github.com","kind":"release","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release: github.com"}],"exploit_sources":[{"type":"epss","score":0.00356,"url":"https://api.first.org/data/v1/epss?cve=CVE-2026-16454"}],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}