水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > ITproのセキュリティ検定がヤバイ

ITproのセキュリティ検定がヤバイ

2008年11月6日(木曜日)

ITproのセキュリティ検定がヤバイ

更新: 2008年11月7日1時55分頃

こんなのがあったのですね。「ITpro EXPO検定---全11分野で,あなたのIT理解度はいかに? (itpro.nikkeibp.co.jp)」。

セキュリティ検定の解説もあったので見てみましたが、超難問が3問ほどあったので、独自に解説してみます。

問題2

Webブラウザを狙うクロスサイト・スクリプティングは,どのような問題点によって起こるでしょうか。

A) クライアントOSの弱点(ぜい弱性)

B) Webブラウザを使うユーザーの油断

C) Webブラウザの弱点(ぜい弱性)

D) Webサーバーの弱点(ぜい弱性)

以上、セキュリティ検定の解説【問題2】 より

「WebサーバやWebブラウザにもクロスサイトスクリプティング脆弱性がある」という知識を問う問題ですね。XSSというと普通はWebアプリケーションの問題ですが、WebブラウザやWebサーバに問題がある場合もあります。

XSSは、攻撃者の用意したスクリプト等が他のドメインで動作すること全般を指します。ブラウザに問題がある場合、「攻撃者の用意したスクリプトがローカルで実行されてしまう」という強烈なセキュリティホールが発生することがありますが、これもクロスサイトスクリプティングの一種と考えられています。

ブラウザのXSS脆弱性は、当然ながらブラウザ側の問題ですので、ブラウザ側に修正が入ることになります。実際、過去にそのような修正は何度も行われています。最近ですと、Operaの「Advisory: The links panel can allow cross-site scripting (www.opera.com)」が記憶に新しいですね。

WebサーバにXSS脆弱性が存在するケースもあります。良くあるのはエラーページの出力内容がエスケープされていないというものです。最近はさすがに枯れてきた感がありますが、mod_imapのXSS (jvn.jp)などは去年の話ですね。

というわけで、CとDはどちらも正解に見えますが、問題文では、「Webブラウザを狙う」と限定されています。Webサーバに対するXSSでは、Cookieの奪取、フィッシングサイトの表示などが行われますが、ローカル権限でWebブラウザ自体を制御したりするような攻撃は不可能です。ブラウザの脆弱性を突くような攻撃をすれば……と思うかもしれませんが、そのような攻撃は攻撃者自身が用意した悪意あるサイトにアクセスさせれば十分で、WebサイトのXSSとは関係なく実行できます。悪意あるサイトに誘導する目的でXSSが利用される事はありますが、それは単に誘導の手段に使われているだけで、XSSによって攻撃されているわけではありません。

WebブラウザにXSS脆弱性がある場合には、その脆弱性を利用されてWebブラウザが制御されてしまうようなこともあり得ます。よって、Cが正解となります。

問題3

Webブラウザを狙う攻撃を避けるために,次のうちで最も効果的な方法はどれでしょうか。

A) アダルト・サイトなどへのアクセスを避ける

B) ウイルス対策ソフトをきちんと運用する

C) JavaScriptが動作しないようにブラウザの設定を変える

D) ActiveXが動作しないようにブラウザの設定を変える

以上、セキュリティ検定の解説【問題3】 より

超難問です。どう見ても正解が存在しません。

Webブラウザを狙う攻撃を避けるために重要なのは、なんといってもセキュリティアップデートでしょう。それを怠っていればJS無効だろうがActiceX無効だろうがやられてしまいます。しかし、選択肢にはこれがなく、頼りない厳しい選択肢ばかりです。

どれも不正解だと思いますが、この中から「最も」効果がありそうなものということであえて選ぶなら、アンチウィルスソフトでしょうか。「きちんと運用」している前提なので、既知の攻撃コードを検出して防いでくれることをある程度期待できると思います。たとえば、カカクコム事件はNOD32が反応したのが発覚のきっかけでしたが、このときNOD32はトロイの木馬を検出し、感染を防いだわけです。

