CVE-2023-49100
Medium · 4.4CVSS
4.4
EPSS
0.2%
Published
Feb 21, 2024
CISA due date
—
Cloudanix analysis
A bug in ARM firmware lets highly privileged attackers on the same device crash the system by sending bad commands, though nothing is stolen.
- Exploitation
- Local Privilege
- Attacker needs
- High Privilege
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- Firmware
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Out-of-bounds read in the SDEI service of TF-A (EL3) due to insufficient validation of the x1 register parameter passed to plat_ic_get_interrupt_type in sdei_interrupt_bind, enabling a root-privileged Normal World attacker to issue arbitrary SMC calls that control x0-x6 and crash TF-A without data leakage.
Why it matters to the business
Potential denial-of-service on ARM-based systems using affected TF-A versions, leading to firmware crashes and system unavailability; low immediate risk given absence from KEV and stable low EPSS but still requires patching to maintain platform integrity.
How an attack unfolds
An attacker first compromises the Linux kernel to obtain root privileges in the Normal World, then crafts and issues arbitrary SMC calls that bypass checks in plat_ic_is_sgi, passing invalid x1 values into sdei_interrupt_bind to trigger out-of-bounds reads in TF-A and induce a crash.
How to fix it
Upgrade arm-software/arm-trusted-firmware to commit b6c0948400594e3cc4dbb5a4ef04b815d2675808 or later (version 2.10+); validate the fix by confirming the commit is present in the build and re-test SDEI interrupt binding paths.
How to confirm the fix worked
Inspect TF-A build logs or binary for the presence of commit b6c0948400594e3cc4dbb5a4ef04b815d2675808; attempt to reproduce the original crash with crafted SMC inputs after upgrade to confirm the out-of-bounds condition is eliminated.
Typical attack path
- Gain root access in the Normal World Linux kernel
- Issue arbitrary SMC calls controlling registers x0 through x6
- Invoke sdei_interrupt_bind with an unvalidated x1 parameter that passes plat_ic_is_sgi checks
- Trigger plat_ic_get_interrupt_type on an out-of-bounds address in EL3 context
- Cause TF-A crash without returning data to non-secure memory
How to detect it
Review EL3 firmware crash logs and SDEI service entries for repeated invalid interrupt bind attempts or unexpected exceptions originating from plat_ic_get_interrupt_type; correlate with root-level processes issuing SMC calls.
What your security team should do
- Prioritize firmware upgrade to the fixed commit across all affected ARM platforms
- Monitor system logs for unexpected TF-A EL3 crashes or SDEI-related exceptions
- Restrict SMC call issuance from the Normal World where possible through platform configuration
- Include TF-A version checks in secure boot and attestation processes
The record
Trusted Firmware-A (TF-A) before 2.10 has a potential read out-of-bounds in the SDEI service. The input parameter passed in register x1 is not validated well enough in the function sdei_interrupt_bind. The parameter is passed to a call to plat_ic_get_interrupt_type. It can be any arbitrary value passing checks in the function plat_ic_is_sgi. A compromised Normal World (Linux kernel) can enable a root-privileged attacker to issue arbitrary SMC calls. Using this primitive, he can control the content of registers x0 through x6, which are used to send parameters to TF-A. Out-of-bounds addresses can be read in the context of TF-A (EL3). Because the read value is never returned to non-secure memory or in registers, no leak is possible. An attacker can still crash TF-A, however.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Alpine:v3.18 | arm-trusted-firmware | 0 | 2.8.14-r0 |
| Alpine:v3.19 | arm-trusted-firmware | 0 | 2.8.14-r0 |
| Alpine:v3.20 | arm-trusted-firmware | 0 | 2.8.14-r0 |
| Debian:11 | arm-trusted-firmware | 0 | No fix |
| Debian:12 | arm-trusted-firmware | 0 | No fix |
| Debian:13 | arm-trusted-firmware | 0 | 2.10.0+dfsg-1 |
| Ubuntu:20.04:LTS | arm-trusted-firmware | 0 | No fix |
| Ubuntu:22.04:LTS | arm-trusted-firmware | 0 | No fix |
| Ubuntu:24.04:LTS | arm-trusted-firmware | 0 | 2.10.0+dfsg-1 |
| Ubuntu:Pro:20.04:LTS | arm-trusted-firmware | 0 | No fix |
Related vulnerabilities
- CVE-2022-47630 Trusted Firmware-A through 2.8 has an out-of-bounds read in the X.509 parser for parsing… Also affects arm-trusted-firmware
- CVE-2021-40327 Trusted Firmware-M (TF-M) 1.4.0, when Profile Small is used, has incorrect access control. Also affects arm-trusted-firmware
- CVE-2026-92824 A flaw was found in libmodulemd. CWE-125
- CVE-2026-114038 A flaw was found in device-mapper-multipath. CWE-125
- CVE-2026-112896 Pillow is a Python imaging library. CWE-125
- CVE-2026-112278 rdesktop through 1.9.0 contains a heap out-of-bounds read vulnerability in… CWE-125
- CVE-2026-112273 libtins through 4.6 contains a heap out-of-bounds read vulnerability in DNS::compose_name… CWE-125
- CVE-2026-112073 A vulnerability was identified in Tencent ncnn up to 44b02dabdcf97499281a4692ebd65bad73dc… CWE-125