技術共有

一般的な Web 脆弱性の分析と予防研究

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

  • 序文:

今日のデジタル時代において、Web アプリケーションは重要な役割を果たし、さまざまなオンライン サービスや機能を提供します。ただし、これらのアプリケーションは多くの場合、機密情報の漏洩、システムの麻痺、その他の悪影響につながる可能性のあるさまざまな潜在的なセキュリティ脅威に直面しています。

  • SQLインジェクションの脆弱性

SQL インジェクション攻撃 (SQL インジェクション) は、インジェクション攻撃または SQL インジェクションと呼ばれ、Web サイトの制御を不正に取得するために広く使用されており、アプリケーションのデータベース層で発生するセキュリティ上の脆弱性です。プログラム設計時に入力文字列に含まれるSQL命令のチェックが無視され、データベースが通常のSQL命令と誤認して実行し、データベースが攻撃にさらされ、データが盗まれる可能性があると変更、削除され、さらに悪意のあるコードが埋め込まれたり、バックドアプログラムが埋め込まれたりするなどの危険がWebサイトに発生します。

通常、SQL インジェクションの場所には次のものが含まれます。

  1. フォーム送信 (主に POST リクエスト) には GET リクエストも含まれます。
  2. URL パラメータの送信、主に GET リクエスト パラメータ。
  3. Cookieパラメータの送信。
  4. Referer、User_Agent など、HTTP リクエスト ヘッダー内の一部の変更可能な値。
  5. .mp3 ファイルのファイル情報など、いくつかのエッジ入力ポイント。

