技術

XSSとは何ですか?クロスサイトスクリプティング攻撃の説明

XSSとは何ですか?クロスサイトスクリプティング攻撃の説明

 

XSS攻撃の場合、攻撃者は悪意のあるコードをWebフォームまたはWebアプリケーションのURLに挿入して、実行すべきでないことを強制します。


 
 

クロスサイトスクリプティング(XSS)は、ハッカーが悪意のあるコードをWebフォームまたはWebアプリケーションのURLに挿入するサイバー攻撃です。JavaScriptやPHPなどのスクリプト言語で記述されたこの悪意のあるコードは、ロードしようとしているページを破壊してパスワードやその他のログイン資格情報を盗むことから何でもできます。

XSSは、最新のインターネットの重要な側面を利用しています。これは、ほとんどのWebページが、ページの読み込み中に、場合によってはブラウザー自体でコードを実行することによって作成されるという事実です。これにより、そのような攻撃を防ぐことが困難になる可能性があります。

また確認してください:

XSS攻撃はどのように機能しますか?

悪意のあるコードを含むWebサイトは誰でも作成できます。クロスサイトスクリプティング攻撃の場合、攻撃者は、他の誰かのWebサイトにアクセスしたときに、コードが被害者のコンピューターに到達するようにすべてを調整します。これが名前の「十字架」の由来です。XSS攻撃は、密かにコードを配置するためにWebサーバーへの特権アクセスを必要とせずにこれを実現します。代わりに、攻撃者は最新のWebサイトの動作方法を利用します。

Webがどのように機能するかについての簡単で基本的な説明を求められた場合は、おそらく次のように言うことができます。Webページを作成したい人は、HTMLドキュメントを作成してWebサーバーに配置します。ユーザーがこのページにアクセスしたい場合、ユーザーはブラウザーをサーバーアドレスに誘導し、ブラウザーはHTMLコードをダウンロードして解釈し、ユーザーのWebページのコピーを作成します。

この説明は間違っていませんが、いくつかの側面は時代遅れです(そして10年以上前から存在しています)。まず、すべてではないにしても、多くのWebページは今日動的です。つまり、すべての訪問者に同じ静的HTMLを表示するのではなく、ブラウザーがアクセスを要求すると、サーバーのデータベース内の情報から即座に生成されます。ブラウザがサーバーから受信するページは、多くの場合、リクエストで送信される情報に依存します。この情報は、サイトへのアクセスに使用されるURLのパラメータの形式をとることがあります。Webサイトは、テキストとグラフィックの表示方法を説明するHTMLとカスケードスタイルシート(CSS)で構成されているだけでなく、スクリプト言語(通常はJavaScript)で記述された実行可能コードも含まれています。

XSS攻撃では、ハッカーはユーザーとWebサイト間のこの相互作用を使用して、ユーザーのコンピューター上で悪意のあるコードを実行します。しかし、どのように?次のURLを検討してください。

https://www.google.com/search?q=CSO+online

これをブラウザのアドレスバーに入力すると、「CSOオンライン」のGoogle検索結果が表示されます。実際、表示されるページは、ブラウザの検索バーまたはGoogleホームページで「CSOオンライン」と入力した場合とまったく同じように見えます。特に、このフレーズは、山の検索バーなど、ページのいくつかの場所に表示されます。

XSSとは何ですか? クロスサイトスクリプティング攻撃を明確にする

「CSOonline」という無邪気で成功したフレーズの代わりに、このURLにこのような悪意のあるJavaScriptコードが含まれているとしたらどうでしょうか。

https://www.google.com/search?<script>doEvil()</script>

doEvil()はここで本当に悪い仕事をします。このURLから返されるページに「CSONonline」を表示する代わりに、Googleがレンダリングしているページに不正なJavaScriptを動的に統合し、このスクリプトがブラウザで実行されていることを懸念するかもしれません。 、混乱を引き起こします。Googleには従業員の中に非常に多くの有能なITセキュリティ専門家がいて、後で説明する改善策を実施しているため、あなたの懸念は根拠がありません。ただし、すべてのサイトが非常に注意深いわけではなく、これにより、そのような攻撃がどのように機能するかがわかります。

アタキXSS

