「携帯電話向けWebアプリの脆弱性事情」に統計数値で答える

ケータイWebアプリの脆弱性問題は、私の専門分野であるので、もう少し突っ込んでみたいと思う。
高木浩光氏の高木浩光@自宅の日記 - 携帯電話向けWebアプリの脆弱性事情はどうなっているのか

携帯電話Webアプリのセキュリティが怪しいという話はいろいろな人から耳にするが、携帯の世界では秘密保持契約による縛りがあって、皆それらを話せない状態になっているようだ。その結果として、脆弱性の実態が明らかにならないばかりか、正しい実装方法の普及が進まない。

この問いかけに対して、技術論ではなく、脆弱性検査を実施した結果の統計情報で回答する。
というには、私の勤務先では、まさにケータイ向けWeb脆弱性診断をやっていて、昨年一年間の脆弱性傾向の統計を発表しているからだ。
https://www.kccs.co.jp/contact/paper_websecurity/index.html
このホワイトペーパーは上記からダウンロードしていただきたいのだが、ここでは概要を紹介しよう。

ホワイトペーパーでは、PC向けの通常のWebサイトと、携帯電話向けのWebサイトをわけて統計をとっている。これによると、危険度の高い脆弱性を持つサイトの割合は、それぞれ以下のようになっている。

PC / ケータイ 危険度Critical 危険度High Critical+High
PC向け 48% 30% 78%
ケータイ向け 20% 43% 63%

ここで、Criticalな脆弱性とは、現実のサイトで侵入や情報漏えいなどがの悪用手順が明らかになった脆弱性、Highは悪用手順までは明らかになっていないが、悪用に直結する脆弱性である。Critical脆弱性は、ネットワークセキュリティでいうところのペネトレーション検査(侵入検査)で侵入に成功したものに相当する。

さらに、Critical脆弱性の内訳を脆弱性パターンで分類してみると、以下のようになる。

PC / ケータイ ワースト1 ワースト2 ワースト3
PC向け XSS(56%) SQLインジェクション(11%) 権限昇格(11%)
ケータイ向け XSS(30%) セッション管理の問題(30%) SQLインジェクション(10%)

このような結果から何が言えるだろうか?

まず、ケータイサイトとPCサイトでは、重大な脆弱性を持つ割合としてはケータイ向けサイトの方が少しだけ低い(安全)ということになる。やはり、ケータイサイトの方が色々と「悪用手順」が限られる・・・というのは、ネットワーク的な制約、ケータイとPCの機能差、ケータイ向けブラウザの機能制限(JavaScriptが使えないなど)ために、「あぁ、ここでJavaScriptが使えればもっと色々悪いことができるのに」というもどかしさは、ケータイ向けサイトの方にある。

しかし、Critical+Highの合計値で、PC:78%、ケータイ:63%という数値は「大差ない」とも言えるわけで、上記のようなケータイの「低機能ゆえの安全さ」があるにもかかわらず、両者に大差がないという現実からは、Webアプリケーションの「作り」という点では、ケータイ向けの方が「雑な」作りになっているといえなくもないだろう。

また、注目すべきは、ケータイ向けサイトのCritical脆弱性の中で、「セッション管理の問題」が30%を占めている点である。高木氏の元の記事は、まさにケータイ向けWebアプリケーションのセッション管理に対する懸念であるわけで、その懸念は現実のものになっていると言わざるを得ない。
ケータイ向けWebアプリケーションの脆弱性診断をしていて思うのは、自己流の作りになっているケースが多いということで、未熟な設計により脆弱性が混入しているケースが多いことになる。これは、ケータイ向けのWebアプリケーションの歴史が浅く、まだまだ定石的な手法が浸透していないからというのが、その理由になっていると思う。