ソフトウェア・インテグリティ

 

OWASP Top 10 Webアプリケーション・セキュリティ・リスク

OWASP Top 10 2017は、最も重大なWebアプリケーション・セキュリティ・リスクのリストです。Webアプリケーションに関するこれらの10大脆弱性にどのように対応したらよいでしょうか?

OWASP Top 10: アプリケーション・セキュリティ・リスク

Open Web Application Security Project(OWASP)は、Webアプリケーション・セキュリティのリソースとツールを提供するソフトウェアの開発者、エンジニア、フリーランサーの非営利団体です。数年に一度OWASPは、Webアプリケーション・セキュリティ・リスクに関する最も重大な10件についてのレポートを発表しています。最新版であるOWASP Top 10 2017は、2017年11月に発表されました(当社のAndrew van der Stockが制作に協力)。

Webアプリケーション開発の現場は変化が非常に激しいため、Webアプリケーション・セキュリティ・リスクのリストも同じように激しく変化していると思われるかもしれません。しかし実際にはそうではありません。OWASP Top 10 2017で取り上げられた問題点のほとんどは2004年の最初に取り上げられた問題点と同じかまたは酷似しています。Webは2004年から大きな発展を遂げました。しかし、Webアプリケ―ションのセキュリティはそれに追いついていません。

関連: 最も一般的なOWASPのリスクが10年後も依然としてリストに掲載されている3つの理由(英語記事)

ここで、2017年のOpen Web Application Security Project Top 10のセキュリティ・リスクを見てみましょう。

A1: インジェクション

インジェクションは攻撃者がアプリケーションにコードを注入して、想定外の動作をさせる攻撃です。最も一般的でよく知られたインジェクション攻撃は、SQLインジェクション(SQLi)で、たとえば攻撃者はデータベースのテーブルを公開するSQLステートメントを挿入します。LDAPインジェクションはディレクトリシステムに対する同種の攻撃です。OWASPは受信した要求をチェックしてその信頼性を判定し、信頼されていないデータはアプリケーションを実行しているシステムから隔離しておくことを推奨しています。

関連: SQLインジェクションのトリックシート 攻撃を防ぐ方法(英語記事)

A2: 認証の不備

以前は「認証の不備とセッション管理」と呼ばれていました。システムにアクセスしている人のユーザー資格情報はわかりますが、キーボードを打っている人が本当は誰なのかはわかるのでしょうか。データとプログラムに簡単にアクセスするために攻撃者がユーザーIDをハイジャックして本物のユーザーIDの陰に隠れている可能性があります。強力な認証方式とセッション管理を実装することによりユーザーが確実に本人であることを検証してください。

関連:今すぐパスワードを絶滅させませんか?(英語記事)

A3: 機密データの露出

データが意図せず開示されてしまうことはユーザー・データを扱うWebアプリケーションの運営管理者にとって深刻な問題です。OWASPはセキュアでないデータについての危険をすべて挙げると、OWASP Top 10の範囲にとても収まらないと述べていますが、いくつか最小限の対策は推奨しています。そのなかのひとつが機密データは保存されているものも一時的なものもすべて暗号化し、できる限り早く廃棄するというものです。

A4: XML外部実態参照(XXE)

XMLプロセッサはXMLドキュメントに指定された外部ファイルのコンテンツをロードするように構成されることが少なくありません。攻撃者はこの機能を利用して、XMLプロセッサにローカル・ファイルのコンテンツを返信させたり、攻撃されたシステムを信頼した他のシステムのファイルにアクセスさせたり、さらに、実行可能なコードを作成させたりする可能性があります。OWASPはXMLプロセッサのこの機能を無効化するよう推奨しています。

A5: アクセス制御の不備

この脆弱性は2013年のリストの「機能レベルのアクセス制御の欠落」と「非セキュアな直接オブジェクト参照」の組み合わせです。アクセス制御の不備とはユーザーが自分の権限以上の機能を実行できる場合や他のユーザーの情報にアクセスできる場合をさします。OWASPは機能へのアクセスを信頼したユーザーに限定する「deny by default」ルールの徹底やユーザーがアクセス可能なオブジェクト(ファイル、webページ、その他の情報など)のアクセス制御チェックの実装など、アプリケーションのセキュリティを維持するいくつかの方法を紹介しています。

A6: セキュリティ設定のミス

「セキュリティ設定のミス」は不完全または管理の不十分なアプリケーション・セキュリティ・システムの一般的な呼称です。セキュリティ設定のミスは、アプリケーションのすべてのレベル、すべての部分で発生する可能性があるため、非常に一般的で検出が簡単です。ソフトウェアの設定ミスの脆弱性が発生するケースは多数あります。OWASPの脆弱性に関するレポートをよく読んでください

A7: クロスサイト・スクリプティング(XSS)

