Possible local file disclosure in Active Storage video previews and analysis
Published: November 04, 2026
SECURITY IDENTIFIERS
- GHSA: GHSA-3f4q-8x5m-76v8
- Vendor Advisory: https://github.com/rails/rails/security/advisories/GHSA-3f4q-8x5m-76v8
GEM
FRAMEWORK
SEVERITY
CVSS v3.x: 3.7 (Low)
PATCHED VERSIONS
~> 8.0.5, >= 8.0.5.2
>= 8.1.4.1
DESCRIPTION
Impact
Active Storage's VideoPreviewer, VideoAnalyzer and AudioAnalyzer run
ffmpeg and ffprobe on a blob's contents without restricting the input
format, so FFmpeg selects a demuxer by probing the file. A blob created
through a direct upload keeps the content type the client declared, so a
client can store an HLS playlist under a video/* or audio/* type. When
that blob is previewed or analyzed, the hls demuxer opens the file://
segments that the playlist names, and the preview image or the stored metadata
could disclose a local media file that the application process can read and
whose path the attacker knows.
Applications that accept uploads from untrusted users and generate video previews, or analyze video or audio attachments with FFmpeg, are affected.
Details
The fixed releases limit the formats FFmpeg may open to common audio and video
containers, configured by the new
config.active_storage.ffmpeg_allowed_formats setting. Files in other formats
no longer preview or receive media metadata; the Active Storage CHANGELOG
names some of them and shows how to add a format to the list.
Workarounds
Applications that cannot upgrade can stop Active Storage from running FFmpeg
on uploaded files by removing ActiveStorage::Previewer::VideoPreviewer from
config.active_storage.previewers, and
ActiveStorage::Analyzer::VideoAnalyzer and
ActiveStorage::Analyzer::AudioAnalyzer from
config.active_storage.analyzers.
Releases
The fixed releases are available at the normal locations.
Patches for those who cannot upgrade at once:
- 8.1: https://github.com/rails/rails/commit/3b1f2627538dc597cd973530c08514a26c2b0282.patch
- 8.0: https://github.com/rails/rails/commit/69aff80d115bbb9d1e82fd6c6f2fd3ddeafb958b.patch
Credit
This issue was responsibly reported by HackerOne researcher w3rmut.
RELATED
- https://rubygems.org/gems/activestorage/versions/8.1.4.1
- https://github.com/rails/rails/releases/tag/v8.1.4.1
- https://rubygems.org/gems/activestorage/versions/8.0.5.2
- https://github.com/rails/rails/releases/tag/v8.0.5.2
- https://github.com/rails/rails/commit/3b1f2627538dc597cd973530c08514a26c2b0282
- https://github.com/rails/rails/commit/69aff80d115bbb9d1e82fd6c6f2fd3ddeafb958b
- https://github.com/rails/rails/security/advisories/GHSA-3f4q-8x5m-76v8
