Skip to main content

SAIL EUVDEUVD-2026-112083

| CVE-2026-59959 MEDIUM
Divide By Zero (CWE-369)
2026-10-28 GitHub_M
4.8
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Deliver malformed animated WebP to app
  2. Exploit
    Demuxer reports zero canvas width
  3. Execution
    Divide-by-zero in loader init
  4. Impact
    Arithmetic fault aborts process (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Division safety checks
Exploitation Conditions

The target build must include SAIL's built-in WebP codec (the advisory notes vulnerable builds are those compiled with that codec), and the application must accept and decode an attacker-supplied, malformed animated WebP whose container or ANMF frame metadata is inconsistent enough that WebPDemuxGetI returns a zero WEBP_FF_CANVAS_WIDTH; that zero width is then used as a divisor in sail_codec_load_init_v8_webp() before any generic image-skeleton validation in sail_advanced.c. Limiting factors: only SAIL versions <= 1.0.1 are affected (fixed in 1.0.2); builds without the WebP codec are unaffected; the CVSS vector requires passive user interaction (UI:P) - i.e. the victim application must process the file; and impact is confined to availability (a reliable single-process crash) with no confidentiality or integrity consequence and no code execution.

Impact

This is a medium-to-low real-world priority, not a high-urgency item. The only supplied score is CVSS 4.0 (4.8) with vector AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L, i.e. no confidentiality or integrity impact and only limited availability impact (a single-process crash), with a local attack vector and passive user interaction required. The impact ceiling is denial of service via process abort (CWE-369 divide-by-zero); there is no code execution or data exposure. No CISA KEV listing is present, so there is no confirmed active exploitation, and no EPSS probability was provided in the input, so the likelihood-of-exploitation signal is simply missing rather than low - that gap should be stated to decision-makers rather than assumed benign. A public PoC reference (a Python generator script plus full reproduction steps and ASAN FPE output) is included in the GitHub Security Advisory, which raises practical reproducibility even though the input does not formally mark exploit code as confirmed. The vendor/triage Decision label is 'this_month', consistent with a bug worth patching on a normal maintenance cadence rather than an emergency. One signal worth verifying: the supplied 4.0 vector is AV:L, but the description targets 'applications accepting untrusted WebP images' - in a network-facing upload/decoding service the realistic vector could be network-reachable with no per-instance user interaction, which would increase availability exposure; defenders of server deployments should treat the attack surface as remote-reachable even though the documented reproduction is a local CLI decode.

Exploit ScenarioDerived

An attacker crafts a malformed animated WebP whose container/ANMF frame metadata is inconsistent, causing the WebP demuxer to report a zero canvas width, and delivers it to an application that decodes untrusted WebP input using SAIL (<= 1.0.1) built with the WebP codec. When the loader initializes, SAIL divides the computed bytes-per-line by the zero width, raising an arithmetic fault that aborts the process and denies service. A public PoC generator script and step-by-step reproduction (including ASAN FPE output) are published in the GHSA advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 28, 2026

Denial of service in SAIL 1.0.1 and earlier: the built-in WebP decoder performs a divide-by-zero during loader initialization when a malformed animated WebP file causes WebPDemuxGetI to return a zero WEBP_FF_CANVAS_WIDTH, terminating the process before frame decoding or generic image-skeleton validation runs. Only builds compiled with the built-in WebP codec are affected, and an unauthenticated attacker must get a victim application to decode the crafted file (user interaction), with impact confined to availability - no confidentiality, integrity or code-execution consequence, and no CISA KEV listing. Version 1.0.2 fixes the issue; a public PoC reference exists in the vendor advisory (a generator script that patches ANMF metadata of a bundled sample), though it is not verified as working exploit code.

RemediationAI

Upgrade to SAIL 1.0.2, which contains commit 495660135a4c62e416a1b357a4381dd30069229d; the patch adds a demuxer-null check, rejects zero canvas width or height with SAIL_ERROR_INVALID_IMAGE_DIMENSIONS before any division, and derives bytes_per_pixel from sail_bits_per_pixel() instead of the demuxer-supplied row width - see the advisory at https://github.com/HappySeaFox/sail/security/advisories/GHSA-5g8g-g347-84m8 and the v1.0.2 tree at https://github.com/HappySeaFox/sail/tree/v1.0.2. Where upgrading is not immediately possible, the primary compensating control is to build SAIL without the built-in WebP codec (for example by restricting the enabled codecs via SAIL_ONLY_CODECS), which removes the vulnerable path but forfeits WebP decoding support entirely. Applications can additionally pre-screen untrusted WebP input and reject animated files whose demuxed canvas width or height is zero before handing them to SAIL, at the cost of maintaining a separate validation layer ahead of the decoder; the vendor's fix places this validation inside the codec init path so that later generic skeleton checks are not relied upon.

Affected VersionsENISA

sail < 1.0.2

Affected Packages

euvd sail fix: 1.0.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

SAIL is a cross-platform image loading library whose WebP codec plugin wraps libwebp's demux API (WebPDemuxGetI) to read container-level properties such as WEBP_FF_CANVAS_WIDTH and WEBP_FF_CANVAS_HEIGHT before any frame is decoded. In affected builds, sail_codec_load_init_v8_webp() in src/sail-codecs/webp/webp.c assigns the demuxer-reported canvas width to image_local->width, computes bytes_per_line via sail_bytes_per_line(), and then derives webp_state->bytes_per_pixel by dividing that row size by image_local->width. For animated WebP files whose RIFF container or ANMF frame records are internally inconsistent (for example frame offsets/widths that conflict with the declared canvas), the demuxer can legitimately report a canvas width of zero, making that division an integer divide-by-zero - CWE-369. The crash occurs at initialization time and, per the advisory, before the generic skeleton validation performed later in src/sail/sail_advanced.c, so the malformed dimensions are never rejected. The fix adds an explicit demuxer-null check, rejects zero canvas width or height with SAIL_ERROR_INVALID_IMAGE_DIMENSIONS, and replaces the derived division with sail_bits_per_pixel(pixel_format) / 8, removing the arithmetic dependence on demuxer-supplied dimensions entirely.

Know when Sail 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

Vendor (GitHub_M) PRIMARY 4.8 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 3.3 LOW

Attacker needs no privileges (PR:N) but the victim app must process the supplied file (UI:R); documented trigger is local file decode (AV:L); crash yields only limited availability loss (A:L), no C/I impact.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 28, 2026 - 14:03 EUVD

DescriptionCVE.org

SAIL is a cross-platform library for loading and saving images with support for animation, metadata, and ICC profiles. Prior to version 1.0.2, the built-in WebP decoder can crash during loader initialization when processing a malformed animated WebP file with inconsistent container or ANMF frame metadata. In sail_codec_load_init_v8_webp() in src/sail-codecs/webp/webp.c, WebPDemuxGetI with WEBP_FF_CANVAS_WIDTH can return a zero image_local->width, which is then used as a divisor when calculating bytes_per_pixel from the image row size. The division happens before frame decoding and before generic image skeleton validation in src/sail/sail_advanced.c, causing an arithmetic fault and process termination. Applications accepting untrusted WebP images can consequently suffer denial of service; builds must include the affected WebP codec. This issue is fixed in version 1.0.2.

Threat Intelligence Overview

Prevalence
Low
niche cross-platform open-source image library, limited production footprint
Social Media
2
Sightings
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

24
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Sail

View all
CVE-2026-27168 HIGH POC
8.8 Feb 21

The SAIL image library contains a heap buffer overflow in its XWD file parser that fails to validate the bytes_per_line

CVE-2026-40494 CRITICAL
9.8 Apr 18

Heap buffer overflow in SAIL image library's TGA decoder allows remote code execution via malformed RLE-compressed TGA f

CVE-2026-40493 CRITICAL
9.8 Apr 18

Heap buffer overflow in SAIL PSD codec allows remote code execution when processing malicious LAB-mode PSD files. Affect

CVE-2026-40492 CRITICAL
9.8 Apr 18

Out-of-bounds memory access in SAIL image library's XWD codec allows remote attackers to achieve arbitrary code executio

CVE-2025-53510 HIGH POC
8.8 Aug 25

A memory corruption vulnerability exists in the PSD Image Decoding functionality of the SAIL Image Decoding Library v0.9

CVE-2025-53085 HIGH POC
8.8 Aug 25

A memory corruption vulnerability exists in the PSD RLE Decoding functionality of the SAIL Image Decoding Library v0.9.8

CVE-2025-52930 HIGH POC
8.8 Aug 25

A memory corruption vulnerability exists in the BMPv3 RLE Decoding functionality of the SAIL Image Decoding Library v0.9

CVE-2025-52456 HIGH POC
8.8 Aug 25

A memory corruption vulnerability exists in the WebP Image Decoding functionality of the SAIL Image Decoding Library v0.

CVE-2025-50129 HIGH POC
8.8 Aug 25

A memory corruption vulnerability exists in the PCX Image Decoding functionality of the SAIL Image Decoding Library v0.9

CVE-2025-46407 HIGH POC
8.8 Aug 25

A memory corruption vulnerability exists in the BMPv3 Palette Decoding functionality of the SAIL Image Decoding Library

CVE-2025-35984 HIGH POC
8.8 Aug 25

A memory corruption vulnerability exists in the PCX Image Decoding functionality of the SAIL Image Decoding Library v0.9

CVE-2025-32468 HIGH POC
8.8 Aug 25

A memory corruption vulnerability exists in the BMPv3 Image Decoding functionality of the SAIL Image Decoding Library v0

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy