シノプシス ソフトウェア・インテグリティ・グループはブラック・ダックになりました 詳細はこちら

close search bar

申し訳ありませんが、この言語ではまだご利用いただけません

close language selection

クロスサイト・スクリプティングが依然として問題である理由

Charlotte Freeman

Nov 14, 2023 / 1 min read

2024年に向けて、多くの組織が自社のサイバーセキュリティ・プログラムに目を向け、アプリケーション・セキュリティ・テストのリソースをどのように配分しようかと検討しています。クロスサイト・スクリプティング(XSS)のような、OWASP Top 10に挙げられる脆弱性にテスト・リソースを割くことは革新的と思えないかもしれませんが、これは組織のセキュリティ態勢を確実なものにするための最善の方法の1つです。

Forresterの2022年調査レポート「アプリケーション・セキュリティの現状」では、Webアプリケーションのエクスプロイトは引き続きサイバーセキュリティ上の脅威の第3位に挙げられています。年次報告書「ソフトウェア脆弱性スナップショット」のために実施された、Synopsysのアプリケーション・セキュリティ・テスト・サービス・チームによる4,000件以上のテストのうち、83%でターゲット・アプリケーションに何らかの脆弱性が発見されました。

Black Duck Cybersecurity Research Center(CyRC)が解析したデータによると、テストの27%で重大度が「高」の脆弱性が見つかり、6.2%で重大度が「重大」の脆弱性が見つかっています。Black Duckが行った3年間のテストのすべてで、一貫して、XSSを可能にする脆弱性が高リスクの脆弱性の1位または2位に挙げられています。2022年のテストで検出された高リスクの脆弱性のうち、19%がクロスサイト・スクリプティング攻撃と関連していることがわかっています。

では、XSS脆弱性とはどのようなもので、どうしたらアプリケーション・セキュリティ・テストを効果的に行い、攻撃の検出と低減が可能になるでしょうか?

クロスサイト・スクリプティング

クロスサイト・スクリプティング脆弱性がオンライン・アプリケーションのセキュリティ上の最も一般的な懸念の1つであるのは、組み込むのは簡単で、検出と修正が難しいためです。つまり、本番環境のコードに入り込む危険が常にあります。

XSS攻撃は、信頼できるWebサイトに悪意のあるコードを挿入することで実行されます。Webページが読み込まれると、悪意のあるコードがユーザーのブラウザで実行され、攻撃者はパスワードやcookieなどの機密情報を盗んだり、悪意のある操作を実行したりできるようになります。Webアプリケーションがユーザー入力を検証することなく、あるいは生成される出力で入力をエンコードすることなく、取り込む場合、これらの攻撃は成功する可能性があります。

ときには、XSS攻撃によって被害者のアカウントが完全に乗っ取られることもあります。ユーザーが騙されて、偽のフォームに資格情報を入力すれば、攻撃者はすべてのデータにアクセスできるようになります。

3種類のXSS攻撃

XSS攻撃には主に3つの種類があります。

  • 格納型XSS攻撃:この攻撃では、埋め込まれたスクリプトが、ターゲット・サーバーのデータベース、掲示板、訪問者のログ、コメント欄などに無期限に保持されます。被害者が保存データをリクエストすると、サーバーから悪意のあるスクリプトが返されます。
  • 反射型XSS攻撃:この攻撃は、Eメール・メッセージやWebサイトなどのチャネルを経由してターゲットに送られます。ユーザーがだまされて悪意のあるリンクをクリックしたり、特別に細工されたフォームを送信したり、あるいは悪意のあるサイトを閲覧しただけでも、埋め込まれたコードが脆弱なWebサイトに移動して、ユーザーのブラウザに攻撃をしかけます。コードが「信頼できる」サーバーから送信されるため、ブラウザはこのコードを実行してしまいます。
  • DOM XSS:この攻撃では、攻撃者のペイロードがサーバーに格納され、バックエンド・アプリケーションによって被害者に返されます。攻撃者がフィードバック・フォームで悪意のあるペイロードを送信すると、バックエンド・ユーザーや管理者がフォームを開いたときにこのペイロードが実行されます。

XSS脆弱性を防御する方法

アプリケーション開発のすべての段階で安全な開発のベストプラクティスに従い、セキュリティを組み込むことで、組織のセキュリティを守ることができます。セキュリティ対策をセキュア開発ライフサイクル(SLDC)の初期に実施することもその1つです。例えば、脅威モデリングアーキテクチャ・リスク分析をソフトウェアの設計段階で実施し、XSS脆弱性を考慮します。他にもXSS攻撃を阻止する方法として、以下のような方法があります

  • ユーザー入力を信頼しない:信頼できないソースから入力を受け取ったら、必ず入力の検証とサニタイズを直ちに行います。包括的なカバレッジを確保するには、受信と送信の入力処理をどちらも検討する必要があります。
  • 出力エンコーディングを実装する:ユーザーが制御できるデータを書き込む前に実装します。出力エンコーディングにより、ユーザーの入力がエスケープされ、ブラウザは入力をコードではなく無害なデータとして解釈します。
  • 多層防御の原則に従う:この戦略では、さまざまなセキュリティ制御を利用してお客様の最も貴重な資産の安全を確保します。複数の防御(制御)壁があることで、1つの壁が破られても他の壁が悪意のある攻撃から資産を保護します。
  • OWASPのXSS防御チートシートを参考にしてWebアプリケーション開発を進める。このシートには、XSSを防ぐために十分なテストが行われた手法がリストされています。OWASPでは、これらの手法を適切に組み合わせて1つのXSS防御メカニズムとして使用することを推奨しており、自社のアプリケーションに合わせてカスタマイズできます。
  • 修正後、ペネトレーション・テストを実施して正常に機能していることを確認する:経験豊富なペネトレーション・テスターは、高リスクのXSS脆弱性が実際に防御されていることを確認するために、現実の攻撃シナリオを実装するスキルを持っています。Webアプリケーションの開発時にはOWASPのXSS防御チートシートを使用します。

シノプシスの支援内容

ビジネスのスピードを損なうことなくソフトウェアのリスクを管理しようする限り、XSSのような脆弱性はあらゆる場所に存在します。そのため、セキュリティ・テストは今やソフトウェア開発の標準的な要素となっています。バイヤーは、たくさんのベンダーとツールから選択できますが、アプリケーション・セキュリティのアプローチを効果的なものにするには、個々のツールがあるだけでは不十分です。人員、プロセス、テクノロジーを調整し、組織独自のポリシーとビジネス目標に基づいてセキュリティ・リスクに対処する必要があります。

Black Duckは、お客様が包括的なアプリケーション・セキュリティ・テスト・プログラムを開発できるようお手伝いします。お客様が直面しているリスクを把握する上で、当社のツールとコンサルティング・リソースが役立ち、お客様は、実装プランとポリシーを備えた戦略を策定できます。お客様のセキュリティ・チームと開発チームに、お客様が使用および開発するソフトウェアの信頼性を保証できる適切なスキルがあるかどうかを判断するお手伝いをいたします。さらに、開発したソフトウェアのセキュリティを速やかに確保するために必要なツールをこれらのチームに用意できるよう支援いたします。

Black Duckは、業界をリードする包括的なツール・ポートフォリオだけでなく、コンサルティング、専門家によるセキュリティ・テスト、トレーニング、グローバルなデプロイ・サービスとサポート・サービスも提供する唯一のベンダーとして、お客様のAppSecプログラムの成功を保証いたします。

続きを読む

トピックを探索する