不当な NUL 文字挿入によって意図しないファイルが生成されうる脆弱性について (CVE-2012-4522)
Posted by usa on 12 Oct 2012
ファイル名の途中に NUL 文字を挿入することにより、意図しない名前のファイルを生成しうる脆弱性が発見されました。 この問題は CVE-2012-4522 として報告されているものです。
詳細
Ruby は NUL 文字を通常の文字と同様に String の一部として取り扱うことができますが、一方で、OS や各種ライブラリでは NUL 文字は文字列の終端として取り扱われるケースが多々あります。 従って、Ruby インタプリタと外部のライブラリ等とのやり取りに際しては、都度、NUL 文字を適切に取り扱う必要が発生します。 しかし、IO#open などのファイルオープン系メソッドにおいて、NUL 文字を処理しないままファイル名をライブラリに引き渡していたため、以下の例のように意図しない名前のファイルを生成することが可能となっていました。
p File.exists?("foo") #=> false
open("foo\0bar", "w") { |f| f.puts "hai" }
p File.exists?("foo") #=> true
p File.exists?("foo\0bar") #=> raises ArgumentError
影響のあるバージョン
- Ruby 1.9.3 p286 以前のバージョン
- Ruby trunk r37163 以前のリビジョン
解決策
新しいバージョンにアップグレードして下さい。
クレジット
この脆弱性は Peter Bex 氏により報告されました。
更新履歴
- 2012-10-16 08:56:39 (JST) CVE について追記
- 2012-10-12 19:13:15 (JST) 初版
最近のニュース
Ruby 3.3.12 リリース
Ruby 3.3.12 がリリースされました。
Posted by hsbt on 16 Jul 2026
Ruby 3.4.10 リリース
Ruby 3.4.10 がリリースされました。
Posted by nagachika on 30 Jun 2026
Ruby 4.0.2 リリース
Ruby 4.0.2 がリリースされました。
Posted by k0kubun on 16 Mar 2026
Ruby 3.4.9 リリース
Ruby 3.4.9 がリリースされました。
Posted by nagachika on 11 Mar 2026