mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-10-21 20:19:33 +00:00
opensc: patch CVE-2026-103531
Details: https://nvd.nist.gov/vuln/detail/cve-2026-103531 (cherry picked from commit 27b41701a04a46e498f7f3f6212ac2a5e2bc8d1a) Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com> Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
1 parent
98e04f2bb7
commit
e255a6d9ae
2 files changed
+55
No files matched your search
@@ -0,0 +1,54 @@
|
|||||||
|
From 4b0f46d922866d9453e3631ff5e0a24900fae8dd Mon Sep 17 00:00:00 2001
|
||||||
|
From: wanglanlan <wanglanlan@users.noreply.github.com>
|
||||||
|
Date: Wed, 2 Sep 2026 08:36:47 +0000
|
||||||
|
Subject: [PATCH] setcos: Fix buffer overflow in setcos_construct_fci_44
|
||||||
|
|
||||||
|
The FCI construction copied type_attr, sec_attr and prop_attr of the
|
||||||
|
file into a fixed 64-byte stack buffer without checking the length.
|
||||||
|
Malicious or corrupted attribute lengths (e.g. prop_attr_len > 64,
|
||||||
|
reachable through fuzz_pkcs15init and attacker-controlled card
|
||||||
|
responses) caused a stack buffer overflow (write).
|
||||||
|
|
||||||
|
Return SC_ERROR_INVALID_DATA if any attribute exceeds the buffer size.
|
||||||
|
|
||||||
|
Found with the fuzz_pkcs15init fuzzer.
|
||||||
|
|
||||||
|
Co-Authored-By: Claude <noreply@anthropic.com>
|
||||||
|
(cherry picked from commit ad730304052937c32b4eb489a06835ac6123632c)
|
||||||
|
|
||||||
|
CVE: CVE-2026-103531
|
||||||
|
Upstream-Status: Backport [https://github.com/OpenSC/OpenSC/commit/ad730304052937c32b4eb489a06835ac6123632c]
|
||||||
|
Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
|
||||||
|
---
|
||||||
|
src/libopensc/card-setcos.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/libopensc/card-setcos.c b/src/libopensc/card-setcos.c
|
||||||
|
index 0ebe7c34f..8c7baa3e4 100644
|
||||||
|
--- a/src/libopensc/card-setcos.c
|
||||||
|
+++ b/src/libopensc/card-setcos.c
|
||||||
|
@@ -218,6 +218,8 @@ static int setcos_construct_fci_44(sc_card_t *card, const sc_file_t *file, u8 *o
|
||||||
|
|
||||||
|
/* Type */
|
||||||
|
if (file->type_attr_len) {
|
||||||
|
+ if (file->type_attr_len > sizeof(buf))
|
||||||
|
+ LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_DATA);
|
||||||
|
memcpy(buf, file->type_attr, file->type_attr_len);
|
||||||
|
sc_asn1_put_tag(0x82, buf, file->type_attr_len, p, *outlen - (p - out), &p);
|
||||||
|
} else {
|
||||||
|
@@ -271,11 +273,15 @@ static int setcos_construct_fci_44(sc_card_t *card, const sc_file_t *file, u8 *o
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Security Attributes */
|
||||||
|
+ if (file->sec_attr_len > sizeof(buf))
|
||||||
|
+ LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_DATA);
|
||||||
|
memcpy(buf, file->sec_attr, file->sec_attr_len);
|
||||||
|
sc_asn1_put_tag(0x86, buf, file->sec_attr_len, p, *outlen - (p - out), &p);
|
||||||
|
|
||||||
|
/* Life cycle status */
|
||||||
|
if (file->prop_attr_len) {
|
||||||
|
+ if (file->prop_attr_len > sizeof(buf))
|
||||||
|
+ LOG_FUNC_RETURN(card->ctx, SC_ERROR_INVALID_DATA);
|
||||||
|
memcpy(buf, file->prop_attr, file->prop_attr_len);
|
||||||
|
sc_asn1_put_tag(0x8A, buf, file->prop_attr_len, p, *outlen - (p - out), &p);
|
||||||
|
}
|
||||||
@@ -14,6 +14,7 @@ DEPENDS = "openssl"
|
|||||||
SRCREV = "19868984dc4dc697af6a86d65ab32a1f19a43ea4"
|
SRCREV = "19868984dc4dc697af6a86d65ab32a1f19a43ea4"
|
||||||
SRC_URI = "git://github.com/OpenSC/OpenSC;branch=master;protocol=https \
|
SRC_URI = "git://github.com/OpenSC/OpenSC;branch=master;protocol=https \
|
||||||
file://0001-Changes-for-OpenSSL-4.0.0.patch \
|
file://0001-Changes-for-OpenSSL-4.0.0.patch \
|
||||||
|
file://CVE-2026-103531.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
CVE_STATUS[CVE-2024-8443] = "fixed-version: this is fixed since 0.26.0"
|
CVE_STATUS[CVE-2024-8443] = "fixed-version: this is fixed since 0.26.0"
|
||||||
|
|||||||
Reference in new issue
Block a user