Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious Code 128 barcode input
-
ExploitSubmit to ZBar-based scanning application
-
ExecutionTrigger negative signed left-shift UB in decode6()
-
ImpactAbort UBSan trap build with SIGILL (DoS)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Calculation correctness
|
| Exploitation Conditions | Exploitation requires (1) an application that embeds ZBar at the vulnerable commit (2ea2ca58) with Code 128 decoding active, (2) the attacker's ability to supply a crafted Code 128 barcode for scanning (user interaction / passive input feed, UI:R), and (3) most significantly, a build compiled with trap-mode UndefinedBehaviorSanitizer (UBSan), since the SIGILL abort only triggers in that configuration. These are strong limiting factors: it is local (AV:L), not network-reachable, needs the victim to process attacker-supplied input, and the deterministic crash depends on a non-default sanitizer build typically used only in development, testing, or fuzzing rather than production. |
| Impact | This is a genuinely low-priority issue despite a moderate CVSS 5.5. The provided vector (CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H) correctly captures a local, user-interaction-dependent denial of service with no confidentiality or integrity impact. All signals point the same direction: EPSS is very low (0.15%, 3rd percentile), the CVE is NOT on CISA KEV, and no exploit is flagged. Critically, the description itself caps real-world impact - the SIGILL crash manifests specifically in 'trap-mode UBSan builds,' which are development/testing/fuzzing configurations, NOT typical production deployments. In an ordinary optimized build the left-shift of a negative signed value is undefined behavior but will usually not deterministically crash the process, so the A:H rating overstates production availability impact; a real-world A:L is more defensible. The signals are consistent and non-conflicting, so there is no contradiction to flag - rather, the caveat is that the A:H impact is build-configuration-dependent, which the raw CVSS score does not surface. |
| Exploit ScenarioDerived | An attacker crafts a malicious Code 128 barcode (image or data stream) and gets it scanned by an application that embeds ZBar built with UBSan trap mode enabled. When decode_e() returns -1 for the invalid edge pattern, decode6() left-shifts the negative value, triggering undefined behavior that aborts the process with SIGILL and denies service. The referenced GitHub issue (#336) likely contains reproduction details, but no packaged public exploit is indicated in the input data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 06, 2026
A crafted Code 128 barcode can abort ZBar (commit 2ea2ca58) with SIGILL when the library is built with trap-mode UndefinedBehaviorSanitizer, because decode_e() returns -1 for an invalid edge pattern and decode6() then left-shifts that negative signed value while assembling the edge signature. The issue is local and requires the victim to feed attacker-supplied barcode input into a ZBar-embedding application (UI:R), and the deterministic crash only occurs in non-default sanitizer builds typically used for development, testing, or fuzzing; production binaries compiled without trap-mode UBSan are not expected to terminate reproducibly. With an EPSS score of only 0.15% (3rd percentile), no KEV listing, and no publicly available exploit code identified at time of analysis, this is a low-priority, sanitizer-configuration-dependent robustness bug rather than a broadly exploitable denial-of-service flaw.
RemediationAI
No vendor-released patch identified at time of analysis; the only upstream pointer in the references is GitHub issue https://github.com/mchehab/zbar/issues/336, which should be monitored for a merged fix and tagged release, and the NVD record https://nvd.nist.gov/vuln/detail/CVE-2026-88371 should be watched for an updated version mapping. Because the deterministic SIGILL abort only manifests in trap-mode UndefinedBehaviorSanitizer builds, the most direct mitigation for deployed binaries is to stop building production, test, or fuzzing targets with trap-mode UBSan (-fsanitize-trap=undefined, or UBSAN_OPTIONS=halt_on_error=1) for the ZBar decode path; the trade-off is that this suppresses the symptom rather than correcting the arithmetic, and it hides the underlying defect from future sanitizer runs. A code-level fix is straightforward if you maintain a fork: validate the decode_e() result before shifting in decode6() (skip or reject the edge signature when the sentinel -1 is returned, or perform the shift on an explicitly unsigned value), which eliminates the UB at its source with no functional loss for valid Code 128 symbols. Where Code 128 is not a required symbology, disabling that decoder (for example by restricting the enabled symbology set in the embedding application so Code 128 scanning is inactive) removes the reachable code path entirely, at the cost of losing Code 128 support for legitimate scanning; conversely, treating all scanned barcode payloads as untrusted input and scanning only trusted or physically controlled media reduces attacker-supplied-input exposure but is impractical for consumer scanning workflows. Restricting who can submit input to a ZBar-embedding process remains a useful compensating control given the local, user-interaction-dependent (AV:L, UI:R) nature of the flaw.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ZBar is a barcode and QR code scanning library used both standalone (zbarimg, zbarcam) and embedded in applications on desktop and mobile platforms. The Code 128 decoder resolves edge transitions between bar and space modules through helper functions: decode_e() computes an edge-to-module ratio and returns -1 as an error sentinel when the observed pattern is invalid, and decode6() consumes that value to build a packed edge signature. In the vulnerable commit, decode6() performs a left shift on the signed -1 result without first validating it, and shifting a negative signed integer is undefined behavior under the C standard - the root cause class captured by CWE-682 (Incorrect Calculation). On typical production compilers the expression simply evaluates to an implementation-defined bit pattern, but when the code is compiled with UndefinedBehaviorSanitizer in trap mode (for example -fsanitize=undefined with trap or halt_on_error semantics), the runtime converts the UB into an immediate SIGILL abort, turning a benign arithmetic mistake into a denial of service. The CPE string supplied with the record is an uninformative n/a placeholder, and the EUVD affected-version entry is likewise n/a, so the precise affected release range cannot be derived from the feed data; the affected artifact is best identified as ZBar source at or derived from commit 2ea2ca58, with the upstream issue tracked at GitHub issue 336.
Know when Zbar gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Local crafted input with victim interaction (AV:L/UI:R), no auth (PR:N); availability lowered to A:L because the SIGILL crash only occurs in non-default UBSan trap builds, not production.
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
2DescriptionCVE.org
ZBar commit 2ea2ca58 contains an undefined-behavior vulnerability in the Code 128 decode6() function. When processing specially crafted Code 128 input, decode_e() can return -1 for an invalid edge pattern, and decode6() subsequently left-shifts this negative signed value while constructing the edge signature. The operation invokes undefined behavior and can terminate trap-mode UBSan builds with SIGILL, resulting in denial of service.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
A stack-based buffer overflow vulnerability exists in the lookup_sequence function of ZBar 0.23.90. Rated critical sever
A heap-based buffer overflow exists in the qr_reader_match_centers function of ZBar 0.23.90. Rated critical severity (CV
Same weakness CWE-682 – Incorrect Calculation
View allSame technique Denial Of Service
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Desktop 15 SP7 | Affected |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Affected |
| SUSE Linux Enterprise Server 15 SP7 | Affected |
| SUSE Linux Enterprise Server 16.0 | Affected |
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| openSUSE Leap 16.0 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP5 | Affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Affected |
| SUSE Linux Enterprise Desktop 15 SP4 | Affected |
| SUSE Linux Enterprise Desktop 15 SP5 | Affected |
| SUSE Linux Enterprise Desktop 15 SP6 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP4 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Affected |
| SUSE Linux Enterprise Real Time 15 SP4 | Affected |
| SUSE Manager Proxy 4.3 | Affected |
| SUSE Manager Retail Branch Server 4.3 | Affected |
| SUSE Manager Server 4.3 | Affected |
| openSUSE Leap 15.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
| SUSE Linux Enterprise Server for NVIDIA 16.1 | Affected |
EUVD-2026-86270
GHSA-437j-8v4m-47vv
NVD
CVE.org
EPSS
Exploit-DB