2018年5月15日
株式会社Doctor Web Pacific
2018年1月に、脆弱性情報ID番号1 000 001( CVE-2018-1000001 )に関するニュースが浮上しました。
報道各社は通常、ぽかんとあいた抜け道を通してタンクを動かしたというようなことでも(たとえその後、その大きな穴がやぶで覆われ、そして長期間使用されていないままになるようなものだとしても)、人をひきつけるようなキャッチフレーズを使って相手をその物語に引き込みます。今回我々は、そういった方法をとらず、そのIDの脆弱性について、読者に普通に伝えていきたいと思います。
この脆弱性 ( CVE-2018-1000001 )はGlibcで発見され、相対パスがシステム関数 getcwd() によって返されたときに発生します。
getcwd() は不完全なパスを返し、その一部を "(到達不能)"で置き換えることができ、 realpath() を呼び出すが、"到達不能"で止まることはありませんが、この処理を正しく処理できず、メモリ内のパスのルートディレクトリを探します。 また、パス名中の冗長要素( "/./"、 "/../"、 "//")は、正規のパスを得るためにパス文字列から日常的に削除されるため、割り当てられたバッファサイズの関数は "(到達不能)"で停止せず、バッファの開始前にメモリ内のデータを解析し続けます。 バッファが逆順で塗りつぶされているので、 "/../"を含むシンボリックリンクを処理するために realpath() を取得すると、バッファの先頭より前に目的のメモリ領域にポインタを移動させることができ、パス文字列の断片が書き込まれますこの領域はバッファの外側にあります。
この脆弱性を発見した研究者は、脆弱性プロトタイプを思いつきました。
ではこれを簡単な言葉で説明していきます。相対パス名と絶対パス名が存在します。 絶対パス名は C:\Windows です。 絶対パス名を使用すると、ファイルまたはディレクトリの正確な場所が明確になります。 一方、相対パス名はルートディレクトリから始まらず、代わりに現在のユーザーの場所から始まり、 ".."で始めることができます。 これは、別のディレクトリに移動する必要がある場合など、さまざまな状況で便利になる可能性があります。
問題は、相対パス名を絶対パス名に変換する必要があるときです。 対応する関数が呼び出されると、絶対パスがどれくらい長いのかを知る方法がなく、割り当てられたバッファを超える可能性があります。 また、攻撃者の指示に従って、特定のデータを提供した場合、特定のプログラムがバッファ内のデータを処理することも可能ですが、バッファの境界を超えてしまう可能性があります。 これがバッファオーバーフロー攻撃の仕組みです。
しかし、この脆弱性に別の問題が発生しました。 getcwd()を、現在の作業ディレクトリへのフルパスを特定の長さの文字列としてコピーしたパス検索関数は、パスの一部が取得できない("到達不能")と返してきました。 getcwd() を使用したコマンドは、その可能性について考慮せず、引き続き絶対パス名を検索し、文字列境界の外側に移動させました。
これは、プロジェクトのさまざまな部分を担当するコマンドが非協調的な方法で動作してしまう典型的な状況です。
当然、脆弱性パッチがリリースされました。
興味深い事がわかりました。
セキュリティ監査による、脆弱性を収束させるためのセキュリティアップデートがインストールされていないシステムで、最も古いバージョンは平均で108ヵ月(9年間)前のものでした。
最も古い脆弱性に関する情報 (CVE-1999-0024) は17年以上前に公開され、再帰的なクエリがDNSサーバーに許可されていたためにリリースされました。 攻撃者はこの脆弱性を悪用してサービスの否認を引き起こしている可能性があります。
脆弱性を発見し、セキュリティパッチがリリースされても、インストールされることもなくそのままになっているということは良くありますよね。 サーバーは17~18年間稼動しましたが、誰も更新プログラムの存在に気づかず、インストールもされませんでした。
ちなみに、情報セキュリティの成果や失敗を表彰するオスカーのような賞が存在します。
ラスベガスで開催されたブラックハット会議では、 Pwnie Awards 2017式典が開催され、その中で最も顕著な情報セキュリティ上の欠陥や失敗が発表されました。
最も過大なセキュリティ警告として、インターネットとマスコミで最も広く知られているセキュリティ問題が受賞しました。特に実際のセキュリティ問題を、実際の攻撃に活用することはできませんでした。 候補には以下が含まれていました。
- Dirty Cow (CVE-2016-5195) - Linuxのローカル権限昇格の問題で、定期的に発見されている他の問題とよく似ています。 しかし、他の類似の脆弱性とは異なり、Dirty Cowは独自のサイト、ロゴ、Twitterアカウントを所有しています。
- Cryptsetup の問題 (CVE-2016-4484) は、攻撃が物理的に近接した攻撃者によってのみ促進される可能性があるというだけだという事実にもかかわらず、その理由を超えて悪魔化したからでした。
- Wannacryのキルスイッチを発見した研究者は、メディアによって英雄と人類の救世主として描かれました。
- オーバーレイ画面を表示する権限を持つ特定のアプリケーションをユーザーがインストールする必要があるため、Webサイトも作成されたCloakおよびDagger攻撃は実行できません。
Tell us what you think
To ask Doctor Web’s site administration about a news item, enter @admin at the beginning of your comment. If your question is for the author of one of the comments, put @ before their names.
Other comments