PR

図6●JAVAで開発されたあるWebサイトで発見された脆弱性の例
[画像のクリックで拡大表示]

 図6は実在するWebサイトが使用しているフレームワークや利用コンポーネントが抱えている脆弱性を調べたものである。フレームワークとして先般話題になったStruts1が利用されているほか、脆弱性を抱えた多くのコンポーネントを利用している。このように「利用コンポーネントの脆弱性」は、OWASP Top10のリストの2013年度版でTop10入り(A-9)した。現在、この層で実際の攻撃が大々的に確認されていないため噴出しているわけではないが、今後どうなるかは未知数だ。

 このような調査はOWASP(Open Web Application Security Project)が公開している「dependency check」というツールでできる。機会があれば稼働させている自身のサイト状況をチェックしてほしい。

脆弱性との付き合い方

 最後に、このような脆弱性にどのように付き合っていくべきかを述べよう。

 まずは、脆弱性の存在を前提にしたアーキテクチャの採用が求められる。特に、OSS(オープンソース)を組み込んだフレームワークや製品を使用している場合、そのOSSの脆弱性が公開されると、即座に攻撃されると考えたほうがよい。

 こうした情報はPoC(proof of concept)と呼ばれる脆弱性の検証方法も同時に公開されることが多く、攻撃に悪用されやすい。それだけに、情報収集は怠れない。OSSはコストが安い分、自分で守ることが前提なのである。影響の回避や緩和のためには、事前にWAFなどを導入しておくべきだ。

 今回の場合、Struts1がEOLとなっていたことに多くの人の目が向いていたが、問題の本質はOSSを使用する際のリスクの認識にあった。メリットと利用するための必要な条件を理解して取り組みたい。