XSS攻撃は、リフレクション攻撃、DOMベースの攻撃、および保存された攻撃のいくつかのカテゴリに分類されます。それらの違いは次のとおりです。

  • リフレックスアタック:ウィークアタックとも呼ばれる悪意のあるJavaScriptコードは、被害者のブラウザからGoogleに送信され、実行可能形式で反映され、Googleのサーバーに保存されることはありません。これらの攻撃は、多くの場合、フィッシング詐欺の一部であり、悪意のあるリンクがより面白いものに偽装され、電子メールまたはSMSを介して被害者に送信されます。
  • DOMベースの攻撃:これは、ドキュメントオブジェクトモデルと呼ばれる一種の反射攻撃です。これは、ブラウザが基本的なHTMLまたはJavaScriptコードからWebページを構築する方法を定義する標準APIです。ほとんどのDOM攻撃は、前述の再帰攻撃に似ていますが、悪意のあるコードがサーバーに送信されない点が異なります。代わりに、ブラウザー自体で実行されるJavaScript関数にパラメーターとして渡されます。つまり、メカニズムが保護します。サーバー側ではユーザーを保護できません。詳細に興味がある場合は、PortSwiggerにDOM攻撃がどのように機能するかについてのより詳細な説明があります。
  • 保存された攻撃:それ以外の場合は永続的。攻撃者は、Webサイトのインタラクティブ機能を使用して、悪意のあるコードをWebサーバーに保存します。典型的な例では、攻撃者は悪意のあるJavaScriptを含むブログ投稿にコメントを残します。次に誰かがこのページをロードすると、コードが実行されます。
  • XSS攻撃に対する脆弱性

WebサイトがXSS攻撃に対して脆弱になる理由は何ですか?うまくいけば、これまでの議論がいくつかのガイダンスを提供してくれました。Webアプリケーションがユーザー入力を素朴に受け取り、悪意のある実行可能コードをチェックせず、そのデータを使用してページをレンダリングしたり、他の操作を実行したりする場合、このタイプの攻撃に対して脆弱です。

そして、リスクは大きいです。ブラウザのセキュリティの主な側面は、いわゆる同一生成元ポリシーです。これは、一方のページで実行されるスクリプトは、両側が同じ起源(URI、ホスト名、および番号ポート)。ただし、被害者がWebサイトにアクセスしているときに、悪意のあるJavaScriptがブラウザで実行される可能性がある場合、ブラウザはJavaScriptが脆弱なWebサイトとリソースを共有する他のWebサイトからのデータにアクセスすることを許可します。JavaScriptは、Cookieやその他の独自のセッション情報にアクセスできます。これは、被害者のインターネットアカウントをハッキングするための優れたレシピです。

ペイロードXSS

マルウェアの用語では、ペイロードは、攻撃者が必要とするアクションを実行する実行可能コードです。XSS攻撃の場合、ペイロードは、攻撃者が被害者のブラウザをだまして実行させるために実行するスクリプトコードです。

GitHubのPayloadboxリポジトリには、XSSペイロードテンプレートの膨大なリストがあります。JavaScriptに精通している場合は、JavaScriptを確認することで、XSS攻撃者がどのように汚い仕事をしているのかがわかるかもしれません。ただし、XSS攻撃は、ペイロードを切り取ってURLに貼り付けるだけではありません。攻撃者は、攻撃を計画するために悪用したいWebアプリケーションの特定の機能と脆弱性を理解する必要があります。XSS攻撃の例をさらに深く掘り下げて確認したい場合は、OWASP XSS Webサイトをチェックして、XSS攻撃を示すスクリプトコードの詳細を確認してください。

XSSの保護と予防

