A divide-by-zero bug has been identified in the Sony PS2 VPK demuxer within FFmpeg (specifically in `libavformat/vpk.c`). The vulnerability occurs in the `vpk_read_packet` function, where the `vpk->last_block_size` is divided by `par->ch_layout.nb_channels` without checking if `nb_channels` is zero. A malformed VPK header can set `nb_channels` to zero, leading to a SIGFPE (integer divide-by-zero exception) and crashing the application.
The crash is triggered when a fuzzer's custom AVIO path allows the probe/header data and subsequent packet-read data to diverge. While `vpk_read_header` validates `nb_channels > 0`, by the time `vpk_read_packet` executes, `par->ch_layout.nb_channels` can revert to zero from the original fuzz stream. This allows the division operation to proceed with a zero divisor, causing the crash.
This vulnerability is rated as medium severity. It allows a crafted 21-byte input file to crash any FFmpeg-based application that attempts to open a malicious .vpk file or stream. The crash input specifically sets `nb_channels = 0` at header bytes 0x0e–0x11, exploiting the unchecked division.
✨ This summary was generated by AI from the outlets' reporting listed below. It is not independently verified and may contain errors — check the original sources. How BrevFeed works →
One email each morning: the day's tech stories, clustered across outlets and summarized. No account needed.
One email a day. Unsubscribe in one click, any time.
Spend a few minutes, get the whole day. Every topic's top stories in one hands-free rundown — listen, watch, or read the transcript.
▶ Play today's briefNew every morning, and the back catalogue is archived by date.
A divide-by-zero vulnerability was discovered in FFmpeg's VPK demuxer, which can crash any FFmpeg-based application when processing a specially crafted 21-byte VPK file. The issue stems from a lack of validation for `nb_channels` before a division operation, allowing a malformed VPK header to set this value to zero.