security testing
アプリケーションのセキュリティをテストする方法–Webおよびデスクトップアプリケーションのセキュリティテスト手法
セキュリティテストの必要性?
ソフトウェア業界は、この時代に確固たる認識を獲得しています。しかし、ここ10年で、サイバー世界はさらに支配的で推進力になり、ほぼすべてのビジネスの新しい形態を形作っているようです。今日使用されているWebベースのERPシステムは、ITが私たちの最愛のグローバルビレッジに革命をもたらしたことを示す最良の証拠です。
最近、ウェブサイトは宣伝やマーケティングだけを目的としたものではなく、完全なビジネスニーズに応えるためのより強力なツールに進化しています。
Webベースの給与システム、ショッピングモール、銀行、株取引アプリケーションは、組織で使用されているだけでなく、今日では製品としても販売されています。
これは、オンラインアプリケーションがSECURITYという名前の重要な機能に関して顧客とユーザーの信頼を得ていることを意味します。
間違いなく、セキュリティ係数はデスクトップアプリケーションにとっても主要な価値があります。
ただし、Webについて話すとき、セキュリティの重要性は飛躍的に高まります。オンラインシステムがトランザクションデータを保護できない場合、誰もそれを使用することを考えません。セキュリティはまだその定義を求める言葉ではなく、微妙な概念でもありません。しかし、私はセキュリティに関するいくつかの賛辞をリストしたいと思います。
基本的なc ++面接の質問
アプリケーションのセキュリティ上の欠陥の例
- 「入学」支部が「試験」支部のデータを編集できる場合、学生管理システムは安全ではありません。
- DEO(データ入力オペレーター)が「レポート」を生成できる場合、ERPシステムは安全ではありません
- 顧客のクレジットカードの詳細が暗号化されていない場合、オンラインショッピングモールにはセキュリティがありません
- SQLクエリがユーザーの実際のパスワードを取得する場合、カスタムソフトウェアのセキュリティは不十分です。
セキュリティ
さて、私はあなたに私自身の言葉でセキュリティの最も簡単な定義を提示します。
「セキュリティとは、保護されたデータへの許可されたアクセスが許可され、許可されていないアクセスが制限されることを意味します」 。
したがって、2つの主要な側面があります。 1つはデータの保護であり、2つ目はそのデータへのアクセスです。さらに、アプリケーションがデスクトップベースであろうとWebベースであろうと、セキュリティは前述の2つの側面を中心に展開されます。
デスクトップとWebベースの両方のソフトウェアアプリケーションのセキュリティ面の概要を説明しましょう。
学習内容:
デスクトップとWebのセキュリティテスト
デスクトップアプリケーションは、アクセスだけでなく、データの編成と保存に関しても安全である必要があります。
同様に、Webアプリケーションは、データ保護に加えて、アクセスに関するセキュリティをさらに要求します。 Web開発者は、アプリケーションをSQLインジェクション、ブルートフォース攻撃、およびXSS(クロスサイトスクリプティング)の影響を受けないようにする必要があります。同様に、Webアプリケーションがリモートアクセスポイントを容易にする場合、これらも安全でなければなりません。
さらに、ブルートフォース攻撃はWebアプリケーションに関連しているだけでなく、デスクトップソフトウェアもこれに対して脆弱であることに注意してください。
この序文で十分であることを願っています。それでは、要点を説明します。この記事の主題について読んでいると思っていた方は、お詫び申し上げます。ソフトウェアのセキュリティとその主な懸念事項について簡単に説明しましたが、私のトピックは「セキュリティテスト」です。
推奨読書=> Webアプリケーションのセキュリティテスト
ここで、セキュリティの機能がソフトウェアアプリケーションにどのように実装され、どのようにテストする必要があるかについて説明します。私の焦点は、セキュリティではなく、セキュリティテストの内容と方法にあります。
推奨されるセキュリティテストツール
#1)ネットパーカー
Netsparker は、HTML5、Web 2.0、シングルページアプリケーションなどのすべてのタイプのレガシーおよび最新のWebアプリケーションの自動クロールおよびスキャン機能を備えたWebアプリケーションセキュリティテストソリューションです。プルーフベースのスキャンテクノロジーとスケーラブルなスキャンエージェントを利用します。
管理する資産が多数ある場合でも、完全な可視性が得られます。チーム管理や脆弱性管理など、さらに多くの機能があります。 Jenkins、TeamCity、BambooなどのCI / CDプラットフォームに統合できます。
=> 最高のNetsparkerセキュリティテストツールをお試しください#二) Kiuwan
SDLCのすべての段階で、コードの脆弱性を見つけて修正します。
Kiuwan OWASP、CWE、SANS 25、HIPPAなどを含む最も厳しいセキュリティ標準に準拠しています。 KiuwanをIDEに統合して、開発中に即座にフィードバックを提供します。 Kiuwanは、すべての主要なプログラミング言語をサポートし、主要なDevOpsツールと統合します。
=> コードを無料でスキャンする#3) Indusfaceは無料のウェブサイトマルウェアチェックでした
インダスフェイスはだった OWASPトップ10に基づいて脆弱性を検出して報告する、独自の自動Webアプリケーション脆弱性スキャナーにバンドルされた手動侵入テストと、リンクのWebサイト評判チェック、マルウェア、およびすべてのスキャンでのWebサイトの改ざんチェックの両方を提供します
=> 無料でクイックウェブサイトスキャンを実行する
=> お問い合わせ ここにリストを提案します。
トップ8のセキュリティテスト手法のリスト
#1)アプリケーションへのアクセス
デスクトップアプリケーションであろうとウェブサイトであろうと、アクセスセキュリティはによって実装されます 「役割と権利の管理」。 多くの場合、機能をカバーしながら暗黙的に実行されますが、
例えば、 病院管理システムでは、受付係は患者を登録し、医師との面会をスケジュールするだけであるため、臨床検査について最も心配していません。
そのため、ラボテストに関連するすべてのメニュー、フォーム、画面は、「受付係」の役割で利用できるわけではありません。したがって、役割と権利を適切に実装することで、アクセスのセキュリティが保証されます。
テスト方法: これをテストするには、すべての役割と権利の徹底的なテストを実行する必要があります。
テスターは、複数の役割だけでなく、異なる役割を持つ複数のユーザーアカウントを作成する必要があります。次に、これらのアカウントを使用してアプリケーションを使用し、すべての役割が独自のモジュール、画面、フォーム、およびメニューにのみアクセスできることを確認する必要があります。テスターが競合を見つけた場合は、完全に自信を持ってセキュリティの問題をログに記録する必要があります。
これは、以下の画像に非常に美しく描かれている認証および承認テストとしても理解できます。
したがって、基本的には、個別のユーザーに対して「自分が誰であるか」と「何ができるか」についてテストする必要があります。
一部の認証テストには、パスワード品質ルールのテスト、デフォルトログインのテスト、パスワードリカバリのテスト、キャプチャのテスト、ログアウト機能のテスト、パスワード変更のテスト、セキュリティの質問/回答のテストなどが含まれます。
同様に、一部の許可テストには、パストラバーサルのテスト、許可の欠落のテスト、水平アクセス制御の問題のテストなどが含まれます。
#2)データ保護
データセキュリティには3つの側面があります。最初のものはそれです ユーザーは、使用することになっているデータのみを表示または利用できます 。これは、役割と権利によっても保証されます
例えば、 企業のTSR(テレセールス担当者)は、利用可能な在庫のデータを表示できますが、生産のために購入された原材料の量を確認することはできません。
したがって、セキュリティテストのこの側面はすでに上で説明されています。データ保護の第2の側面は、 そのデータがDBにどのように保存されるか 。
さらに読む= >> データベースセキュリティテストとは
すべての機密データは、安全にするために暗号化する必要があります。特にユーザーアカウントのパスワード、クレジットカード番号、その他のビジネス上重要な情報などの機密データの場合、暗号化は強力である必要があります。
3番目と最後の側面はこの2番目の側面の拡張です。機密データまたはビジネスクリティカルなデータのフローが発生した場合は、適切なセキュリティ対策を講じる必要があります。このデータが同じアプリケーションの異なるモジュール間でフロートする場合でも、異なるアプリケーションに送信される場合でも、安全を確保するために暗号化する必要があります。
データ保護をテストする方法: テスターは、データベースにユーザーアカウントの「パスワード」、クライアントの請求情報、その他のビジネスクリティカルで機密性の高いデータを照会し、そのようなデータがすべて暗号化された形式でDBに保存されていることを確認する必要があります。
同様に、適切な暗号化を行った後にのみ、データが異なるフォームまたは画面間で送信されることを確認する必要があります。さらに、テスターは、暗号化されたデータが宛先で適切に復号化されていることを確認する必要があります。さまざまな「送信」アクションに特別な注意を払う必要があります。
テスターは、情報がクライアントとサーバー間で送信されているときに、Webブラウザーのアドレスバーにわかりやすい形式で表示されていないことを確認する必要があります。これらの検証のいずれかが失敗した場合、アプリケーションには間違いなくセキュリティ上の欠陥があります。
テスターは、ソルティングが適切に使用されているかどうかも確認する必要があります(パスワードなどの最後の入力に余分な秘密の値を追加して、より強力にし、解読しにくくします)。
安全でないランダム性も一種の脆弱性であるため、テストする必要があります。データ保護をテストする別の方法は、アルゴリズムの使用が弱いかどうかを確認することです。
0と1の間のc ++ランダム
例えば、 HTTPはクリアテキストプロトコルであるため、ユーザーの資格情報などの機密データがHTTP経由で送信される場合、アプリケーションのセキュリティに対する脅威になります。 HTTPの代わりに、機密データをHTTPS経由で転送する必要があります(SSL、TLSトンネルで保護)。
ただし、HTTPSは攻撃対象領域を増やすため、サーバー構成が適切であり、証明書の有効性が保証されていることをテストする必要があります。
#3)ブルートフォース攻撃
ブルートフォース攻撃は、主にいくつかのソフトウェアツールによって行われます。コンセプトは、有効なユーザーIDを使用することにより、 oftwareは、何度もログインを試みることにより、関連するパスワードを推測しようとします。
このような攻撃に対するセキュリティの簡単な例は、「Yahoo」、「Gmail」、「Hotmail」などのすべてのメールアプリケーションが行うように、短期間のアカウントの停止です。特定の数の連続した試行(ほとんどの場合3回)が正常にログインに失敗した場合、そのアカウントはしばらくの間(30分から24時間)ブロックされます。
ブルートフォース攻撃をテストする方法: テスターは、アカウント停止の何らかのメカニズムが利用可能であり、正確に機能していることを確認する必要があります。 (S)無効な資格情報でログインを継続的に試みた場合にソフトウェアアプリケーションがアカウントをブロックすることを確認するために、代わりに無効なユーザーIDとパスワードでログインを試みる必要があります。
アプリケーションがそうしている場合、ブルートフォース攻撃に対して安全です。それ以外の場合、このセキュリティの脆弱性はテスターによって報告される必要があります。
ブルートフォースのテストは、ブラックボックステストとグレーボックステストの2つの部分に分けることもできます。
ブラックボックステストでは、アプリケーションで採用されている認証方法が検出され、テストされます。さらに、グレーボックステストは、パスワードとアカウントの詳細およびメモリのトレードオフ攻撃に関する部分的な知識に基づいています。
クリック ここに ブラックボックスとグレーボックスのブルートフォーステストを例とともに調べます。
上記の3つのセキュリティの側面は、Webアプリケーションとデスクトップアプリケーションの両方で考慮に入れる必要がありますが、次の点はWebベースのアプリケーションのみに関連しています。
#4)SQLインジェクションとXSS(クロスサイトスクリプティング)
概念的には、これら両方のハッキングの試みのテーマは類似しているため、これらについて一緒に説明します。このアプローチでは、 悪意のあるスクリプトは、ハッカーがWebサイトを操作するために使用します 。
そのような試みに対して免疫するいくつかの方法があります。 Webサイトのすべての入力フィールドについて、フィールドの長さは、スクリプトの入力を制限するのに十分な長さに定義する必要があります
ネットワークセキュリティコードを見つけるにはどうすればよいですか
例えば、 姓のフィールド長は255ではなく30にする必要があります。大きなデータ入力が必要な入力フィールドがある場合があります。そのようなフィールドでは、アプリケーションにデータを保存する前に、入力の適切な検証を実行する必要があります。
さらに、このようなフィールドでは、HTMLタグまたはスクリプトタグの入力を禁止する必要があります。 XSS攻撃を誘発するために、アプリケーションは、未知または信頼できないアプリケーションからのスクリプトリダイレクトを破棄する必要があります。
方法 SQLインジェクションをテストする およびXSS: テスターは、すべての入力フィールドの最大長が定義および実装されていることを確認する必要があります。 (S)彼はまた、定義された長さの入力フィールドが、タグ入力だけでなくスクリプト入力にも対応しないようにする必要があります。これらは両方とも簡単にテストできます
例えば、 「名前」フィールドに指定された最大長が20の場合、入力文字列「
thequickbrownfoxjumpsoverthelazydog」は、これら両方の制約を検証できます。
また、アプリケーションが匿名アクセス方式をサポートしていないことをテスターが確認する必要があります。これらの脆弱性のいずれかが存在する場合、アプリケーションは危険にさらされています。
基本的に、SQLインジェクションテストは次の5つの方法で実行できます。
- 検出技術
- 標準のSQLインジェクション手法
- データベースをフィンガープリントする
- 技術的搾取
- SQLインジェクションシグネチャ侵入テクニック
クリック ここに SQLインジェクションをテストする上記の方法について詳しく読む。
XSSは、悪意のあるスクリプトをWebサイトに挿入する一種の挿入でもあります。クリック ここに XSSのテストについて詳しく調べる。
#5)サービスアクセスポイント(密閉された安全なオープン)
今日、企業は相互に依存し、協力しています。同じことがアプリケーション、特にWebサイトにも当てはまります。このような場合、両方の共同作業者は、相互にいくつかのアクセスポイントを定義して公開する必要があります。
これまでのところ、シナリオは非常に単純で単純に見えますが、株取引などの一部のWebベースの製品では、物事はそれほど単純で簡単ではありません。
ターゲットオーディエンスが多数ある場合、アクセスポイントは、すべてのユーザーを容易にするために十分に開いており、すべてのユーザーの要求を満たすために十分に対応し、セキュリティトライアルに対処するために十分に安全である必要があります。
サービスアクセスポイントをテストする方法: で説明させてください 例 株取引ウェブアプリケーションの;投資家(株式を購入したい)は、株価に関する現在および過去のデータにアクセスできる必要があります。ユーザーには、この履歴データをダウンロードする機能を提供する必要があります。これには、アプリケーションが十分に開いている必要があります。
順応性があり安全であるということは、このアプリケーションが投資家が自由に取引できるようにする必要があることを意味します(法規制の下で)。彼らは24時間年中無休で購入または販売することができ、トランザクションのデータはハッキング攻撃の影響を受けないようにする必要があります。
さらに、多数のユーザーが同時にアプリケーションを操作するため、アプリケーションはすべてのユーザーを楽しませるのに十分なアクセスポイントを提供する必要があります。
場合によっては、これら アクセスポイントは、不要なアプリケーションや人のために封印することができます 。これは、アプリケーションのビジネスドメインとそのユーザーによって異なります。
例えば、 カスタムWebベースのOffice管理システムは、IPアドレスに基づいてユーザーを認識し、そのアプリケーションの有効なIPの範囲に含まれない他のすべてのシステム(アプリケーション)との接続の確立を拒否する場合があります。
テスターは、すべての ネットワーク間およびネットワーク内アクセス アプリケーションへのアクセスは、信頼できるアプリケーション、マシン(IP)、およびユーザーによるものです。
オープンアクセスポイントが十分に安全であることを確認するために、テスターは信頼できるIPアドレスと信頼できないIPアドレスの両方を持つ異なるマシンからアクセスを試みる必要があります。アプリケーションのパフォーマンスに十分な信頼を置くには、さまざまな種類のリアルタイムトランザクションをまとめて試す必要があります。そうすることで、アプリケーションのアクセスポイントの容量も明確に観察されます。
テスターは、他のすべての要求が拒否されている間のみ、アプリケーションが信頼できるIPおよびアプリケーションからのすべての通信要求を受け入れることを確認する必要があります。
同様に、アプリケーションにオープンアクセスポイントがある場合、テスターは、(必要に応じて)ユーザーが安全な方法でデータをアップロードできることを確認する必要があります。この安全な方法では、ファイルサイズの制限、ファイルタイプの制限、およびアップロードされたファイルのウイルスやその他のセキュリティ上の脅威のスキャンについて説明します。
これが、テスターがアクセスポイントに関してアプリケーションのセキュリティを検証する方法です。
#6)セッション管理
Webセッションは、同じユーザーにリンクされたHTTP要求および応答トランザクションのシーケンスです。セッション管理テストは、Webアプリでセッション管理がどのように処理されるかを確認します。
特定のアイドル時間後のセッションの有効期限、最大有効期間後のセッション終了、ログアウト後のセッション終了、セッションCookieのスコープと期間の確認、1人のユーザーが複数の同時セッションを持つことができるかどうかのテストなどを行うことができます。
#7)エラー処理
エラー処理のテストには次のものが含まれます。
エラーコードを確認する : 例えば、 テスト408リクエストのタイムアウト、400の不正なリクエスト、404が見つかりませんなど。これらをテストするには、これらのエラーコードが返されるように、ページに対して特定のリクエストを行う必要があります。
エラーコードは詳細メッセージとともに返されます。これらのメッセージには、ハッキング目的で使用できる重要な情報を含めるべきではありません
スタックトレースを確認します :基本的には、返されるエラーメッセージにハッカーにとって興味深い情報を含むスタックトレースが含まれるように、アプリケーションに例外的な入力を与えることが含まれます。
#8)特定の危険な機能
主に、2つの危険な機能は 支払い そして ファイルのアップロード 。これらの機能は非常によくテストする必要があります。ファイルのアップロードの場合、不要または悪意のあるファイルのアップロードが制限されていることを主にテストする必要があります。
支払いの場合、主にインジェクションの脆弱性、安全でない暗号化ストレージ、バッファオーバーフロー、パスワード推測などをテストする必要があります。
=> お問い合わせ ここにリストを提案します。参考文献: