CVE-2022-34835
Critical · 9.8CVSS
9.8
EPSS
2.3%
Published
Jun 30, 2022
CISA due date
—
Cloudanix analysis
A flaw in the bootloader used by many embedded devices lets attackers take full control if they can reach the device's command interface.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Firmware
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Integer signedness error in the i2c md command handler leads to a stack-based buffer overflow that corrupts the return address of do_i2c_md, enabling arbitrary code execution within the bootloader context.
Why it matters to the business
Attackers can achieve remote code execution on embedded devices during boot or console access, potentially compromising firmware integrity, device control, and downstream systems that rely on U-Boot for secure initialization.
How an attack unfolds
An attacker with network or local console access supplies a maliciously crafted i2c md command that triggers the signedness error, overflows the stack buffer, and overwrites the return address to redirect execution to attacker-controlled code.
How to fix it
Upgrade u-boot/u-boot to commit 8f8c04bf1ebbd2f72f1643e7ad9617dafa6e5409 or later; rebuild and redeploy the bootloader image on all affected devices.
How to confirm the fix worked
Verify the running U-Boot binary contains commit 8f8c04bf1ebbd2f72f1643e7ad9617dafa6e5409; attempt to reproduce the original i2c md overflow condition in a test environment and confirm the crash or corruption no longer occurs.
Typical attack path
- Identify exposed U-Boot console or i2c interface
- Craft input to the i2c md command exploiting the signedness error
- Trigger buffer overflow to corrupt return address
- Redirect control flow to injected shellcode or ROP chain
- Execute arbitrary code in bootloader context
How to detect it
Review bootloader logs and console history for unusual i2c md command invocations; inspect crash dumps or stack traces around the do_i2c_md function for signs of return-address corruption.
What your security team should do
- Immediately update all U-Boot instances to the fixed commit
- Restrict console and i2c access to trusted interfaces only
- Monitor for new U-Boot releases and integrate automated build verification
- Test boot images in isolated environments before production deployment
The record
In Das U-Boot through 2022.07-rc5, an integer signedness error and resultant stack-based buffer overflow in the "i2c md" command enables the corruption of the return address pointer of the do_i2c_md function.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | u-boot | 0 | No fix |
| Debian:12 | u-boot | 0 | 2022.07+dfsg-1 |
| Debian:13 | u-boot | 0 | 2022.07+dfsg-1 |
| SUSE:Enterprise Storage 6 | u-boot | 0 | 2019.01-150100.7.16.1 |
| SUSE:Enterprise Storage 6 | u-boot-rpi3 | 0 | 2019.01-150100.7.16.1 |
| SUSE:Enterprise Storage 7 | u-boot | 0 | 2020.01-150200.10.15.1 |
| SUSE:Enterprise Storage 7 | u-boot-rpiarm64 | 0 | 2020.01-150200.10.15.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | u-boot | 0 | 2019.01-150100.7.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | u-boot-rpi3 | 0 | 2019.01-150100.7.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | u-boot | 0 | 2019.01-150100.7.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | u-boot-rpi3 | 0 | 2019.01-150100.7.16.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-ESPOS | u-boot | 0 | 2020.01-150200.10.15.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-ESPOS | u-boot-rpiarm64 | 0 | 2020.01-150200.10.15.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | u-boot | 0 | 2020.01-150200.10.15.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | u-boot-rpiarm64 | 0 | 2020.01-150200.10.15.1 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | u-boot | 0 | 2018.03-150000.4.11.1 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | u-boot-rpi3 | 0 | 2018.03-150000.4.11.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | u-boot | 0 | 2018.03-150000.4.11.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | u-boot-rpi3 | 0 | 2018.03-150000.4.11.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP3 | u-boot | 0 | 2021.01-150300.7.15.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP3 | u-boot-rpiarm64 | 0 | 2021.01-150300.7.15.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP4 | u-boot | 0 | 2021.10-150400.4.8.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP4 | u-boot-rpiarm64 | 0 | 2021.10-150400.4.8.1 |
| SUSE:Linux Enterprise Server 12 SP4-LTSS | u-boot | 0 | 2018.03-4.9.1 |
| SUSE:Linux Enterprise Server 12 SP4-LTSS | u-boot-rpi3 | 0 | 2018.03-4.9.1 |
| SUSE:Linux Enterprise Server 12 SP5 | u-boot | 0 | 2019.01-5.11.1 |
| SUSE:Linux Enterprise Server 12 SP5 | u-boot-rpi3 | 0 | 2019.01-5.11.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | u-boot | 0 | 2019.01-150100.7.16.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | u-boot | 0 | 2019.01-150100.7.16.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | u-boot-rpi3 | 0 | 2019.01-150100.7.16.1 |
| SUSE:Linux Enterprise Server 15 SP2-BCL | u-boot | 0 | 2020.01-150200.10.15.1 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | u-boot | 0 | 2020.01-150200.10.15.1 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | u-boot-rpiarm64 | 0 | 2020.01-150200.10.15.1 |
| SUSE:Linux Enterprise Server 15-LTSS | u-boot | 0 | 2018.03-150000.4.11.1 |
| SUSE:Linux Enterprise Server 15-LTSS | u-boot-rpi3 | 0 | 2018.03-150000.4.11.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | u-boot | 0 | 2019.01-5.11.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | u-boot-rpi3 | 0 | 2019.01-5.11.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | u-boot | 0 | 2018.03-150000.4.11.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | u-boot | 0 | 2019.01-150100.7.16.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | u-boot | 0 | 2020.01-150200.10.15.1 |
| SUSE:Manager Proxy 4.1 | u-boot | 0 | 2020.01-150200.10.15.1 |
| SUSE:Manager Retail Branch Server 4.1 | u-boot | 0 | 2020.01-150200.10.15.1 |
| SUSE:Manager Server 4.1 | u-boot | 0 | 2020.01-150200.10.15.1 |
| Ubuntu:16.04:LTS | u-boot | 0 | No fix |
| Ubuntu:18.04:LTS | u-boot | 0 | 2020.10+dfsg-1ubuntu0~18.04.3 |
| Ubuntu:20.04:LTS | u-boot | 0 | 2021.01+dfsg-3ubuntu0~20.04.5 |
| Ubuntu:22.04:LTS | u-boot | 0 | 2022.01+dfsg-2ubuntu2.3 |
| Ubuntu:Pro:16.04:LTS | u-boot | 0 | No fix |
| openSUSE:Leap 15.3 | u-boot | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-avnetultra96rev1 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-bananapim64 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-dragonboard410c | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-dragonboard820c | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-evb-rk3399 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-firefly-rk3399 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-geekbox | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-hikey | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-khadas-vim | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-khadas-vim2 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-libretech-ac | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-libretech-cc | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-ls1012afrdmqspi | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-mvebudb-88f3720 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-mvebudbarmada8k | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-mvebuespressobin-88f3720 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-mvebumcbin-88f8040 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-nanopia64 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-odroid-c2 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-odroid-c4 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-odroid-n2 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-orangepipc2 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-p2371-2180 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-p2771-0000-500 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-p3450-0000 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-pine64plus | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-pinebook | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-pinebook-pro-rk3399 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-pineh64 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-pinephone | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-poplar | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-rock-pi-4-rk3399 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-rock64-rk3328 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-rock960-rk3399 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-rockpro64-rk3399 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-rpi3 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-rpi4 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-rpiarm64 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-xilinxzynqmpgeneric | 0 | 2020.01-150200.10.15.1 |
| openSUSE:Leap 15.3 | u-boot-xilinxzynqmpvirt | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.3 | u-boot-xilinxzynqmpzcu102rev10 | 0 | 2021.01-150300.7.15.1 |
| openSUSE:Leap 15.4 | u-boot | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-avnetultra96rev1 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-bananapim64 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-dragonboard410c | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-dragonboard820c | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-evb-rk3399 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-firefly-rk3399 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-geekbox | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-hikey | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-khadas-vim | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-khadas-vim2 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-libretech-ac | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-libretech-cc | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-ls1012afrdmqspi | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-mvebudb-88f3720 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-mvebudbarmada8k | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-mvebuespressobin-88f3720 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-mvebumcbin-88f8040 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-nanopia64 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-odroid-c2 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-odroid-c4 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-odroid-n2 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-orangepipc2 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-p2371-2180 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-p2771-0000-500 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-p3450-0000 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-pine64plus | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-pinebook | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-pinebook-pro-rk3399 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-pineh64 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-pinephone | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-poplar | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-rock-pi-4-rk3399 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-rock-pi-n10-rk3399pro | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-rock64-rk3328 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-rock960-rk3399 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-rockpro64-rk3399 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-rpi3 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-rpi4 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-rpiarm64 | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-xilinxzynqmpgeneric | 0 | 2020.01-150200.10.15.1 |
| openSUSE:Leap 15.4 | u-boot-xilinxzynqmpvirt | 0 | 2021.10-150400.4.8.1 |
| openSUSE:Leap 15.4 | u-boot-xilinxzynqmpzcu102rev10 | 0 | 2021.10-150400.4.8.1 |
Related vulnerabilities
- CVE-2024-42040 Buffer Overflow vulnerability in the net/bootp.c in DENEX U-Boot from its initial commit… Also affects u-boot
- CVE-2022-2347 There exists an unchecked length field in UBoot. Also affects u-boot
- CVE-2022-30790 Das U-Boot 2022.01 has a Buffer Overflow, a different issue than CVE-2022-30552. Also affects u-boot
- CVE-2022-30552 Das U-Boot 2022.01 has a Buffer Overflow. Also affects u-boot
- CVE-2026-111497 A buffer overflow vulnerability in the Brotli decoder (c/dec/decode.c) in Google Brotli… CWE-787
- CVE-2026-112397 Pillow is a Python imaging library. CWE-787
- CVE-2026-112059 libLAS through 1.8.1 contains a heap out-of-bounds write vulnerability in the point… CWE-787
- CVE-2026-89088 A flaw was found in parted. CWE-787