Webセキュリティを強化するために、どのようなことをすべきか。そのヒントになるのがワールドワイドのオンラインコミュニティ「OWASP(Open Worldwide Application Security Project)」が提供するセキュリティレポート「OWASP Top 10」だろう。

本稿では、EGセキュアソリューションズ 取締役 CTO / 情報処理推進機構(IPA)非常勤研究員 / 技術士(情報工学部門)の徳丸浩氏に、OWASP Top10の最新版である「OWASP Top 10:2021」をベースに、今Webセキュリティ担当者が注意すべきリスクやその対策について、話を伺った。

  • EGセキュアソリューションズ 取締役 CTO / 情報処理推進機構(IPA)非常勤研究員 / 技術士(情報工学部門)の徳丸浩氏

OWASP Top 10とは

OWASP Top 10は、オンラインコミュニティ「OWASP」が定期的に発表するセキュリティレポートだ。Webサイトで発生する脅威のうち、とくに危険性が高いと判断された項目をまとめている。最新版は、2021年に発表された「OWASP Top 10:2021」である。

OWASP Top 10:2021の10項目

OWASP Top 10:2021に掲載されている10のカテゴリーは以下の通りだ。

  • ・アクセス制御の不備
  • ・暗号化の失敗
  • ・インジェクション
  • ・安全でない設計
  • ・セキュリティ設定ミス
  • ・脆弱で古いコンポーネント
  • ・識別および認証の失敗
  • ・ソフトウェアおよびデータ整合性の不具合
  • ・セキュリティログおよび監視の失敗
  • ・サーバサイドリクエストフォージェリ
  • ここからは徳丸氏に、各カテゴリーについてその詳細を伺う。

    アクセス制御の不備

    「アクセス制御の不備」とは、Webサイトの特定ページなどへのアクセス権限を適切に管理できていないことを指す。簡単に言えば、Aさんにしか見られないはずのページが意図せず、Bさんも閲覧可能になっていたということだ。

    実は、OWASP Top 10:2021におけるこのカテゴリーは、対象範囲が広く具体的な内容をつかみづらい。同じくOWASPが発表している「OWASP API Security Top 10:2023」では、「アクセス制御の不備」に関する項目が3つに細分化されており、徳丸氏は「こちらの方が理解しやすい」として、OWASP API Security Top 10:2023も参照しつつ、その詳細を語った。

    OWASP API Security Top 10:2023における「アクセス制御の不備」関連項目の1つ目は「オブジェクトレベルの認可の不備」、2つ目は「オブジェクトプロパティレベルの認可の不備」である。

    開発者以外の方にはなじみの薄いであろう「オブジェクト」「プロパティ」という言葉について、徳丸氏はSNSを例に示した。

    例えば、多くのSNSではユーザーが自身のプロフィール情報を登録する。そのなかには、ニックネームやアイコン、メールアドレスや電話番号、パスワードなど、さまざまな項目が存在するだろう。

    この場合、つくり方にもよるが、プログラムにおいては、「プロフィ-ル」というオブジェクトにおいて、「ニックネーム」「アイコン」「メールアドレス」「電話番号」「パスワード」などがプロパティとして登録されるイメージだ。

    「SNSの例で言えば、『オブジェクトレベルの認可の不備』は、非公開にしているユーザーのプロフィール情報がだれでも取得できる公開状態になっているケースなどです。一方、『オブジェクトプロパティレベルの認可の不備』では、プロフィール自体の公開・非公開は適切に管理されているが、プロフィール内の各項目の管理が適切でなく、例えばプロフィール公開ユーザーにおいて、メールアドレス、電話番号、パスワード等の非公開にすべき情報も取得できてしまうケースなどが該当します。これらは通常のサービスの運用範囲でも起こり得る問題ですが、OWASP API Securityに挙げられているということは、外部サービスからのリクエストによりAPI連携して情報提供する際にとくに起こりやすいので注意が必要です」(徳丸氏)

    OWASP API Security Top 10:2023の3つ目は「機能レベルの認可不備」である。こちらはその名の通り、機能レベルの話になる。例えば、管理者権限を持つ人のみがアクセス可能な機能のはずが、一般権限の人もアドレスバーに/adminなどを入力すれば、その機能を使えてしまうような状況が考えられる。

    暗号化の失敗

    「暗号化の失敗」とは、パスワードを平文で保存してしまっている、通信プロトコルにHTTPS(Hypertext Transfer Protocol Secure)を使用していないというような事象があると徳丸氏は説明する。また、今は推奨されていない暗号化のアルゴリズムを使用することも、このカテゴリーに含まれる。

    同氏はウェブサーバの設定を「HSTS(HTTP Strict Transport Security)にすることやパスワードの安全な保存は、必ずやるべきこと」だとした。

    インジェクション

    「インジェクション」は、URLやWebサイトの文字入力欄(ログイン欄・検索窓など)に、OSコマンドやSQL文等の各種実行文を紛れ込ませるかたちで入力し、Webアプリケーションが意図せず実行してしまう攻撃手法を指す。攻撃を受けると、データベース内の情報が攻撃者の画面に表示されてしまったり、サービスが停止してしまったり、ということが考えられる。

    徳丸氏は「インジェクション攻撃の多くはSQLインジェクションが占める」としたうえで、対策として「安全な開発用APIを使用することを推奨する」と述べた。具体的にはプレースホルダを使うことやORMライブラリを使用すること、文字列結合でSQL文を作成しないことなどが対策になるとした。

    安全でない設計

    「安全でない設計」のカテゴリーは、さまざまなシチュエーションが考えられるが、徳丸氏はOWASPに記載されている「攻撃シナリオの例」から次の3つを例に挙げた。

    1つ目は「秘密の質問と答え」である。これはかつてよく見かけたパスワードなどを忘れた際の復元策の1つだ。本人以外が回答を知ることができる可能性があるため、現在、OWASPでは非推奨としている。「金融系のサイトなどでは、確認・認証が多重化されているケースが多いものの、プロセスの1つとしてまだ見かける」(徳丸氏)こともある。

    2つ目のシナリオは、簡単に悪用されかねない仕様上の落ち度に関するもの。OWASPのサイトには例として、予約システムにおけるキャンセルポリシーの仕様が記載されている。グループ予約割引がある映画館のシステムにおいて、15人以上の団体予約に限りデポジットが必須という仕様だったとする。この場合、14人までの予約を数回繰り返すことで、デポジットなしに全席を予約できてしまう可能性がある。仮に攻撃者が全席を押さえて直前に全てをキャンセルすると企業は大きな損害を受けることになる。

    徳丸氏はこのような場合の対策として、同一IPアドレスからのアクセスかを確認し、該当するものを弾く方法が考えられるとしつつ、それでも完璧ではない場合、そもそものルール自体を変更することを考えるべきだとした。

    3つ目のシナリオは俗に言う“転売ヤー”対策である。本人確認にマイナンバーカードを用いるなど、厳格にする方法は考えられるが、どこまで対応をするかの判断は難しい。

    「このカテゴリーはソフトウェアの実装レベルの話だけではなく、ビジネスモデルやビジネスルールまでさかのぼるべき場合があることを示唆しています」(徳丸氏)

    セキュリティ設定ミス

    「セキュリティ設定ミス」として徳丸氏が示したのが、アプリケーションサーバに最初から付随するサンプルアプリケーションを消し忘れる事象だ。消し忘れると、サンプルアプリケーションが存在する階層をURLに追記することで、外部からサンプルアプリケーションにアクセスできてしまう。サンプルアプリケーションはあくまでサンプルで、セキュリティ対策が不十分なアプリケーションであることが多いため、機密情報が漏えいしてしまうといったことも考えられる。

    また、OWASP Top 10:2021の「攻撃シナリオの例」ではサーバの設定ミスによって、スタックトレース(実行したプログラムの処理情報)などのエラーメッセージがユーザーに送信されてしまい、そこから脆弱性などを見つけられる可能性も指摘している。

    脆弱で古いコンポーネント

    「脆弱で古いコンポーネント」では、アプリケーション内で使用する、オープンソースなどの外部調達ソフトウェアに脆弱性が含まれており、そこを突いて攻撃される問題を指摘している。徳丸氏は「以前に話題になったLog4jなどがこれに該当する」と説明する。

    対策としては、最新版にバージョンアップする、長期間更新されていないコンポーネントは使わないといったことが挙げられる。

    「外部ソフトウェアの導入に際しては開発コミュニティの状況などを確認することが大事です。急にコミュニティが不活発になり、開発が止まってしまうパターンもありますので、予兆も含めてよく調べておくべきでしょう。導入時点では脆弱性が見つかっていなかったとしても、将来脆弱性が発見された際に対応されないことも考えられますので、長期間開発が止まっているようなソフトウェアの使用は控えるべきです」(徳丸氏)

    識別および認証の失敗

    「識別および認証の失敗」は、その名の通り、ユーザーIDなどの認証に問題がある場合を指す。

    攻撃の例としては、「辞書攻撃」「パスワードリスト攻撃」などがある。前者は、特定のIDに対して、多くの人がよく使うようなパスワードを次々に入力してログインできるかどうかを試す攻撃。後者は、パスワードを使い回すユーザーを狙ったもので、情報漏えいしたID・パスワードのリストを入手し、片っ端から入力してログインできるものがないか試す攻撃になる。いずれもボットを使って、多くのIPアドレスから、不正ログインと判別しにくように試行してくるのが一般的だ。

    徳丸氏はサイト運営側の対策として、「人間によるアクセスかどうかを確認する機能や多要素認証を導入する」ほか、公共の場のPCなど、不特定多数の人が使う端末からログインしたユーザーがログアウトを忘れるケースもあるため、「(一定時間操作がなかったときに)タイムアウトさせることなども大切」とした。

    ソフトウェアおよびデータ整合性の不具合

    「ソフトウェアおよびデータ整合性の不具合」は2021年版から登場した新しいカテゴリーだ。徳丸氏は「攻撃シナリオの例」を基に、「署名なしのソフトウェア更新」の危険性を指摘した。

    例えば、家庭用のルーターやセットトップボックスなどをアップデートする際、ソフトウェアに署名がないものをインストールした結果、実はそれが偽物で、マルウェアに感染してしまうといったことがある。

    「一般ユーザーが最も目にする署名」として同氏が例に挙げたのは、Windowsアプリケーションのインストーラーだ。通常インストーラーにはソフトウェアを制作した企業の名前が入っているが、まれに署名のないものも存在する。その場合、ソフトウェアの提供元サイトを確認するなど、インストールするかどうかをよく検討する必要がある。

    セキュリティログおよび監視の失敗

    セキュリティログは、いつ誰がどこで何をしたかが分かる情報であり、正しく取得し、監視することが重要だ。ログを確認できなければ、サイバー攻撃を受けたことが発覚しても、いつからデータが侵害されていたのか分からず、その後の対応が難しくなる。また、そもそも攻撃そのものに気付けずに情報漏えいし続けるなどの事態も考えられる。

    対策として徳丸氏が推奨するのはWAF(Web Application Firewall)の導入だ。これにより、ログの取得と基本的なモニタリングはカバーできる。また、WAFには、SQLインジェクションなどの攻撃を防ぐ機能が搭載されているものも多数存在する。ただし、WAFだけで全ての攻撃を防げるわけではないことは留意しておきたい。

    サーバサイドリクエストフォージェリ

    徳丸氏が「OWASP API Security Top 10:2023にも入っていて、今非常に注目されている」としたのが、「サーバサイドリクエストフォージェリ(SSRF:Server Side Request Forgery)」である。

    SSRFについて同氏は、「さまざまな方法により、外部公開されているサーバを経由して、外部に公開されていないサーバの設定情報や認証情報を取得する攻撃手法」と説明した。2019年7月には米国の大手金融・Capital Oneがこの攻撃を受け、1億人を超える個人情報が流出した事件もあった。

    ではなぜ今、注目度が高まっているのか。同氏は「クラウドサービスの利用が増加したことも一因。SSRFによりクラウドのストレージサービスへのアクセス情報を取得して、大量の情報を抜くケースがある」としたうえで、「クラウド側の対策も進んでいるので、新規のサイトではそこまで簡単に攻撃はできないが、古い設定が残っているサイトだと当面はこの手の攻撃手法が残るだろう」と話した。

    * * *

    多種多様なサイバー攻撃が増加するなか、Webセキュリティの強化は喫緊の課題である。OWASP Top 10:2021や徳丸氏の助言を参考に、改めてセキュリティの在り方について考えてほしい。

    セキュリティ関連の注目ホワイトペーパー

    東亞合成が見据える次世代のセキュリティ対策~マイクロセグメンテーション技術とは~
    SASEを導入した組織が直面する課題とは。なぜSWGやCASBの機能を最大限に生かせないのか
    セキュリティを確保するためのヒント57を公開。あらかじめ十分な防御体制を敷いておくには
    自治体が業務でクラウドサービスを利用するにあたり、求められるセキュリティ対策とは

    セキュリティの基本を知る! オススメ記事

    ランサムウェアにどう対応すべきか、実践方法をレクチャー
    【マルウェア対策ガイド】感染経路やリスク、予防策を指南
    EDR、MDR、XDRとは? 押さえておきたいセキュリティのキーワードを解説
    エンドポイントセキュリティの基本を解説 - リスクを減らすためにすべきこととは
    ゼロトラストを基本から解説! “誰も信頼しない”セキュリティとは?
    ネットワークセキュリティを高めるには? 押さえておきたいSASEの基本
    セキュリティ強化のために知っておきたいサイバー攻撃 - 動向と対策
    知っておきたいサイバー攻撃 - 動向と対策
    情報資産を守るために必要なネットワークセキュリティの基本
    今、製造業が考えるべきセキュリティ対策とは?
    ランサムウェア対策の基礎知識 - 感染経路、対策、発覚後の対応
    AIを悪用したサイバー攻撃にいかに対処すべきか
    フィッシング攻撃とは - 主な手法やリスク、最新の対策方法を徳丸氏が解説
    OWASP Top 10からひも解くリスクを専門家が解説 - Webセキュリティ担当者必見!
    OWASP Top 10 for LLM Applicationsから見る、LLMにおけるセキュリティリスクとは
    DDoS攻撃とは - 攻撃手法から対策まで、セキュリティの専門家が解説