Arbitrary `/tmp` read in discourse via `convert_heif!` decoder-confusion (regression of 4bf3bf6786)
该报告还没有中文解读。
原文摘录
摘自原文(12162 字符中的一小部分)
`convert_heif!` shells `magick` without `prepend_decoder!`, so ImageMagick dispatches by magic bytes. A `.heic` starting with `%!PS-Adobe` routes through the PostScript coder → Ghostscript (`-dSAFER`), which runs attacker PostScript: read any `/tmp` file with `file`/`readstring`, enumerate with …
原文中的代码
# app/models/optimized_image.rb:198
IM_DECODERS = /\A(jpe?g|png|ico|gif|webp|avif|svg)\z/i
# :200
def self.prepend_decoder!(path, ext_path = nil, opts = nil)
…
if !extension || !extension.match?(IM_DECODERS)
raise Discourse::InvalidAccess.new("Unsupported extension: #{extension}")
end …默认不展示报告全文。以上为简短摘录,完整复现过程请阅读原文。版权归研究员与 Discourse 所有。
时间线
- 报告提交
- 公开披露
阅读 HackerOne 原文 ↗作者 @fizzi · 版权归作者与 Discourse 所有