POJIA破甲
地图 / Arbitrary `/tmp` read in discourse via `convert_heif!` decoder-confusion (regression of 4bf3bf6786)

Arbitrary `/tmp` read in discourse via `convert_heif!` decoder-confusion (regression of 4bf3bf6786)

信息泄露 / 信息泄露 / #3738834

厂商
Discourse
严重程度
低危
赏金
—
弱点
信息泄露
研究员
@fizzi
披露日期
2026-10-26
资产
https://github.com/discourse/discourse
CVE
—

该报告还没有中文解读。

原文摘录

摘自原文(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 所有

同类报告

Confidential data of users and limited metadata of programs and reports accessible via GraphQLHackerOne · 2019-02-03Sensitive user information disclosure at bonjour.uber.com/marketplace/_rpc via the 'userUuid' parameterUber · 2019-09-09The /reports/:id.json endpoint discloses potentially sensitive user attributes when reporter summary is presentHackerOne · 2025-04-01Customer private program can disclose email any users through invited via usernameHackerOne · 2020-05-15 · $7,500Access to multiple production Grafana dashboardsSnapchat · 2020-11-04 · $10,000Open prod Jenkins instanceSnapchat · 2017-08-19 · $15,000