ちなみに、このとき悪用されたのはMS04-013 (www.microsoft.com)で、そもそもセキュリティアップデートをきちんと行っていれば感染しなかったわけですが……。MS04-013はマイコンピュータゾーンでスクリプトが実行されてしまう脆弱性なので、マイコンピュータゾーンのスクリプトを無効にできれば防げますが、そんなことは普通はできません。レジストリ改造で無理矢理無効にすることはできますが、そうするとWindowsの機能が使えなくなったりします。そんなマニアックな設定をしている暇があったらパッチを当てるべきでしょう。

というわけで、あえて選ぶならBかなぁと。もちろん、アンチウィルスで全てが防げるわけではありませんが、「スクリプト無効」とか「ActiveX無効」とかに比べれば、攻撃を防げる確率は高いのではないですかね。

※私は普段スクリプトもActiveXも無効にしていますが、これで攻撃が防げるとは思っていません。そもそも、一般の人にお勧めできないですしね。……一般の人に気軽にお勧めできるという意味では、意外と「アダルト・サイトなどへのアクセスを避ける」が有力な気もしてきたなぁ。:-)

問題6

ブラウザへの攻撃では,攻撃者はユーザーを悪質なサイトに誘導し,悪質なプログラムを送り付けます。これを防ぐ策として有効なのはどれでしょうか。

A) FirefoxなどInternet Explorer以外のブラウザを使う

B) URLフィルタリングで悪質サイトへのアクセスを遮断する

C) IDS/IPS(侵入検知/防御システム)を導入する

D) 認証機能を持つプロキシ・サーバーを導入する

以上、セキュリティ検定の解説【問題6】 より

ああ、Dは「改ざんWebサイト対抗にHTTPプロキシ/認証プロキシの導入を――専門家が提言 (itpro.nikkeibp.co.jp)」の話ですね。これ、元の記事が微妙なのだと思いますが、勘違いしている人が結構多いような気がします。

「認証機能を持つプロキシ・サーバー」を導入しても、ユーザは普通に認証して普通に通信し、普通にファイルをダウンロードできます。マルウェアも攻撃コードも普通にダウンロードできますから、感染を回避することはできません。

ただ、「認証機能を持つプロキシ・サーバー」を通すようにすると、感染済みのマルウェアが外部と通信することが難しくなります。最近のマルウェアは外部と独自に通信して情報を送受信したり、追加モジュールをダウンロードしたりすることがあります。マルウェアが自前でHTTPを喋って外部と通信する場合、「認証機能を持つプロキシ・サーバー」を通ることができませんから、通信に失敗します。

そして、中には「初回感染時にはダウンロード機能しか存在せず、危険な機能は全部追加モジュールになっている」というタイプのマルウェアが存在します。こういうタイプのマルウェアの場合、ダウンロードを阻止されると「ダウンロードを試みる」以外に悪意ある活動ができなくなりますので、活動を抑え込むことができるわけです。

ただし、この場合でもマルウェアにはしっかり感染していることに注意してください。単独でちゃんと活動できるマルウェアもありますし、ダウンロードを試みられるだけでも十分迷惑です。

※また、ユーザが一度認証を通れば、ブラウザからの通信はできるということに注意が必要です。マルウェアがブラウザをコントロールして通信するようにプログラムされていれば、外部と通信できてしまいます。「認証機能を持つプロキシ・サーバー」が一般的になれば、マルウェア側が対応してくるだけではないかと言われています。

というわけで、選択肢Dはマルウェアが感染してしまった後の活動を妨害する施策なのです。マルウェアの感染自体を防ぐ施策ではありませんので、注意が必要です。

さて、この問題では「悪質なプログラムを送り付け」られることを防ぐ策を質問しています。説明したとおりDでは防げませんし、AとCは論外ですから、消去法でBの「URLフィルタリング」となりますが……これもかなり微妙で、焼け石に水程度の効果しかないと思います。正解なしとしたいところですが、どうしても一つ選ぶのであればBしかありません。

……ここで講評 (itpro.nikkeibp.co.jp)を読むと、もう何というか、見事に引っかけ問題に引っかかっている感じなのですね。

問題2の講評

問題2は「クロスサイト・スクリプティング」という攻撃手法を正しく理解しているかを確認する内容である。クロスサイト・スクリプティングは,ユーザーのブラウザを介して,悪意のスクリプトをぜい弱性のあるWebサイトに送り込む攻撃である。そのパソコンに保存されている個人情報を第三者に転送したりできるという特徴がある。

