CVE-2018-8779: UNIX ドメインソケットにおいて NUL 文字挿入により意図しないソケットにアクセスされうる脆弱性について
Posted by usa on 28 Mar 2018
Ruby の標準添付ライブラリである socket のメソッド UNIXServer.open で、ソケット名として指定された文字列中に NUL 文字を挿入しておくことによって、意図しないパス名でソケットが生成されうるという脆弱性が発見されました。
また、同じく UNIXSocket.open メソッドにおいても、ソケット名として指定された文字列に NUL 文字を挿入しておくことによって、意図しないパス名のソケットにアクセスしうるという脆弱性も発見されました。
この脆弱性は、CVE-2018-8779 として登録されています。
詳細
標準添付ライブラリ socket のメソッド UNIXServer.open では、第 1 引数で生成するソケットのパス名を指定します。この際、指定されたパス名中に NUL 文字 (\0) が含まれていた場合、NUL 文字直前でパス名が完結しているとみなして、そのパス名でソケットを生成していました。このため、外部からの入力を UNIXServer.open に与えていた場合、その妥当性をスクリプトで確認していたとしても、意図しないパス名でソケットが生成されうる場合がありました。
また、同様に、UNIXSocket.open においても、第 1 引数でアクセスするソケットのパス名を指定します。この際にも、指定されたパス名中に NUL 文字が含まれていた場合、UNIXServer.open と同様にその直前でパス名が完結しているとみなしてそのパス名でソケットにアクセスしていました。このため、外部からの入力を UNIXSocket.open に与えていた場合、その妥当性をスクリプトで確認していたとしても、意図しないパス名のソケットにアクセスしうる場合がありました。
この問題の影響を受けるバージョンの Ruby のユーザーは、速やかに問題の修正されたバージョンに更新してください。
影響を受けるバージョン
- Ruby 2.2.9 以前の全ての Ruby 2.2 系列
- Ruby 2.3.6 以前の全ての Ruby 2.3 系列
- Ruby 2.4.3 以前の全ての Ruby 2.4 系列
- Ruby 2.5.0
- Ruby 2.6.0-preview1
- revision 62991 より前の開発版
クレジット
この脆弱性情報は、ooooooo_q 氏によって報告されました。
更新履歴
- 2018-03-28 23:00:00 (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