CVE-2020-24994
📋 TL;DR
CVE-2020-24994 is a stack overflow vulnerability in libass's parse_tag function that allows remote attackers to cause denial of service or execute arbitrary code via crafted subtitle files. This affects applications using vulnerable versions of libass for subtitle rendering. Users of media players, video editors, or other software that processes ASS/SSA subtitle files are at risk.
💻 Affected Systems
- libass
- Applications using libass (e.g., FFmpeg, VLC, mpv, HandBrake, various media players)
📦 What is this software?
Libass by Libass Project
⚠️ Risk & Real-World Impact
Worst Case
Remote code execution with the privileges of the application using libass, potentially leading to full system compromise.
Likely Case
Application crash causing denial of service, disrupting media playback or processing.
If Mitigated
No impact if patched version is used or if untrusted subtitle files are blocked.
🎯 Exploit Status
Proof-of-concept exploit code is available in GitHub issues. Exploitation requires the victim to open a malicious subtitle file.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: libass 0.15.0 and later
Vendor Advisory: https://github.com/libass/libass/security/advisories/GHSA-5q2r-92pq-9f9q
Restart Required: Yes
Instructions:
1. Update libass to version 0.15.0 or later. 2. For Linux distributions, use package manager: 'sudo apt update && sudo apt upgrade libass' (Debian/Ubuntu) or 'sudo yum update libass' (RHEL/CentOS). 3. For applications using embedded libass, update the application to a version with patched libass. 4. Restart affected applications.
🔧 Temporary Workarounds
Block untrusted subtitle files
allPrevent processing of subtitle files from untrusted sources.
Use application sandboxing
linuxRun media players in sandboxed environments to limit impact.
firejail vlc
bwrap --dev-bind / / --proc /proc --dev /dev --ro-bind /usr /usr vlc
🧯 If You Can't Patch
- Disable subtitle support in vulnerable applications if possible.
- Implement strict file validation to reject malformed ASS/SSA files before processing.
🔍 How to Verify
Check if Vulnerable:
Check libass version: 'pkg-config --modversion libass' or 'ldconfig -p | grep libass'. If version is below 0.15.0, it's vulnerable.
Check Version:
pkg-config --modversion libass 2>/dev/null || echo 'libass not found'
Verify Fix Applied:
Confirm libass version is 0.15.0 or higher using the same commands.
📡 Detection & Monitoring
Log Indicators:
- Application crashes with segmentation faults when opening subtitle files
- Stack overflow errors in application logs
Network Indicators:
- Downloads of subtitle files from untrusted sources followed by application crashes
SIEM Query:
EventID=1000 OR EventID=1001 (Application Crash) AND ProcessName contains ('vlc' OR 'mpv' OR 'ffmpeg') AND CommandLine contains '.ass' OR '.ssa'
🔗 References
- https://github.com/libass/libass/commit/6835731c2fe4164a0c50bc91d12c43b2a2b4e
- https://github.com/libass/libass/issues/422
- https://github.com/libass/libass/issues/422#issuecomment-806002919
- https://github.com/libass/libass/issues/423
- https://github.com/libass/libass/commit/6835731c2fe4164a0c50bc91d12c43b2a2b4e
- https://github.com/libass/libass/issues/422
- https://github.com/libass/libass/issues/422#issuecomment-806002919
- https://github.com/libass/libass/issues/423