]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
ofono: fix CVE-2023-4235
authorArchana Polampalli <archana.polampalli@windriver.com>
Fri, 11 Jul 2025 11:33:13 +0000 (17:03 +0530)
committerSteve Sakoman <steve@sakoman.com>
Mon, 14 Jul 2025 16:04:59 +0000 (09:04 -0700)
A flaw was found in ofono, an Open Source Telephony on Linux. A stack overflow bug
is triggered within the decode_deliver_report() 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 decode_submit(), but it was forgotten in decode_deliver_report().

Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
meta/recipes-connectivity/ofono/ofono/CVE-2023-4235.patch [new file with mode: 0644]
meta/recipes-connectivity/ofono/ofono_1.34.bb

diff --git a/meta/recipes-connectivity/ofono/ofono/CVE-2023-4235.patch b/meta/recipes-connectivity/ofono/ofono/CVE-2023-4235.patch
new file mode 100644 (file)
index 0000000..ce03bbd
--- /dev/null
@@ -0,0 +1,37 @@
+From 02aa0f9bad3d9e47a152fc045d0f51874d901d7e Mon Sep 17 00:00:00 2001
+From: "Sicelo A. Mhlongo" <absicsz@gmail.com>
+Date: Wed, 4 Dec 2024 10:18:51 +0200
+Subject: [PATCH] smsutil: check deliver reports fit in buffer
+
+Fixes CVE-2023-4235
+
+CVE: CVE-2023-4235
+Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/ofono/ofono.git/commit/?id=02aa0f9bad3d9e47a152fc045d0f51874d901d7e]
+Signed-off-by: Archana Polampalli <archana.polampalli@windriver.com>
+---
+ src/smsutil.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/smsutil.c b/src/smsutil.c
+index 484bfd0b..ac89f16c 100644
+--- a/src/smsutil.c
++++ b/src/smsutil.c
+@@ -1240,10 +1240,16 @@ static gboolean decode_deliver_report(const unsigned char *pdu, int len,
+                       return FALSE;
+
+               if (out->type == SMS_TYPE_DELIVER_REPORT_ERROR) {
++                      if (expected > (int) sizeof(out->deliver_err_report.ud))
++                              return FALSE;
++
+                       out->deliver_err_report.udl = udl;
+                       memcpy(out->deliver_err_report.ud,
+                                       pdu + offset, expected);
+               } else {
++                      if (expected > (int) sizeof(out->deliver_ack_report.ud))
++                              return FALSE;
++
+                       out->deliver_ack_report.udl = udl;
+                       memcpy(out->deliver_ack_report.ud,
+                                       pdu + offset, expected);
+--
+2.30.2
index 8a298bfaded88ff83300867523d2ff8692ba9a01..a3edf4ab5d194d2160f3c59e990c7e919199b962 100644 (file)
@@ -27,6 +27,7 @@ SRC_URI = "\
     file://CVE-2024-7540_CVE-2024-7541_CVE-2024-7542.patch \
     file://CVE-2024-7537.patch \
     file://CVE-2023-4232.patch \
+    file://CVE-2023-4235.patch \
 "
 SRC_URI[sha256sum] = "c0b96d3013447ec2bcb74579bef90e4e59c68dbfa4b9c6fbce5d12401a43aac7"