In this article
Webアプリケーションセキュリティを解説:リスクと9つのベストプラクティス
世界中の従業員や消費者にとって利便性とリモートアクセスが不可欠になるにつれ、Webアプリケーションの需要も同様に高まっています。Webアプリはデスクトップアプリやネイティブアプリと同じ機能を提供しながら、ブラウザーから手軽に利用できます。また、さまざまなプラットフォームに展開しやすいため、組織はより多くのユーザーを獲得できます。しかし残念ながら、Webアプリは攻撃者がデータベースやクライアントシステムに侵入するための侵入口にもなります。
ブラウザーベースのアプリに固有のセキュリティリスクに加え、ビルドやデプロイの手法が進化したことで、開発者はリリースする新しいWebアプリケーションのコードを保護する責任をより強く担うようになりました。以前は多くの開発者が「セキュリティ・バイ・オブスキュリティ(隠すことで安全を保つ)」という考え方をしていました。つまり、ハッカーがコードの脆弱性を悪用するほど深く調べることはないと考えていたのです。しかし、これは誤りだと証明されました。今や開発者は考え方を変え、アプリケーションのリリース前にセキュリティを確保する責任を担うことが不可欠です。脆弱性の発見と修正を支援するアプリケーションセキュリティソリューションを活用しましょう。
Webアプリケーションの主なセキュリティリスク
Open Web Application Security Project(OWASP)は、Web全体のセキュリティ向上に取り組む業界団体の非営利組織です。数年ごとに、Webアプリケーションの脆弱性トップ10を更新して公表しています。
2021年のリストには、次の項目が含まれていました。
アクセス制御の不備 — OWASPがテストしたアプリケーションの約25件に1件で確認されました。
暗号化の失敗 — 機密データの漏えいにつながる根本原因です。
インジェクション — 攻撃者がSQLクエリやコマンドに悪意のあるコードを挿入します。
安全でない設計 — 機密データを含むエラーメッセージの生成など、不適切または欠如した制御設計を指します。
セキュリティ設定の不備 — 高度に構成可能なソフトウェアへの移行に伴い、リスクが高まっています。
脆弱で古くなったコンポーネント — 開発環境と本番環境のコンポーネントをスキャンできる、高度なツールとプロセスが必要です。
識別と認証の失敗 — 2017年のトップ10リストで2位から順位を下げましたが、依然としてよく見られる攻撃経路です。
ソフトウェアとデータの整合性の不備 — 整合性を確認せずに導入されたコードやインフラに関する、2021年リストで新設されたカテゴリです。
セキュリティログとモニタリングの不備 — テストが難しい一方で、侵害の検知に欠かせません。
サーバーサイドリクエストフォージェリ — 発生頻度は低いものの深刻度が高い脆弱性です。攻撃者はURLリクエストを乗っ取り、ネットワークのアクセス制御を回避します。
これらの脆弱性とその修正方法について詳しくは、OWASP Top 10の分析をご覧ください
Webアプリを保護する9つのベストプラクティス
1. SDLCの早期段階からセキュリティを組み込む
セキュリティのシフトレフトでは、ウォーターフォール型のリリース手法向けに設計された従来のセキュリティプロセスやツールに代わり、ソフトウェア開発ライフサイクル(SDLC)のできるだけ早い段階にセキュリティを組み込みます。次の方法が、この移行に役立ちます。
脅威モデリングを活用する
コードの設計やアーキテクチャにセキュリティの考慮事項を取り入れる
アプリケーションが本番環境で稼働するまで待つのではなく、コードの作成中にテストする
2. インジェクションと入力値の検証
インジェクションとは、ブラウザーやその他の入力フォームに悪意のあるコードを挿入する攻撃手法の総称です。代表例として、悪意のあるSQLコードやWebサイトのフロントエンドに悪意のあるスクリプトを使うSQLインジェクションとクロスサイトスクリプティングがあります。インジェクション攻撃を防ぐには、入力値を検証し、適切な形式のデータだけを受け付けることで、悪意のあるコードがシステムに侵入するのを防ぎます。
3. ユーザー認証の管理
2021年のOWASP Top 10で「識別と認証の失敗」が7位に挙げられているように、ユーザー認証はWebセキュリティの重要な要素です。ユーザー認証の管理は、ユーザー名とパスワードの強度を高め、承認されたユーザーだけがアプリにアクセスできるよう、セキュリティ管理者にさまざまな選択肢を提供します。その一つが多要素認証です。これは、少なくとも2種類の認証方法を使って本人確認を行うものです。
4. データの暗号化
暗号化の不備や暗号化を行わないことは機密情報の侵害につながるため、暗号化の問題はOWASP Top 10の2位に挙げられています。保存中と転送中のデータを暗号化することは、侵害が発生した場合の重要な保護策です。暗号化アルゴリズムは通常、オープンソースパッケージとして提供され、暗号技術の専門家によって開発されています。実際には、すべての内部・外部トラフィックを暗号化する、最新の暗号化アルゴリズムを使う、暗号化を徹底するといった、暗号化に関する制御と基準を適用します。
5. 設定ミスの検出と修正
最小権限の原則を適用しないなどの設定ミスがあると、第三者が機密データにアクセスしやすくなります。設定ミスの多くは手作業によるエラーが原因であるため、Infrastructure as Code(IaC)と自動化を活用すると防止に役立ちます。さらに、Snyk IaCなどのスキャンツールを使えば、設定ミスを検出して修正し、本番環境への混入を防げます。
6. ログ記録と監査
これはOWASP Top 10の9位、「セキュリティログとモニタリングの不備」への対策です。ログや監査が侵害を防ぐことを示す直接的なデータはあまりありませんが、侵害の検知と対処は不可欠です。このカテゴリには、ログインや重要な取引などのイベントを記録すること、異常なアクティビティがないかログを監視すること、異常な挙動を検知した場合に自動アラートや自動修復を行うことが含まれます。
7. Webアプリケーションファイアウォール
Webアプリケーションファイアウォール(WAF)はクライアントとWebサーバーの間に配置され、両者間のトラフィックを仲介します。WAFにルールを設定すると、インジェクションなどの一般的な攻撃からWebアプリケーションを保護できます。
8. CI/CD内でのセキュリティテスト
CI/CDパイプラインの最後までセキュリティテストを実施しない、あるいはWebアプリケーションが本番環境で稼働するまで待つと、修正に多大なコストと時間がかかります。セキュリティテストをCI/CDに組み込めば、チームの時間やコストを節約し、負担を軽減できます。自動化ツールを活用すれば、開発者のワークフローへの影響を最小限に抑えて実現できます。
9. 認可
認可プロセスを実施することで、権限昇格を防げます。権限昇格とは、ユーザーがアプリケーションにアクセスした後、権限やロールを変更してアクセス範囲を広げる攻撃です。権限昇格は、侵入テストで発見し、最小権限でアプリケーションを実行することでリスクを軽減し、認証キーを適切に設定することで防止できます。
Webアプリケーションセキュリティテストのツール
Webアプリケーションのセキュリティ評価と修正に役立つツールを簡単に見ていきましょう。
SAST
静的アプリケーションセキュリティテスト(SAST)ツールは、Snyk Codeなどのように、あらかじめ定められたベストプラクティスに照らしてコードをスキャンし、問題のあるコードパターンを特定します。SASTは、使用しているプログラミング言語に依存します。
DAST
動的アプリケーションセキュリティテスト(DAST)は、アプリケーションの実行時にスキャンを行い、プログラミング言語に依存しません。
SASTとDASTの違いについて詳しくは、こちらのブログ記事をご覧ください。
SCA
ソフトウェア構成分析(SCA)ツールは、Snyk Open Sourceなどのように、Webアプリケーション内のサードパーティ製コードの依存関係をスキャンします。現代のアプリケーション開発ではオープンソースライブラリが多用されているため、SCAはセキュリティチームにとって効果的なツールです。
ペネトレーションテスト
倫理的ハッカーが行うペネトレーションテストでは、Webアプリケーションへの侵入に利用される攻撃経路を発見し、対処します。PCI DSSなどの一部の規制では定期的なペネトレーションテストが求められており、すべてのWebアプリで強く推奨されています。PCI DSS
RASP
ランタイムアプリケーション自己保護(RASP)は、アプリケーションに組み込まれ、想定される動作と照らし合わせてアプリケーションの挙動を監視する技術です。WAFなどの境界防御技術を補完しますが、認証や認可を悪用する一部の攻撃手法を検知できない場合があります。RASPを効果的に活用するには、SASTやSCAなどの他のツールと併用する必要があります。
Snykで安全なWebアプリケーションの構築を支援
Snykの開発者向けセキュリティプラットフォームは、Snyk Open Source、Snyk Code、Snyk Container、Snyk IaCの各ツールを単一のプラットフォームに統合します。Webアプリケーション開発者は、既存のワークフローにSnykを組み込み、コードやオープンソースコンポーネントの脆弱性や設定ミスをスキャンできます。包括的な脆弱性インテリジェンスデータベースは、Snykのセキュリティ専門家が精選しており、市場でも屈指の情報量を誇ります。
Webアプリケーションセキュリティについて、以下の記事もご覧ください。
アプリケーションセキュリティを解説 — 2023年のツールとトレンド
アプリケーションセキュリティテスト — よくある質問への回答 | Snyk
アプリケーションセキュリティ評価:重要な5つのステップ | Snyk
Webアプリケーションセキュリティに関するよくある質問
Webアプリケーションセキュリティとは何ですか?
Webアプリケーションセキュリティとは、Webアプリケーションと関連資産を保護するために設計されたツールや制御の総称です。Webアプリケーションの脆弱性を発見し、修正するための一連のプロセスも含まれます。また、安全な開発手法を取り入れ、設計から実装までのあらゆる段階でセキュリティを確保します。
Webアプリケーションのセキュリティが重要なのはなぜですか?
Webアプリケーションのセキュリティが重要なのは、2つの理由があります。1つ目は、攻撃者がデータベース内の機密情報にアクセスする手段になり得ることです。2つ目は、アプリケーションのユーザーを標的とした攻撃を仕掛ける手段にもなり得ることです。
アプリケーションセキュリティで最もよく見られるリスクの上位3つは何ですか?
2021年版OWASP Top 10によると、アプリケーションセキュリティで最もよく見られるリスクの上位3つは、アクセス制御の不備、暗号化の失敗、インジェクション(SQLインジェクションやクロスサイトスクリプティングなど)です。
Webアプリをどのように保護すればよいですか?
Webアプリケーションの保護は、開発の初期段階から始まります。セキュア・バイ・デザインや脅威モデリングを取り入れ、セキュリティを考慮したアプリケーションを構築します。開発中は、スキャンツールを使って脆弱性や設定ミスを検出します。リリースサイクルが完了したら、侵入テストを実施して、これまで検出されていなかった脆弱性を明らかにします。