CVE-2023-4232: Ofono: sms decoder stack-based buffer overflow remote code execution vulnerability within the decode_status_report() function
A flaw was found in ofono, an Open Source Telephony on Linux. A stack overflow bug is triggered within the decodestatusreport() function during the SMS decoding. It is assumed that the attack scenario is accessible from a compromised modem, a malicious base station, or just SMS. There is a bound check for this memcpy length in decodesubmit(), but it was forgotten in decodestatusreport().
Other sources
ofono is a Open Source Telephony on Linux stack overflow bug is triggered within the decodestatusreport() function during SMS decoding here assumed that the attack scenario is accessible from a compromised modem or possibily accessible from a malicious base station or just SMS
there is a bound check for this memcpy length in decodesubmit(), but they forgot it in decodestatusreport() this is a variant from ZDI-CAN-20971 partial code path is here - atcmtnotify() - ofonosmsdelivernotify() - smsdecode() - decodestatusreport()
~~~C++ static gboolean decodestatusreport(const unsigned char pdu, int len, struct sms out) { ... if (out->statusreport.pi & 0x04) { int expected;
if (!nextoctet(pdu, len, &offset, &out->statusreport.udl)) return FALSE;
expected = smsudlinbytes(out->statusreport.udl, out->statusreport.dcs);
if ((len - offset) < expected) return FALSE;
memcpy(out->statusreport.ud, pdu + offset, expected); // overflow here, expected is from SMS PDU }
return TRUE; } ~~~
ASAN report ================================================================= ==118708==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fffffffe26c at pc 0x7ffff7849846 bp 0x7fffffffdf50 sp 0x7fffffffd6f8 WRITE of size 224 at 0x7fffffffe26c thread T0 #0 0x7ffff7849845 in interceptormemcpy ../../../../src/libsanitizer/sanitizercommon/sanitizercommoninterceptors.inc:827 #1 0x555555940bb5 in decodestatusreport src/smsutil.c:1077 #2 0x55555594449c in smsdecode src/smsutil.c:1571 #3 0x5555558e008d in main src/main.c:225 #4 0x7ffff742350f in libcstartcallmain ../sysdeps/nptl/libcstartcallmain.h:58 #5 0x7ffff74235c8 in libcstartmainimpl ../csu/libc-start.c:381 #6 0x55555567f274 in start (/root/ofono/src/ofonod+0x12b274)
Address 0x7fffffffe26c is located in stack of thread T0 at offset 316 in frame #0 0x5555558dfedd in main src/main.c:205
This frame has 1 object(s): [48, 316) 'sms1' (line 212) <== Memory access at offset 316 overflows this variable HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork (longjmp and C++ exceptions are supported) SUMMARY: AddressSanitizer: stack-buffer-overflow ../../../../src/libsanitizer/sanitizercommon/sanitizercommoninterceptors.inc:827 in interceptormemcpy Shadow bytes around the buggy address: 0x10007fff7bf0: 00 00 f1 f1 f1 f1 f1 f1 01 f2 04 f3 f3 f3 00 00 0x10007fff7c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 0x10007fff7c10: f1 f1 04 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 0x10007fff7c20: 00 00 00 00 00 00 f1 f1 f1 f1 f1 f1 00 00 00 00 0x10007fff7c30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =>0x10007fff7c40: 00 00 00 00 00 00 00 00 00 00 00 00 00[04]f3 f3 0x10007fff7c50: f3 f3 f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 0x10007fff7c60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x10007fff7c70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x10007fff7c80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x10007fff7c90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb ==118708==ABORTING
— Red Hat
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2023-4232?
CVE-2023-4232 has been classified with a medium severity level due to the potential for a stack overflow during SMS decoding.
How do I fix CVE-2023-4232?
To mitigate CVE-2023-4232, update to ofono version 2.1 or higher for Red Hat and ensure Debian versions are updated beyond 2.12-1 and 1.31-3.
What are the potential attack vectors for CVE-2023-4232?
CVE-2023-4232 can be exploited through a compromised modem, a malicious base station, or by sending specially crafted SMS messages.
Which software versions are affected by CVE-2023-4232?
CVE-2023-4232 affects ofono versions prior to 2.1 on Red Hat and versions up to 1.31-3 and 2.12-1 on Debian.
Is CVE-2023-4232 being actively exploited?
At this time, there are no confirmed active exploits for CVE-2023-4232, but the vulnerability presents a serious risk if left unpatched.