「どう悪用しようか?」攻撃者の目線を知って行うセキュリティ対策
「どう悪用しようか?」攻撃者の目線を知って行うセキュリティ対策

他社のシステムに侵入する『ペネトレーションテスト』を業務とする筆者が、
攻撃者の目線でセキュリティ対策について考えます。

上野 宣 氏

株式会社トライコーダ 代表取締役 上野 宣 氏

奈良先端科学技術大学院大学で情報セキュリティを専攻。2006年に株式会社トライコーダを設立。ハッキング技術を駆使して企業などに侵入を行うペネトレーションテストや各種サイバーセキュリティ実践トレーニングなどを提供。

第9回安全なWebアプリケーションのセオリーとは

すべてのWebサイトは攻撃される可能性がある

今やWebの技術を使わない日はないと言っても過言ではありませんが、皆さまの組織でも何らかのWebサイトを持っているのではないでしょうか。自社の紹介や製品を販売するWebサイトだったり、自社サービスをWebサイトで提供しているところもあるでしょう。

多くのWebサイトはインターネットに向けて公開されていて、不特定多数のユーザーがいつでもアクセスすることができます。当然、攻撃者もいつでもアクセスすることができるわけです。すべてのWebサイトは攻撃される可能性がありますから、有名企業ではなくても、Webサイト上に個人情報がなくても攻撃対象になり得ます。では、攻撃されることで何が起こるのでしょうか?

Webサイトに対する攻撃にはさまざまなものがありますが、今回はWebアプリケーション(以下、Webアプリ)に対する攻撃に注目してみましょう。Webの仕組みを使って提供されるアプリケーションであるWebアプリは、ショッピングサイトやオンラインゲームなどに使われる多機能なものから、企業を紹介するホームページのようなシンプルなWebサイトにも使われていることがあります。

Webアプリへの攻撃は2つに大別され、1つはデータベース内の情報やユーザー情報が窃取されるサーバー上のリソースが被害に遭うタイプ、もう1つはサービスの利用者が被害に遭うタイプです。

攻撃者はサーバー上で何がしたいのか?

サーバー上のリソースが被害に遭うタイプの攻撃で有名なものには「SQLインジェクション」と呼ばれるものがあります。SQLというのは、データベースを操作するための言語です。攻撃者はターゲットのWebアプリの特性を調査して、それに合わせたSQLを組み合わせて送り込むことで、データベースのすべての内容を吸い出したり、改ざんや削除なども可能になります。

Webアプリのセキュリティに関する重大リスクをランキング形式で公開しているレポート『OWASP Top 10 2021 (https://owasp.org/Top10/ja/)』によると、第1位は「アクセス制御の不備」でした。ユーザーに本来与えられた権限を逸脱して行動できるというのが理由です。これを利用することで攻撃者は他人の情報を盗んだり、不正に管理者の権限を得て行動するなどが可能になります。

多くはサーバー上にある情報を盗むことを目的としていますが、攻撃者にとってサーバー上のデータが目的ではない場合もあります。例えば、攻撃拠点の1つとして使うため、単にネット接続された自由に使える端末を手に入れたいときには、そのWebサイトに個人情報などの重要なデータがなくても攻撃対象になることがあります。

攻撃者はわなを張って被害者を待ち構える

サービスの利用者が被害に遭うタイプの攻撃というのは、ユーザーが攻撃者によって仕掛けられたわなにハマってしまうことがきっかけとなります。わなにハマると、そのユーザーの権限を利用して不正な操作が行われたり、ログイン状態を乗っ取ることなどが可能になります。

このタイプで有名なのが「クロスサイト・スクリプティング(XSS)」と呼ばれる攻撃です。XSSによってWebページ上に表示されている情報を盗むことができたり、ユーザーがログインしている状態を示す「セッション」と呼ばれる情報を盗むことで、そのユーザーになりすますことが可能になります。

このタイプの攻撃で使われるのが、ユーザーへのわなです。攻撃者はメールで送りつけたり、ユーザーが訪れそうなWebサイトに仕掛けるのですが、わなにハマるのを待ち続ける必要があるため、このタイプの攻撃は「受動的攻撃」と呼ばれることもあります。

『脆弱性』がなければ被害を受けない

ここまで挙げた攻撃によって、すべてのWebアプリが被害に遭うわけではありません。被害を受ける原因となるのは『脆弱性』の存在です。『脆弱性』というのはプログラムの不具合や設計上のミスによって発生したセキュリティ上の欠陥のことです。Webアプリに脆弱性があれば被害を受けますし、脆弱性がなければ同じ攻撃手法を用いられても被害を受けることはありません。

被害を受けないようにするためには、Webアプリから脆弱性をなくすことが重要です。しかし、ここまで挙げた攻撃手法以外にもリスクはあり、その流行にも変化がありますので『OWASP Top 10』の最新版などを参照して備えておくことも必要になります。

Webアプリを安全にするにはセオリーがある

どのようにすればWebアプリから脆弱性がなくなるのでしょうか。WordPressやEC-CUBEのように、国内外で広く使われているWebアプリの場合には「最新版にアップデートする」ことです。脆弱性の修正はベンダーなどによって行われるので、最新版を使えば脆弱性のないWebアプリを利用することができます。

自社開発や外注して開発したWebアプリの場合はどうでしょうか。誰かが勝手に脆弱性を見つけてくれたり、修正してくれることはありません。攻撃者が先に脆弱性を見つけて悪用されるだけです。そのため、セキュアにWebアプリを開発する必要があります。

必要なのは、少なくとも正しいセキュリティ要件に基づいて設計・実装し、脆弱性診断と呼ばれるテストを実施。そして、運用時にはWAF(Web Application Firewall)と呼ばれる防御機構などを備えることです。

もし自分たちがセキュリティについてわからない場合には、OWASP Japanが公開している『Webシステム/Webアプリケーションセキュリティ要件書(https://github.com/OWASP/www-chapter-japan/tree/master/secreq)』を開発者に渡して、この内容を満たしているか確認をしてもらったり、この要件書どおりに作るように促してください。

(「SKYSEA Client View NEWS vol.86」 2022年9月掲載)

情報誌『SKYSEA Client View NEWS』のご紹介
ページのトップへ
ささいなご質問にも専門スタッフがお答えします!導入相談Cafe 詳しくはこちら