Bug 2453118 (CVE-2025-66038)

Summary: CVE-2025-66038 OpenSC: OpenSC: Memory corruption via improper compact-TLV length validation
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: low Docs Contact:
Priority: low    
Version: unspecifiedKeywords: Security
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in OpenSC, an open-source smart card tools and middleware. The `sc_compacttlv_find_tag` function, which searches compact-TLV (Tag-Length-Value) buffers, does not adequately verify the claimed value length against the remaining buffer size. This vulnerability allows attackers to provide specially crafted untrusted data, such as from smart cards or files, to influence the function to return pointers outside of the intended memory boundaries. Subsequent attempts to dereference these out-of-bounds pointers can lead to memory corruption, potentially impacting the stability and integrity of the system.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2453191    
Bug Blocks:    

Description OSIDB Bzimport 2026-03-30 18:01:48 UTC
OpenSC is an open source smart card tools and middleware. Prior to version 0.27.0, sc_compacttlv_find_tag searches a compact-TLV buffer for a given tag. In compact-TLV, a single byte encodes the tag (high nibble) and value length (low nibble). With a 1-byte buffer {0x0A}, the encoded element claims tag=0 and length=10 but no value bytes follow. Calling sc_compacttlv_find_tag with search tag 0x00 returns a pointer equal to buf+1 and outlen=10 without verifying that the claimed value length fits within the remaining buffer. In cases where the sc_compacttlv_find_tag is provided untrusted data (such as being read from cards/files), attackers may be able to influence it to return out-of-bounds pointers leading to downstream memory corruption when subsequent code tries to dereference the pointer. This issue has been patched in version 0.27.0.