脆弱性の半数はWebアプリケーションにあり
IPAによる「ソフトウェア等の脆弱性関連情報の取扱いに関する届出状況」では、大きく「ソフトウェア製品」と「Webサイト」に分けて脆弱性の件数を集計しています。
この資料によると、ソフトウェア製品の脆弱性の原因として、図3のグラフのような内容が上位になっています。これを見ると、Webアプリケーションの脆弱性が非常に多く、それだけ攻撃も成立しやすいといえます。また、「その他実装上の不備」に分類されているものが意外と多く、ソフトウェアの開発が複雑で、簡単には脆弱性を見つけられないことが分かります。
![図3 ソフトウェア製品の脆弱性の原因別の届出状況(IPAの資料をもとに作成)](http://cz-cdn.shoeisha.jp/static/images/article/9823/9823_03_s.png)
図3 ソフトウェア製品の脆弱性の原因別の届出状況(IPAの資料をもとに作成)
また、Webサイトの脆弱性の原因は、図4のグラフのようになっています。いずれも古くから指摘されている脆弱性ではありますが、なかなかゼロにはならないのが現実です。
![図4 「Webサイトの脆弱性の種類別の届出状況」(IPAの資料をもとに作成)](http://cz-cdn.shoeisha.jp/static/images/article/9823/9823_04a_s.png)
図4 「Webサイトの脆弱性の種類別の届出状況」(IPAの資料をもとに作成)
脆弱性を狙った攻撃を防ぐには
開発者は脆弱性診断を
ソフトウェアやサービスを提供する企業は、提供を開始する前に「脆弱性診断」を実施します。攻撃者の視点から、さまざまな攻撃を疑似的に実施して脆弱性を発見する方法で、専門的なスキルが必要です。
しかし、脆弱性診断ツールも登場しており、一般的な脆弱性については手軽に調べることもできます。開発者自身でも本来のテストで行う動作確認とあわせて脆弱性が存在しないかチェックしてみることも大切でしょう。
ただし、これですべての脆弱性を見つけられるわけではありません。診断する人のスキルに依存するだけでなく、ツールで処理しても発見できないものはあります。普段からセキュリティを意識した開発を行うだけでなく、WAF(Web Application Firewall)を併用するなど、多重防御を考えておきましょう。
なおWebアプリケーションで脆弱性が見つかった場合は、対応が終わるまでシステムの公開を停止するのが一般的です。脆弱性の内容に応じて対応は変わりますが、常に安全側に倒すことを意識しておきます。
脆弱性に気づいた場合は報告を
自分で開発したプログラムや自社の製品でなくとも、脆弱性に気づくことがあります。例えば、入力フォームに顔文字を入力したところ、入力した内容が正しく表示されなかった。確認してみると、顔文字に含まれる「<」という記号がタグとして認識されていた。調べてみるとクロスサイトスクリプティングの脆弱性が存在した、といった事例はよく見かけました。
このような場合、放置するのではなく、必ず報告するようにしましょう。例えば、IPAには「脆弱性関連情報の届出受付」があります。
また、ソフトウェアの開発会社の中には、Webサイト上で自社製品に対する脆弱性の報告を受け付けている企業もあります。ほかの利用者の被害を防ぐためにも、速やかに報告し、修正してもらいましょう。
単行本化のお知らせ
2016年12月17日に、この連載をベースにした新刊『エンジニアが生き残るためのテクノロジーの授業』が発売されました!
ITとビジネスの関係、コンピュータ、ネットワーク、プログラミング、データベース、セキュリティ、人工知能など、本連載で解説した内容も含め、エンジニアなら誰もが知っておくべきテーマを一冊で学ぶことができます。
IT業界でずっと活躍するために、本物の力を身につけよう。
![](http://cz-cdn.shoeisha.jp/static/images/article/9884/tech_class_cover.png)