不当な 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 4.0.0 リリース
Ruby 4.0.0 が公開されました。 Ruby 4.0 には “Ruby Box”、”ZJIT” ほか多数の改善が含まれています。
Posted by naruse on 25 Dec 2025
サイトのアイデンティティの再設計
サイトの包括的なデザインのアップデートを発表できることを嬉しく思います。今回の更新ではTaeko Akatsukaさんにデザインを担当していただきました。
Posted by Hiroshi SHIBATA on 22 Dec 2025
Ruby 4.0.0 preview3 リリース
Ruby 4.0.0-preview3 が公開されました。
Posted by naruse on 18 Dec 2025
Ruby 4.0.0 preview2 リリース
Ruby 4.0.0-preview2 が公開されました。Ruby 4.0では、Unicodeバージョンの17.0.0へのアップデートなど様々な改善が行われています。
Posted by naruse on 17 Nov 2025