多くのサイトで使われるようになったApache Struts。Strutsは関係ないや、と思っているあなたのサイトにも、Apache Strutsが複数インストールされているかもしれません。
2013年3月、ジェイアイエヌが運営するメガネの通販サイト「JINS ONLINE SHOP」が外部からの攻撃を受けたことを皮切りに、さまざまなサイトで「Apache Struts2」の脆弱性を利用した攻撃が発生している。公表されている攻撃は恐らく氷山の一角であり、実際にはもっと多くのサイトが被害に遭っている、もしくは、被害に遭っていることに気付いていない組織もあるのではないかと筆者は考えている。
2013年9月には、奈良県平群町の「あすのす平群ホームページ」内からリンクしている学校図書横断検索システム「探調TOOL」のページ内に、外部から不正アクセスを行ったという声明が挿入される事件があった。
公式の発表では、「原因は探調TOOL公開に使用しているソフトウェア、Apacheが脆弱性を持つバージョンであったため」とある。「Apache」と聞くと「Apache HTTP Server」を連想する方が多いだろう。しかし、Apache HTTP Server単体に関しては、外部から攻撃を行って制御を奪えるような脆弱性、およびその攻撃コードはここ10年ほどリリースされていない。それほどまでに古いApache HTTP Serverを使っていることは絶対にあり得ないとまでは言い切れないが、その可能性は低いと筆者は考え、原因となった探調TOOLについて調査を行った。
調査を行う過程で、稼働中と思われる探調TOOLを発見した。このURLを見て分かる通り、「.action」という拡張子が用いられている。これは慣習的に「Apache Struts」を用いるアプリケーションで指定される拡張子である。さらに、ソースコードを確認すると「struts」という文字列がパス指定でいくつか記載されていた。
これは断定ではないのだが……。
という理由から、探調TOOLでは脆弱性の影響を受けるバージョンのApache Strutsが利用されており、その脆弱性を突かれて、今回の事件に至ったのではないだろうかと考えられる。リリース文で「Apache」と表現されたのは、「Apache HTTP Server」と「Apache Struts」を混同し、「Apache」と表現してしまった可能性が考えられる。
Apache Strutsはさまざまなサイトで利用されている。中には、そもそもApache Strutsがシステム内に存在することを知らなかったり、そのバージョンを把握できていない場合もあるだろう。
筆者は10年以上、ペネトレーションテスト(セキュリティ診断)に関わっている。その経験、観点から、Apache Strutsの脆弱性発見についての懸念と解決策について解説させていただきたい(あくまで筆者の経験・観点であるため、診断を提供している企業の中には筆者の定義が当てはまらないものがある可能性がある。あらかじめご了承いただきたい)。
まずは、セキュリティ診断の種類について簡単に説明させていただく。
セキュリティの診断には大きく分けて「ネットワーク(プラットフォーム)診断」と「Webアプリケーション診断」がある。違いを簡単に説明すると、ネットワーク診断では主にOSやサーバアプリケーションの部分を、Webアプリケーション診断ではその上で動作するアプリケーションのうち、診断依頼者、つまり「顧客が独自に作りこんだアプリケーション」に、セキュリティ上の問題点、脆弱性が存在しないかどうかを診断する。
「顧客が独自に作りこんだアプリケーション」と区別したのは、ネットワーク診断の範囲とWebアプリケーション診断の範囲を可能な限り明確にするためである。例えば、ネットワーク機器やアプライアンス製品の多くはブラウザで設定、管理が可能である。この機能自体がWebアプリケーションであることに間違いはないのだが、「顧客が独自に作りこんだアプリケーション」ではないため、ネットワーク診断の範囲となるのである。
さて、問題のWebアプリケーションフレームワークであるApache Strutsはどちらの検査の範囲となるのだろうか。
勘の良い方はもうお気づきかと思うが、Webアプリケーションフレームワーク自体は「お客様が独自に作りこんだアプリケーション」ではないため、筆者はネットワーク診断の範囲であると考えている。しかし、診断を受ける側である顧客の中には、Webアプリケーション診断の範囲であると考える方もいるのではないだろうか。
もちろん、これは筆者の考えであり、どちらか一方の診断でしか検査してはいけないというものではないため、診断を行う際に診断業者と顧客の間で取り決めをしている場合もあるだろう。筆者が危惧するのは、「Webアプリケーションフレームワークだから、Webアプリケーション診断で見てくれているだろう」という顧客の思い込みと、「説明しなくても分かっているだろう」という診断業者の思い込みがあってはいけないということである。
加えて、ネットワークを介して診断した場合、Apache Strutsは非常に発見しにくい。どのWebアプリケーションでApache Strutsが使われているかが分かりづらい上に、開発時期、開発業者が異なるなどの理由から、1つの診断対象(サーバ)内に複数のApache Strutsが共存している場合も珍しくはない。
一言でいうと、場合によっては、外部からのセキュリティ診断でApache Strutsの脆弱性を発見するのは非効率であるということである。
Apache Strutsの問題は、ネットワーク診断で発見できない場合もあれば、そもそも診ていないという場合もあるかもしれない。診断を受けようとしている方、受けた方は、この点をしっかりと診断業者に確認しておいた方がいいだろう。場合によっては追加料金が発生する可能性があるかもしれないが、この程度のことで追加料金は発生すべきでないと筆者は考えている。
Copyright © ITmedia, Inc. All Rights Reserved.