一般的な予防方法:

  • すべてのクエリ ステートメントは、データベースによって提供されるパラメータ化されたクエリ インターフェイスを使用します。パラメータ化されたステートメントは、SQL ステートメントにユーザー入力変数を埋め込む代わりにパラメータを使用します。現在のほとんどすべてのデータベース システムは、パラメータ化された SQL ステートメント実行インターフェイスを提供しています。このインターフェイスを使用すると、SQL インジェクション攻撃を効果的に防ぐことができます。
  • データベースに入力される特殊文字 ('"<>&*; など) をエスケープするかエンコードします。
  • 各データの型を確認します。たとえば、数値データは数値である必要があり、データベース内の格納フィールドは int 型に対応している必要があります。
  • データ長を厳密に指定する必要があるため、比較的長い SQL インジェクション ステートメントがある程度正しく実行されなくなる可能性があります。
  • Web サイトの各データ層のエンコードは統一されており、上位層と下位層のエンコードが一致しないと、一部のフィルタリング モデルがバイパスされる可能性があります。
  • Web サイト ユーザーのデータベース操作権限を厳密に制限し、そのユーザーに自分の作業に必要な権限のみを付与することで、データベースへのインジェクション攻撃の被害を最小限に抑えます。
  • Web サイトが型エラーやフィールドの不一致などの SQL エラー メッセージを表示しないようにし、攻撃者がこれらのエラー メッセージを使用して何らかの判断を下すのを防ぎます。
  • Web サイトがリリースされる前に、専門的な SQL インジェクション検出ツールを使用して、これらの SQL インジェクションの脆弱性を適時に検出して修復することをお勧めします。

  • クロスサイトスクリプティングの脆弱性

クロスサイト スクリプティング (XSS と呼ばれることが多い) はクライアント側で発生し、プライバシーの盗用、フィッシング、パスワードの盗用、悪意のあるコードの拡散、その他の攻撃に使用される可能性があります。

XSS 攻撃で使用されるテクノロジーは、主に HTML と Javascript であり、VBScript や ActionScript も含まれます。 XSS 攻撃は、WEB サーバーに直接的な被害を与えませんが、Web サイトを通じて拡散し、Web サイトのユーザーを攻撃し、その結果、Web サイトのユーザーアカウントが盗まれ、Web サイトに重大な被害をもたらします。

XSS タイプには次のものがあります。

  • 非永続的なクロスサイト: 反映されたクロスサイト スクリプティングの脆弱性は、現在最も一般的なタイプのクロスサイトです。クロスサイト コードは通常、リンク内に存在します。このようなリンクを要求すると、このタイプのクロスサイト コードはサーバー (データベースなど) に保存されません。上の章で挙げた例はそのような状況です。
  • 永続的なクロスサイト: これは最も直接的なタイプのクロスサイト被害です。クロスサイト コードはサーバー (データベースなど) に保存されます。一般的な状況としては、ユーザーがフォーラムに投稿した場合、ユーザーが入力した Javascript コード データがフォーラムでフィルタリングされていない場合、投稿を閲覧する他のユーザーのブラウザが投稿者によって埋め込まれた Javascript コードを実行することになります。
  • DOM クロスサイト (DOM XSS): クライアント DOM (Document Object Model) で発生するクロスサイト脆弱性です。主な原因は、クライアント スクリプト処理ロジックによって引き起こされるセキュリティ問題です。

一般的に使用される XSS 防止手法には次のものがあります。

  1. SQL インジェクション保護の推奨事項と同様、すべての入力が疑わしいと想定されており、すべての入力内の script、iframe などの単語を厳密にチェックする必要があります。ここでの入力には、ユーザーが直接操作できる入力インターフェイスだけでなく、HTTP リクエストの Cookie 内の変数、HTTP リクエスト ヘッダー内の変数なども含まれます。
  2. データの種類だけでなく、その形式、長さ、範囲、内容も確認してください。
  3. データの検証とフィルタリングをクライアント側で実行するだけではなく、主要なフィルタリング手順はサーバー側で実行されます。
  4. 出力データもチェックする必要があります。大規模な Web サイトでは、データベース内の値が複数の場所に出力される場合があります。入力がエンコードされ、その他の操作が実行される場合でも、あらゆる出力ポイントでセキュリティ チェックを実行する必要があります。
  5. アプリケーションをリリースする前に、既知の脅威をすべてテストしてください。

  • 弱いパスワードの脆弱性

弱いパスワードの厳密かつ正確な定義はありません。他の人 (よく知っている人) によって簡単に推測されたり、クラッキング ツールによって解読されたりするパスワードは、一般に弱いパスワードとみなされます。パスワードの設定は通常、次の原則に従います。

  1. 空のパスワードやシステムのデフォルトのパスワードは、一般的に弱いパスワードであることが知られているため、使用しないでください。
  2. パスワードの長さは 8 文字以上である必要があります。
  3. パスワードは、連続する文字列 (例: AAAAAAAA) や、繰り返される文字の組み合わせ (例: tzf.tzf.) であってはなりません。
  4. パスワードは、大文字(A~Z)、小文字(A~Z)、数字(0~9)、特殊文字の4種類の文字を組み合わせてください。各タイプの文字が少なくとも 1 つ含まれます。特定の種類の文字に 1 つのみの文字が含まれる場合、その文字は最初または最後の文字であってはなりません。
  5. パスワードには、名前、生年月日、記念日、ログイン名、電子メール アドレス、本人、両親、子供、配偶者に関連するその他の情報、および辞書に載っている単語を含めないでください。
  6. パスワードには、特定の文字を数字や記号で置き換えた単語を使用しないでください。
  7. パスワードは、他の人があなたの入力を後ろから簡単に見られないように、覚えやすく、すぐに入力できるものにする必要があります。
  8. 検出されていない侵入者がパスワードを使用し続けることを防ぐために、少なくとも 90 日に 1 回はパスワードを変更してください。

  • HTTPヘッダー追跡の脆弱性

HTTP/1.1 (RFC2616) 仕様では、HTTP TRACE メソッドが定義されています。このメソッドは、主にクライアントが TRACE 要求を Web サーバーに送信してテストまたは診断情報を取得するために使用します。 Web サーバーが TRACE を有効にすると、送信されたリクエスト ヘッダーはサーバー応答のコンテンツ (本文) で完全に返されます。HTTP ヘッダーにはセッション トークン、Cookie、またはその他の認証情報が含まれる可能性があります。攻撃者はこの脆弱性を悪用して正規ユーザーを騙し、個人情報を取得する可能性があります。この脆弱性は、効果的な攻撃を実行するために他の方法と組み合わされることが多く、HTTP TRACE リクエストはクライアント ブラウザ スクリプト (XMLHttpRequest など) を通じて開始され、DOM インターフェイスを通じてアクセスできるため、攻撃者によって簡単に悪用されます。 HTTP ヘッダー追跡の脆弱性を防御する方法では、通常、HTTP TRACE メソッドが無効になります。

  • Struts2のリモートコマンド実行の脆弱性

Apache Struts は、Java Web アプリケーションを構築するためのオープンソース フレームワークです。 Apache Struts には入力フィルタリングのバグがあり、変換エラーが発生した場合に悪用されて、任意の Java コードを挿入および実行される可能性があります。

Web サイトにリモート コード実行の脆弱性がある理由のほとんどは、Web サイトが Web サイト アプリケーション フレームワークとして Apache Struts Xwork を使用しているためです。このソフトウェアには高リスクのリモート コード実行の脆弱性があるため、Web サイトはセキュリティ リスクに直面します。 CNVD は、「GPS Vehicle Satellite Positioning System」Web サイトのリモート コマンド実行の脆弱性 (CNVD-2012-13934)、Aspcms ゲストブックのリモート コード実行の脆弱性 (CNVD-2012-11590) など、多くのこのような脆弱性に対処してきました。 、など。

  • ファイルアップロードの脆弱性

ファイル アップロードの脆弱性は、通常、Web ページ コード内のファイル アップロード パス変数のフィルタリングが緩いことが原因で発生します。ファイル アップロード機能の実装コードが、ユーザーがアップロードするファイル サフィックスとファイル タイプを厳密に制限していない場合、攻撃者はアクセス可能なディレクトリを介して任意のファイルをアップロードできます。 Web サイトのバックドア ファイル (Web シェル) を含む Web 経由で Web サイト サーバーをリモート制御します。

したがって、Web サイトやアプリケーションの開発時には、アップロードされるファイルを厳密に制限および検証する必要があり、悪意のあるコードを含むファイルをアップロードする必要があります。同時に、Web シェル攻撃を防ぐために、関連するディレクトリの実行権限が制限されます。

  • プライベートIPアドレス漏洩の脆弱性

IP アドレスはネットワーク ユーザーを示す重要な指標であり、攻撃者が攻撃を開始する前に知る必要があるものです。これを取得する方法は数多くあり、攻撃者はさまざまなネットワーク状況に応じてさまざまな方法を採用します。たとえば、LAN 内で Ping コマンドを使用して、ネットワーク上の相手の名前に ping を実行し、IP バージョンを使用して IP を取得します。 QQ を使用してインターネット上に直接表示します。最も効果的な方法は、相手のネットワーク データ パケットを傍受して分析することです。攻撃者は、ソフトウェアを介して傍受したデータ パケットの IP ヘッダー情報を見つけて直接分析し、この情報に基づいて特定の IP を知ることができます。

最も効果的な「パケット分析方法」を実現するには、送信されたデータ パケットのヘッダーにある IP 情報を自動的に削除できるソフトウェアをインストールします。ただし、これらのソフトウェアの使用には、リソースを大幅に消費し、コンピュータのパフォーマンスが低下する、一部のフォーラムや Web サイトにアクセスするときに影響を受ける、インターネット カフェのユーザーには適さないなどの欠点があります。現在、個人ユーザーが自分の IP を隠す最も一般的な方法は、プロキシを使用することです。プロキシ サーバーを使用すると、「転送サービス」によって送信されるデータ パケットが変更され、「パケット分析」方法が無効になります。ユーザー IP を漏洩しやすい一部のネットワーク ソフトウェア (QQ、MSN、IE など) は、インターネットに接続するためのプロキシ方法の使用をサポートしています。特に、QQ が「ezProxy」などのプロキシ ソフトウェアを使用して接続した後は、QQ の IP バージョンは使用できなくなります。 IPアドレスを表示します。プロキシはユーザーの IP を効果的に隠すことができますが、攻撃者はプロキシをバイパスして相手の実際の IP アドレスを見つけることもできます。どのような状況でユーザーが IP を隠すために使用する方法も状況によって異なります。

  • 暗号化されていないログイン要求

Web 設定は安全ではなく、ログイン要求ではユーザー名やパスワードなどの機密フィールドが暗号化されずに送信されるため、攻撃者はネットワークを盗聴してこの機密情報を盗む可能性があります。 SSHなどで暗号化して送信することを推奨します。

  • 機密情報漏洩の脆弱性

SQL インジェクション、XSS、ディレクトリ トラバーサル、脆弱なパスワードなどにより機密情報が漏洩する可能性があり、攻撃者が脆弱性を利用して機密情報を取得する可能性があります。原因ごとに異なる防御方法が使用されます。

  • CSRF

Web アプリケーションとは、B/S アーキテクチャを使用し、HTTP/HTTPS プロトコルを通じてサービスを提供するための一般的な用語を指します。インターネットの普及に伴い、Web アプリケーションはオンライン ショッピング、オンライン バンキング アプリケーション、証券や株式の取引、政府の行政承認など、日常生活のあらゆる側面に組み込まれています。こうした Web 訪問では、ほとんどのアプリケーションは静的な Web ブラウジングではなく、サーバー側での動的な処理を伴います。このとき、Java、PHP、ASPなどのプログラミング言語のプログラマがセキュリティ意識が不十分で、プログラムパラメータの入力などを厳密にチェックしていないと、Webアプリケーションのセキュリティ上の問題が次々と発生します。

では、上記の脆弱性を時間内に発見するにはどうすればよいでしょうか?

言及しなければならない脆弱性スキャンサービス VSS!!

脆弱性スキャンサービスとは何ですか?

インターネットの普及以来、脆弱性攻撃によるネットワークセキュリティ事故が後を絶たず、深刻化しています。脆弱性によって引き起こされる経済的損失は世界中で毎年巨額であり、年々増加しており、脆弱性はインターネットに害を及ぼす主な原因の 1 つとなっており、世間の注目を集めています。

「脆弱性スキャン サービス (VSS) は、Web サイトの脆弱性スキャンのためのセキュリティ検出サービスです。現在、一般的な脆弱性検出、脆弱性ライフ サイクル管理、カスタマイズされたスキャンなどの複数のサービスを提供しています。ユーザーは新しいタスクを作成した後、スキャンを手動でトリガーできます。 Web サイトの脆弱性を検出し、脆弱性の修復提案を提供するタスク。

ネットワーク システムのセキュリティは、ネットワーク システム内の最も弱いリンクに依存します。最も効果的な方法は、ネットワーク システムの定期的なセキュリティ分析とスキャンを実行し、脆弱性を検出することです。タイムリーに変更してください。

    • 脆弱性スキャン サービスのアプリケーション シナリオ:
      1. Webサイト・申込システムオンライン

新しい Web サイト/アプリケーション システムをオンラインにする場合、オンライン Web サイト/アプリケーション システムに脆弱性やリスクがあるかどうかを評価するために、最初に Web サイト/アプリケーション システムのセキュリティ評価を実施し、その後 Web サイト/アプリケーション システムのセキュリティを確保する必要があります。オンラインになり、ハッキングやハッキングのリスクを軽減し、オンラインになった後のWebサイト/アプリケーションシステムの安全な動作を確保します。

      1. Web サイト/アプリケーション システムの脅威と攻撃

新たな脅威や攻撃が増え続ける中、Web アプリケーションのセキュリティはビジネス開発の持続性に直接影響を与えます。 Web サイト/アプリケーション システムは攻撃やネットワーク セキュリティの脅威にさらされることが多く、その結果、ネットワーク情報の盗聴、再送信、改ざん、サービス妨害攻撃、さらにはネットワーク動作の拒否、なりすまし、不正アクセス、ウイルスの感染、その他の問題が発生します。 。セキュリティ検査は、Web サイト/アプリケーション システムの包括的な検査であり、Web サイトがハッカーに使用されて Web サイトのセキュリティに影響を与えるのを防ぐために、専門的な修復提案が提供されます。

      1. Webサイト/アプリケーションシステムのリアルタイム監視

政府、教育、財務などの部門は、Web サイトをリアルタイムで監視する必要があります。脆弱性が時間内に修復されない場合、政府、教育などの部門のイメージに重大な影響を及ぼし、企業に多大な損失をもたらすことになります。 Web サイト/アプリケーション システムのセキュリティをリアルタイムで監視および管理することが必要です。セキュリティ検出は、監視結果を直感的に表示し、リスクが発見されるとすぐに警告を発します。また、Web ページの異常を迅速に特定して警告を通知することで、脆弱性が悪用されてシステムのセキュリティに影響を与えることを防ぎます。

      1. ウェブサイト/アプリケーション システムおよびその他のコンプライアンス要件

情報セキュリティ レベル保護は、我が国の情報セキュリティの基本的なシステムであり、ネットワーク オペレータはネットワーク セキュリティ レベル保護システムの要件に従うことが求められます。クラス A 保証では、Web サイト/アプリケーション システム オペレーターが少なくとも年に 2 回セキュリティ評価を実施し、クラス A 保証に準拠していることを確認する必要があります。安全性テストは、そのような保険を必要とするユーザーが安全性評価を実施し、そのような保険のコンプライアンス要件を満たすのに役立ちます。

    • 脆弱性スキャン サービスには一般的に何が含まれますか?
      1. Web脆弱性スキャン

Web サイトの抜け穴や弱点はハッカーによって簡単に悪用され、攻撃を引き起こし、悪影響をもたらし、経済的損失を引き起こす可能性があります。

一般的な脆弱性スキャン豊富な脆弱性ルール ライブラリにより、さまざまな種類の Web サイトに対して包括的かつ詳細な脆弱性スキャンを実行し、専門的かつ包括的なスキャン レポートを提供できます。

最も緊急性の高い脆弱性をスキャンします最も緊急性の高い CVE 脆弱性については、セキュリティ専門家が脆弱性を即座に分析し、ルールを更新し、最速かつ最も専門的な CVE 脆弱性スキャンを提供します。

      1. 弱いパスワードのスキャン

ホストやミドルウェアなどの資産は通常、リモート ログインにパスワードを使用し、攻撃者は多くの場合、スキャン テクノロジを使用してユーザー名と脆弱なパスワードを検出します。

複数のシーンが利用可能包括的な OS 接続。ミドルウェアの 90% をカバーし、標準的な Web サービス、オペレーティング システム、データベースなどの脆弱なパスワード検出をサポートします。

脆弱なパスワードの豊富なライブラリ豊富な弱いパスワード マッチング ライブラリは、ハッカーをシミュレートしてさまざまなシナリオで弱いパスワードを検出し、パスワード検出用のカスタム辞書をサポートします。

      1. ミドルウェアのスキャン

ミドルウェアは、ユーザーが複雑なアプリケーション ソフトウェアを柔軟かつ効率的に開発および統合するのに役立ちます。脆弱性が発見され、ハッカーによって悪用されると、上位層と下位層のセキュリティに影響を及ぼします。

豊富なスキャンシナリオ主流の Web コンテナ、フロントエンド開発フレームワーク、バックエンド マイクロサービス テクノロジ スタックのバージョン脆弱性と構成コンプライアンスのスキャンをサポートします。

複数のスキャン方法がオプション標準パッケージやカスタマイズインストールなどさまざまな方法でサーバー内のミドルウェアとそのバージョンの識別をサポートし、サーバー内の脆弱性リスクを包括的に検出します。

      1. コンテンツコンプライアンステスト

Web サイトに準拠していない表現が含まれていることが判明すると、企業のブランドと経済に複数の損失が発生します。

正確な識別現在の政治的ホットスポットや世論イベントのサンプルデータを同期的に更新し、さまざまなポルノ、暴力関連、テロ関連、政治関連、その他の機密コンテンツを正確に特定します。

スマートで効率的テキストと画像のコンテンツに対して文脈上の意味分析を実行し、複雑なテキストのバリアントをインテリジェントに識別します。

  • 要約:

ひとたび脆弱性が犯罪者によって悪用されると、企業は多大な損失を被ることになります。 Web サイトのリスクを積極的に発見し、タイムリーに是正措置を講じることができれば、リスクと損失を軽減できます。したがって、積極的な予防策としての脆弱性スキャンは、ハッカーの攻撃を効果的に回避し、問題の芽を摘む上で大きな役割を果たします。

脆弱性スキャンサービスは、Webサイトのセキュリティ管理が直面する課題を効果的に解決するとともに、セキュリティ検査作業に求められる効率性と正確性をより適切に満たし、Webサイトとアプリケーションのセキュリティ管理レベルを向上させることができます。