WebアプリケーションまたはインタラクティブWebサイトを構築または保守している場合、潜在的なクロスサイトスクリプティング攻撃を回避するために設計で考慮する必要がある3つの主要な手法があります。

  • 入力データの滅菌。悪意のあるコードが入力として渡されてユーザーに返されるのを防ぐための明白な答えは、単にスクリプトコードを入力として受け入れないことです。これを念頭に置いて入力を確実にフィルタリングする必要がありますが、それは口で言うほど簡単ではありません。実行可能コードの小さな断片がフィルターをすり抜けることがあります。この問題に対処する1つの方法は、ブラックリストアプローチの代わりにホワイトリストを使用することです。たとえば、Webフォームに送られるすべての悪意のあるコードをブロックするフィルターを作成する代わりに、アプリケーションを作成して、特定の時間のデータフォーマット(電話番号、電子メールアドレスなど)は、それが必要な場合にのみ使用できます。
  • 出力からエスケープします。一方、これは問題の解決策です。Webアプリケーションがユーザー入力をWebページに送り返す場合、このデータをフィルタリングして、そのページで実行可能にならないようにする必要があります。ユーザーが入力としてHTMLタグを入力する場合、アプリケーションはオーバーライドされた文字を使用して、これらのタグがページ自体のHTMLと統合されるのではなく、結果ページにテキストとして表示されるようにする必要があります。
  • 標準コンテンツセキュリティポリシー(CSP)。CSPは、スクリプトの領域へのテキスト入力以外の「ホワイトリスト」アプローチを採用しています。Webアプリケーションは、ユーザーが安全であると指定したコードのみを実行する必要があります。Googleには、CSPの実装に関する優れたリソースがいくつかあります。

XSSテスト

XSS攻撃の脆弱性テストは、Webアプリケーションのセキュリティを確保するための重要な側面です。OWASPには、DOM攻撃やクロスサイトスクリプティングの逆行を回避するためにアプリケーションをテストする方法を詳しく説明したリソースがあります。XSSシートを探している場合、OWASPには、一部のXSS防御フィルターをバイパスするために使用できるXSS攻撃コードを含むドキュメントもあります。自分のシステムで実行できる侵入テストでは非常に貴重です。

XSSوCSRF

CSRFはXSSと同じコンテキストで使用されていると聞くかもしれません。これは、クロスサイトリクエストフォージェリの略で、ユーザーのブラウザを標的とする攻撃(XSSなど)です。主な違いは、CSRFはユーザーに対して認証されたセッションを使用する(おそらくユーザーは銀行口座にログインしている)のに対し、XSSは有効にするために認証されたセッションを必要としないことです。

ユーザーがTwitterとインターネットバンクに同時にログインしていて、次のようなTwitterリンクをクリックしたとします。

http://www.yourbank.com/sendmoney,do?from=you&to=attacker&amount=5000

銀行がセッショントークンを管理する方法と使用しているブラウザによっては、それらが突然非常に貧弱になる可能性があります。XSSはより危険な攻撃ベクトルですが、XSSとCSRFの両方から防御することが重要です。OWASPは、CSRFに対する保護対策に関する情報シートを作成しました。

最近の悪名高いXSS攻撃

最も古く、最も有名なクロスサイトスクリプティング攻撃の1つは、2005年に発生しました。進取の気性に富んだMySpaceユーザーのSammy Kamkarは、自分のプロファイルにJavaScriptコードを入力して、サイトにアクセスするすべての人を自動的に認証できることに気付きました。また、そのコードを自分のプロファイルにコピーします。新しい友達、そのおかげで、これらのページにアクセスするすべての人が彼の友達にもなります。(スクリプトは、Kamkarの新しい友達のそれぞれが「トップ8」に入るのを確実にしました-私たちはあなたがそこにいなければならないことを理解することを恐れていますが、私たちを信じてください、それは重要でした。)24時間以内に、彼は100万人以上の友達を作り、MySpaceにサイト全体を短時間シャットダウンさせました。

いわゆるサーミワームはほとんど無害であることがわかりました。しかし、他の人はもっと迷惑でした:

•Ebayには、ハッカーがユーザーのログイン資格情報を盗むことを可能にするXSSの脆弱性が何年もありました。

•XSS攻撃者は、2019年にFortniteプレーヤーからV-Bucksを盗むことができました。

•ハッキンググループのMagecartは、2018年にXSS攻撃でブリティッシュ・エアウェイズを攻撃し、数十万のユーザーIDを盗みました。

そして、クロスサイトスクリプティングは今日でも深刻な脅威となっています。2021年の時点で、XSSの脆弱性は、Zimbra電子メールプラットフォーム、Wordpress、およびオープンソースIT管理プラットフォームNagiosで発見されています。ハッカーは通常、攻撃手法を単独で使用しないことに注意してください。クロスサイトスクリプティングは、ALPACAとして知られるTLSワイルドカード攻撃の最近発見された複雑な形式のコンポーネントです。危険な脅威を回避するには、XSSの脆弱性を必ず閉じてください。

出典:CSO

こちらもご覧ください

Elon Muskは、ウクライナでスターリンクサービスを無料で提供しています

Related Articles

Back to top button