RubyやRubyのOSSの脆弱性を見つけた話の続きの続き
この記事はRuby Advent Calendar 2020 - Qiitaの20日目です。
一昨年(RubyやRubyのOSSの脆弱性を見つけた話 - ooooooo_qの日記)と去年 (RubyやRubyのOSSの脆弱性を見つけた話の続き - ooooooo_qの日記)と同様にRuby関連で今年見つけた脆弱性の話です。
Rails
XSS by file (Active Storage Proxying
)
Rails6.1で導入された機能での脆弱性です。修正されたのが6.1のリリース前だったからかCVEの割当はされていません。Active Storageを使ってS3などに上げた画像をRailsを通して取得できるようにするものでしたが、Content-Disposition: inline
がデフォルトで設定されていたためSVGなどjavascriptが実行できるファイルをアップロードすることでXSSが可能でした。
[CVE-2020-8159] Arbitrary file write/potential remote code execution in actionpack_page-caching
Rails4でコアから外れたactionpack_page-cachingの脆弱性。キャッシュに使うキーがアクセスで使われたURLをもとにしていて、 ..%2f
してやると意図せぬパスにキャッシュが作れました。
パッチの提案を出していたのですが、clean_pathしただけではキャッシュの外には出ないですが他のキャッシュに上書きできてしまっていたのでだめでしたね。
[CVE-2020-8264] Possible XSS Vulnerability in Action Pack in Development Mode
[CVE-2020-8264] Possible XSS Vulnerability in Action Pack in Development Mode
レポートを書くのに1日かかったとてもややこしいものなのですが、この記事の時点ではまだ詳細が公開されていないので省略
rails-ujs/JQuery-ujs
XSS in some browsers · Issue #517 · rails/jquery-ujs · GitHub
Hackeroneに出したところ、Hackeroneのスタッフにはリポジトリの方に出してと言われたので出したんですがそのままになってます。まあ影響あるのはレアケースですね。
Discourse
github.com
またファイルアップロード。ホワイトリストで許可されたタグの中にuse
があり、それを使うとXSSが可能な状態でした。
Cross-Site Scripting (XSS) Cheat Sheet - 2020 Edition | Web Security Academyを見ていて見つけたものです。