CVE-2023-39327
Medium · 4.3CVSS
4.3
EPSS
0.6%
Published
Jul 13, 2024
CISA due date
—
Cloudanix analysis
A malicious image can make image-handling software run in a loop that uses up processing power and fills up log files, slowing or stopping normal operations.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerability triggers an unbounded loop that repeatedly emits warning messages when a specially crafted image is processed by the OpenJPEG decoder.
Why it matters to the business
Systems that accept or render untrusted images may experience high CPU usage and excessive log output, degrading performance or causing service disruption until the process is terminated.
How an attack unfolds
An attacker supplies a maliciously constructed image file to any application using the vulnerable OpenJPEG library; the decoder enters a tight warning loop that consumes CPU and fills logs, achieving a denial-of-service condition.
How to fix it
Upgrade to a patched version of OpenJPEG once released by the upstream project or apply vendor updates for Red Hat Enterprise Linux when available; in the interim, restrict processing of untrusted image files or sandbox the decoder process.
How to confirm the fix worked
Confirm the installed OpenJPEG version against the latest upstream or distribution advisories; test with known trigger images in a lab environment to verify the loop no longer occurs; monitor process resource usage under load.
Typical attack path
- Identify a target application that uses OpenJPEG to decode images
- Craft or obtain a malicious image that triggers repeated warning output
- Deliver the image via network upload, email attachment, or web request
- Observe sustained high CPU and log growth on the target
How to detect it
Search application and system logs for repeated identical warning messages from the OpenJPEG library; correlate with spikes in CPU usage or image-processing worker restarts; inspect inbound image uploads for files that trigger excessive output in test environments.
What your security team should do
- Prioritize patching OpenJPEG on all internet-facing or multi-tenant systems that decode images
- Implement content-type and size validation before passing images to the decoder
- Add resource limits or timeouts around image-processing workers
- Review logging configuration to prevent log-volume DoS from warning floods
The record
A flaw was found in OpenJPEG. Maliciously constructed pictures can cause the program to enter a large loop and continuously print warning messages on the terminal.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Chainguard | openjpeg-dev | 0 | 2.5.4-r0 |
| Chainguard | openjpeg-tools | 0 | 2.5.4-r0 |
| Debian:11 | openjpeg2 | 0 | No fix |
| Debian:12 | openjpeg2 | 0 | No fix |
| Debian:12 | openjpeg2 | 0 | 2.5.0-2+deb12u1 |
| Debian:13 | openjpeg2 | 0 | No fix |
| Mageia:9 | openjpeg2 | 0 | 2.5.0-1.1.mga9 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | openjpeg2 | 0 | 2.3.0-150000.3.24.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP6 | openjpeg | 0 | 1.5.2-150000.4.15.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP7 | openjpeg | 0 | 1.5.2-150000.4.15.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP7 | openjpeg2 | 0 | 2.3.0-150000.3.24.1 |
| Ubuntu:14.04:LTS | openjpeg | 0 | No fix |
| Ubuntu:16.04:LTS | blender | 0 | No fix |
| Ubuntu:16.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:16.04:LTS | texmaker | 0 | No fix |
| Ubuntu:18.04:LTS | blender | 0 | No fix |
| Ubuntu:18.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:18.04:LTS | qtwebengine-opensource-src | 0 | No fix |
| Ubuntu:18.04:LTS | texmaker | 0 | No fix |
| Ubuntu:20.04:LTS | blender | 0 | No fix |
| Ubuntu:20.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:20.04:LTS | openjpeg2 | 0 | No fix |
| Ubuntu:20.04:LTS | openjpeg2 | 0 | 2.3.1-1ubuntu4.20.04.2 |
| Ubuntu:20.04:LTS | qtwebengine-opensource-src | 0 | No fix |
| Ubuntu:20.04:LTS | texmaker | 0 | No fix |
| Ubuntu:22.04:LTS | blender | 0 | No fix |
| Ubuntu:22.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:22.04:LTS | openjpeg2 | 0 | No fix |
| Ubuntu:22.04:LTS | openjpeg2 | 0 | 2.4.0-6ubuntu0.1 |
| Ubuntu:22.04:LTS | qtwebengine-opensource-src | 0 | No fix |
| Ubuntu:22.04:LTS | texmaker | 0 | No fix |
| Ubuntu:24.04:LTS | blender | 0 | No fix |
| Ubuntu:24.04:LTS | openjpeg2 | 0 | No fix |
| Ubuntu:24.04:LTS | openjpeg2 | 0 | 2.5.0-2ubuntu0.1 |
| Ubuntu:24.04:LTS | qtwebengine-opensource-src | 0 | No fix |
| Ubuntu:24.04:LTS | texmaker | 0 | No fix |
| Ubuntu:24.10 | blender | 0 | No fix |
| Ubuntu:24.10 | openjpeg2 | 0 | 2.5.0-2ubuntu1 |
| Ubuntu:24.10 | qtwebengine-opensource-src | 0 | No fix |
| Ubuntu:24.10 | texmaker | 0 | No fix |
| Ubuntu:25.04 | blender | 0 | No fix |
| Ubuntu:25.04 | openjpeg2 | 0 | 2.5.0-2ubuntu1 |
| Ubuntu:25.04 | qtwebengine-opensource-src | 0 | No fix |
| Ubuntu:25.04 | texmaker | 0 | No fix |
| Ubuntu:25.10 | blender | 0 | No fix |
| Ubuntu:25.10 | qtwebengine-opensource-src | 0 | No fix |
| Ubuntu:25.10 | texmaker | 0 | No fix |
| Ubuntu:Pro:14.04:LTS | openjpeg | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | blender | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | ghostscript | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | ghostscript | 0 | 9.26~dfsg+0-0ubuntu0.16.04.14+esm9 |
| Ubuntu:Pro:16.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | openjpeg | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | openjpeg2 | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | openjpeg2 | 0 | 2.1.2-1.1+deb9u6ubuntu0.1~esm4 |
| Ubuntu:Pro:16.04:LTS | texmaker | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | blender | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | ghostscript | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | ghostscript | 0 | 9.26~dfsg+0-0ubuntu0.18.04.18+esm4 |
| Ubuntu:Pro:18.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | openjpeg2 | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | openjpeg2 | 0 | 2.3.0-2+deb10u2ubuntu0.1~esm2 |
| Ubuntu:Pro:18.04:LTS | qtwebengine-opensource-src | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | texmaker | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | blender | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | insighttoolkit4 | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | qtwebengine-opensource-src | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | texmaker | 0 | No fix |
| Wolfi | openjpeg-dev | 0 | 2.5.4-r0 |
| Wolfi | openjpeg-tools | 0 | 2.5.4-r0 |
| openSUSE:Leap 15.6 | openjpeg | 0 | 1.5.2-150000.4.15.1 |
| openSUSE:Leap 15.6 | openjpeg2 | 0 | 2.3.0-150000.3.24.1 |
| openSUSE:Leap 16.0 | openjpeg2 | 0 | 2.5.3-160000.3.1 |
| openSUSE:Tumbleweed | openjpeg2 | 0 | 2.5.4-2.1 |
Related vulnerabilities
- CVE-2023-39329 A flaw was found in OpenJPEG. Also affects openjpeg-dev
- CVE-2023-39328 A vulnerability was found in OpenJPEG similar to CVE-2019-6988. Also affects openjpeg-dev
- CVE-2024-56827 A flaw was found in the OpenJPEG project. Also affects openjpeg2
- CVE-2024-56826 A flaw was found in the OpenJPEG project. Also affects openjpeg2
- CVE-2017-17480 In OpenJPEG 2.3.0, a stack-based buffer overflow was discovered in the pgxtovolume… Also affects openjpeg2
- CVE-2016-10506 Division-by-zero vulnerabilities in the functions opj_pi_next_cprl, opj_pi_next_pcrl, and… Also affects openjpeg2
- CVE-2016-9112 Floating Point Exception (aka FPE or divide by zero) in opj_pi_next_cprl function in… Also affects openjpeg2
- CVE-2022-2831 A flaw was found in Blender 3.3.0. Also affects blender