XSSは、ユーザーがある特定のサイトに与えた信頼を、悪意の可能性がある別のサイトに拡大して使用する脆弱性です。ユーザーは一般的に信頼性の高いサイトが一定の動作をすることを許可します。しかし悪意のある動作者は信頼性の高いサイト上のページを変更することにより、信頼されていないサイトと通信して重要なデータを公開したり、マルウェアを拡散させたりする可能性があります。XSS脆弱性は一般的ですが修正は難しくありません。信頼されていない、ユーザー入力のデータをwebページ内のアクティブなコンテンツ(たとえばハイパーリンクなど)から隔離してください。そして入力検証を信頼しないでください。

関連:XSSの修正: ひとつの修正で有効か?(英語記事)

A8: 安全でないデシリアライゼーション

シリアライゼーションはオブジェクトをどこかに送信したり保存したりできるデータに変更するために行います。この方法で、今度はデシリアライゼーションのプロセスによって別のシステムで別の時間に、同じ状態のオブジェクトを再作成することができます。攻撃者は、デシリアライズされた時点で、攻撃者にアクセス権限を与えたり悪意のあるコードを実行したりするオブジェクトを提供する可能性があります。この脆弱性は利用するのが困難ですが検出もまた困難です。OWASPはデシリアライズするオブジェクトの種類を制限するか信頼されていないオブジェクトは一切デシリアライズしないことを推奨しています。

関連:Pythonのピックリングとその安全な使用法を理解する(英語記事)

A9: 機知の脆弱性を持つコンポーネントの使用

オープンソースの開発活動はイノベーションを促進し開発コストを低減させます。しかし、オープンソース・ソフトウェアは有益であるにもかかわらず、2018年のオープンソースのセキュリティおよびリスク分析では、セキュリティと管理運用において重大な問題点が残されていることが指摘されています。自社のアプリケーションとDockerコンテナに含まれるオープンソース・コンポーネントについての可視性と制御を持つことが非常に重要です。

A10: 不十分なロギングと監視

十分なロギングと監視によっても悪意のある行為者が攻撃を開始するのを止めることはできません。しかし、十分なロギングと監視なしでは、攻撃を検出し、撃退し、損害の範囲を判定するのが困難であることはお分かりなると思います。不十分なロギングと監視は一般的な脆弱性です。しかし同時にその検出も困難です。ログに攻撃が進行中であることを検出するのに十分な詳細情報が含まれていたとしても、これらのログをモニタリングしているシステムが正しく動いている保証はありません。

姿は消えたが忘れてはいけない

OWASP Top 10の2017年版と2013年版の主な違いは2つのリスクが削除され、残りの順序が並べ替えられていることです。しかし、削除されたWebアプリケーションのセキュリティ・リスクはもはや重要ではないと考えないでください。これらの脆弱性は(以前よりもその数は少ないにしても)依然として野放しの状態で存在しています。我々が防御の備えを怠れば将来のOWASP Top 10リストに復活する確率は高いと思われます。

クロスサイトリクエストフォージェリ(CSRF)

CSRFは信頼されたユーザーの資格情報を使用して脆弱なWebアプリケーションにリクエストを送る攻撃です。信頼されていない第三者がリクエストを生成した場合でも、攻撃者は被害者のブラウザを使用することにより、被害者の資格情報を不正利用することができます。CRSF攻撃は信頼されたユーザーの認証を利用してシステムを欺き、悪意のある動作をするように仕向けます。捏造の危険を低減させる方法として、OWASPはすべてのwebリクエストに一意の隠れたトークンを含めることを推奨しています。

証のリダイレクトと転送

WebアプリケーションがURLのリダイレクトに影響を及ぼす未検証の入力を許可すると、第三者はユーザーを悪意のあるwebサイトにリダイレクトできるようになります。さらに攻撃者は、重要な情報にアクセスできるように自動転送のルーチンを変更することもできます。Open Web Application Security Projectは、可能な限りリダイレクトの使用を避け、転送を使用するように推奨しています。しかしそれが現実的でない場合は、少なくともユーザーがリダイレクト先に影響を与えないようにする必要があります。

誰がOWASPを必要としているか

これらのwebセキュリティの脆弱性は複雑に絡み合っており、一つの脆弱性が他の脆弱性を招来する恐れがあります。アプリケーションのセキュリティの状況を理解し、リスクを低減するための手順を実施することが必要不可欠です。さらに重要なのは、OWASP Top 10リスクのどれが自分のシステムに当てはまるかということと、その他ここで述べられていないどのリスクを自分が負っているのかを判定する必要があるということです。OWASP Top 10を手掛かりとして自分自身のリスクのリストを作成し、Webアプリケーションをセキュアに保つためのプランを考案してください。無料のeBook 「誰がOWASPを必要としているか」(英語版)でその方法を紹介しています。

eBookを入手する

この投稿はOWASP Top 10 2017の内容に合わせて1月9日に更新されました。

 

この著者によるその他の情報