クロスサイト・スクリプティングが起こる原因となる問題点を聞いたら,正解である「Webサーバーの弱点」が46.2%,「Webブラウザの弱点」が45.1%が拮抗(きっこう)していた。攻撃の仕組みから,「ブラウザに問題あり」と間違えやすいといえる。

うわぁ。「パソコンに保存されている個人情報を第三者に転送したりできる」……って、普通のXSSではそんなことは不可能です。それこそ、ブラウザにXSSがあって、ローカルでスクリプトが動作してしまう場合にのみ可能な攻撃ですね。

DNS Rebindingによって127.0.0.1でスクリプトを動作させる技も考えられますが、それもサーバの脆弱性ではなく、DNS Rebindingを許すクライアント側の問題です。いずれにしても「ブラウザの脆弱性」として良いでしょう。

問題3の講評

問題3も間違えやすかった。Webブラウザへの攻撃を避けるための最も効果的な方法を聞いたところ,「ウイルス対策ソフトをきちんと適用する」が37.4%と最も多かった。確かにウイルス対策ソフトの適用は不可欠である。しかし,ウイルスは多種多様であり,ゼロデイ攻撃も多発している。

正解は,「JavaScriptを動作しないように設定する」である(正答率30.0%)。Webブラウザを狙う攻撃の多くは,JavaScriptを悪用する。たとえば,IFRAMEタグを使い,サイズがゼロのフレームを作り,ここで悪質なJavaScriptを実行させる攻撃が流行している。サイズがゼロなので,ユーザーには見えないが,ブラウザ上でせっせと悪さをする。このような攻撃を防ぐには,JavaScriptを実行させないようにする。

「ウイルスは多種多様であり、ゼロデイ攻撃も多発している」という文章を「攻撃手法は多種多様であり、スクリプトに依存しない攻撃も多発している」と書き換えれば結論が180度変わりますね。

いつも思うのですけれど、スクリプト無効って誰でもそんな簡単に運用できるのでしょうか。サイトにアクセスして真っ白の画面が出たとき、ソースを見て「これはスクリプトを有効にすれば動く」という判断ができる人なら運用できると思うのですが、そうでないと厳しいと思うのですよね。HTMLやJSのソースコードが読める人ならともかく、普通の人にはちょっとお勧めできないと思うのです。

問題6の講評

確かにURLフィルタリングには,悪質なサイトへのアクセスを防ぐ効果がある。悪質サイトのURLを集めたブラックリストによってアクセスを遮断できる。ただ,攻撃者はボットを埋め込んだ多数のコンピュータをプロキシとして使い,その踏み台を頻繁に切り替えて攻撃を仕掛けてくる。このため,URLフィルタリングでは止めきれないのが実情である。

まあ、確かにBでは「止めきれない」ですが、Dでは「全く止められない」のですから、Bを選ぶよりほかありません。

正解の「認証機能を持つプロキシ・サーバーを導入」は,「悪質なプログラムを送り付ける」ことを防ぐ対策である。悪質なサイトにアクセスしてしまうことを防ぐのは難しい。ならば,そのあとの被害を最小限に抑えようという考え方である。Webサイトにアクセスする際に,プロキシでユーザー認証を必要とするように設定しておく。外部のWebサイトと通信するダウンロードは,この認証でブロックされるため,ウイルスなどの悪意のプログラムが侵入するのを防止できるというわけだ。

これはやはり誤解しているようですね。前半を正しく書き直すと、こうですかね。

不正解の「認証機能を持つプロキシ・サーバーを導入」は,「悪質なプログラムが外部とアクセスする」ことを防ぐ対策である。悪質なプログラムに感染してしまうことを防ぐのは難しい。ならば,そのあとの被害を最小限に抑えようという考え方である。

外部から「悪質なプログラムを送り付ける」ことを防ぐのではなく、感染済みのマルウェアが「悪質なプログラムを取りに行く」ことを防ぐだけです。マルウェアの侵入を防ぐのではなく、侵入してしまった後の活動を妨害することが主眼となっている施策ですので、誤解しないようにしましょう。

正解率は13.7%ということなので、回答者のほとんどは正しく理解できているようで逆に安心ですね。

関連する話題: セキュリティ / ITpro

最近の日記

関わった本など