「Shellshock」と呼ばれるバグをめぐる状況は非常に流動的で複雑なため、内部関係者でさえ全てを正しく理解するのに苦労している。このQ&Aは、このバグ(正しくは「複数のバグ」)と、それらへの対策を理解するのに役立つだろう。
このQ&Aを主に執筆したのは、FireEyeのセキュリティリサーチエンジニアであるMichael Lin氏である。FireEyeは、企業や政府のネットワークを脅威から守るためのリサーチや、セキュリティ製品を提供している。
Shellshockとは何か
Shellshockは、コマンドラインインタプリタ(「シェル」とも呼ばれる)である「Bash」(Bourne Again SHell)に存在するバグの通称だ。Bashシェルは、「Linux」系OSの大半、「UNIX」系OSの多く、「BSD」系OSのいくつか、そしてAppleの「OS X」(10.3以降)を含む、多くのOSのデフォルトのコマンドラインインタプリタとして広く配布されている。
Bashシェルはまた、「Windows」から「Android」まで、他の多くのシステムでも使われている可能性がある。しかしこうしたシステムでは、デフォルトでインストールされたり、使用されたりはしていない。
初期のShellshockバグ(「CVE-2014-6271」)が報告されて以来、Bashにおける関連のバグは、さまざまな研究者によって発見されている。この中で最も影響を与えているのが依然としてCVE-2014-6271であり、これ以降でShellshockについて言及する場合、特に明記がない限りはこのCVE-2014-6271を指すものとする。
脆弱性の影響を受けやすいのは誰か
理論上は、Bashの全ユーザーが脆弱性の影響を受けやすい。しかし、インターネットに接続したBashユーザーのみが、リモートエクスプロイトにさらされている。さらに、攻撃者がBashに到達できる経路が用意されるには、特定のソフトウェアが必要だ。
インターネットサーバを稼動するシステムが最も影響を受けやすく、標的とされる可能性が高い。Bashをパーソナルコンピュータ上で使っているホームユーザーも、信頼できないネットワーク(公衆Wi-Fiアクセスポイントなど)を利用している場合には、攻撃にさらされる可能性がある。
「Windows」、「Mac OS」、「iOS」または「Android」を使っている平均的なインターネットユーザーは、少なくともデフォルト状態ではこの脆弱性の影響を受けない。しかし、そうしたユーザーが信頼しているインターネットサーバが侵害されると、そのサーバによるクライアントへの攻撃が助長される可能性があり、サーバ上にあるユーザーの機密データが攻撃者にさらされかねない。
このバグはどこに存在するのか
バグはBashの解析コードに存在する。Bashが、その初期化シーケンスの間に、環境変数の解析をする方法の中にエラーがある。環境変数を操作できるあらゆるものが、この脆弱性に対する攻撃ベクトルになる可能性がある。
どのように脆弱性の影響を受けるのか
Bashのバグによって、攻撃者は、本物のユーザーと同じコマンドを実行することが可能になる。これによって、攻撃に成功した攻撃者は、ユーザーにできることならほぼ何でもできるようになる。リモートの攻撃ベクトルにアクセスできるようになった攻撃者は、リモートからシステムに認証なしでBashコマンドを注入できるようになる。
この攻撃者は(少なくとも当初は)Bashインスタンスを実行しているユーザーの特権レベルに限定されていることに留意してほしい。しかし、いったんユーザーのシステム内に足がかりを作ってしまえば、攻撃者は、特権昇格を行い潜在的にルートアクセスを得るための選択肢を、いくつも手にすることになる。