
この記事では、脆弱なWebアプリケーションを保護する方法について説明します-署名方法からWeb Application Firewall (商用およびオープンソースバージョン)を使用した人工知能まで。 Nemesida WAFを商用ソリューションとして使用し、NAXSIを非商用ソリューションとして使用します。 この記事には、WAFの操作に関する一般的および技術的な情報、攻撃検出方法の比較、それらの機能と弱点の分析が含まれています。
攻撃検知
WAFの最初の主要なタスクは、最小限の誤検知(誤検知)で攻撃を正確に判断することです。 NAXSIでは、攻撃を決定するための署名メカニズムのみが規定されています(動作分析は初期状態にあるため、考慮しません)。NemesidaWAFには、署名ベースの定性的な行動分析と機械学習の3つがあります。 攻撃を決定するための包括的な方法といえば、これら3つの方法の共生を意味します。 なぜ3つ? それを理解しましょう。
シグネチャ攻撃検出方法
技術の急速な発展にもかかわらず、ほとんどの攻撃は署名方法によって検出され、署名分析(機械学習を含む)に基づくすべての方法の精度は、署名がどれだけうまく書かれているかに依存します。 署名方式を使用してWebアプリケーションへの攻撃を定義する例を考えてみましょう。
index.php?id=-1'+union+select+1,2,3,4,5+--+1
この場合、攻撃の署名は「ユニオン+選択」チェーンのエントリになります。
NAXSIが見逃す攻撃の例:
index.php?id=-1'+Union+Select+1,2,3,4,5+--+1
NAXSIはこのような攻撃をスキップします。エラーが原因でリクエストを処理するとき、コードは大文字で指定された最初の文字「ストップワード」を考慮せず、リクエストが「ユニオン」と「選択」の署名に適合しないためです。
NAXSIは、DBMSバージョンを取得するための直接呼び出しをスキップします。
id=version();+--+
これは、他のユーティリティ関数-「CURRENT_USER()」、「DATABASE()」、「ROW_COUNT()」などにも適用されます。 NAXSIは、署名ベースとの比較のためにURLENCODEDデータまたはバイナリ文字列を変換しない(正規化しない)ため、このような攻撃もスキップされます。
id=concat_ws%23%0a(0b00111010,database%0b(%0b),database%09(%09)
id=1 anD 0 unio%6e %23def%0a sELEc%74%23zxc%0a
そして、そのような攻撃も見逃します。
1: <iframe/onload='this[«src»]=«javas cript:al»+«ert``»';>
2: <img/src=q onerror='new Function`al\ert\`1\``'>
NAXSI署名では、ペイロードをマスキングする最新の方法がすべて考慮されておらず、大幅な改良が必要であることに注意してください。 また、MySQLコマンドの構文に従った正規表現を考慮すると、次のように、「危険なエントリ」をホワイトリストに追加する可能性がかなりあります(誤検知を伴う)。
MainRule "rx:select|union|update|delete|insert|table|from|ascii|hex|unhex|drop" "msg:sql keywords" "mz:BODY|URL|ARGS|$HEADERS_VAR:Cookie" "s:$SQL:4" id:1000;
偽陽性
誤検知の数をゼロに減らすには、各署名(スコアリング)の脅威レベルを正確に設定する必要があります。 不適切なスコアリング(「order」および「by」演算子を例として使用)を含むルールを考えてください。これにより、誤検知が発生します。
The New World Order is a book written by HG Wells
上記の例でのFalse Positiveの理由は、適用可能性とクエリゾーンに関係なく、MySQLステートメントの発生が高いスコアであるためです。
そして、正しいスコアリング(チェーンエントリ)のルールの例を次に示します。
index.php?id=1+order+by+10+--+
署名分析:結論
1.署名の開発には、高い能力と攻撃者の仕組みの理解が必要です。 このような知識は、セキュリティ分析部門にあります。
2.署名は常に更新する必要があります。
3.特殊な処理(動作分析)なしで署名を使用すると、偽陽性(偽陽性)になります。
ルールを正確かつ完全に設定した場合でも、攻撃を検出する署名方法には、誤検知につながるか、攻撃を完全に逃す2つの主な欠点があります。
- 署名メソッドがユニオンの発生を検出し、URI内の演算子を選択すると、スコアが高くなり、リクエストが誤ってブロックされます:/weareunion/sub/select_your_choice.php
- シグニチャまたは攻撃シグニチャのチェーンのスコアが低いが、「機密」情報を取得できる場合は偽陰性:some.php?サイズ=バージョン%28%29%20;%20-
これらの欠点の両方に対処するには、攻撃を識別するための高度なモデル(動作分析と機械学習)が必要になります。
行動分析
すぐに練習しましょう:
1: index.php?id=1
2: index.php?id=3-2
3: index.php?id=-1
4: index.php?id=1'
5: index.php?id='1
6: index.php?id=1 and sleep(5)
この例では、パラメーターの操作、引用符の追加、およびスリープ機能により、SQLインジェクションを検出しようとしています。 これらの異なる兆候自体には、明示的な攻撃ベクトルは含まれていませんが、それらの組み合わせにより、攻撃者がWebアプリケーションを「プローブ」しようとしていることが明らかになります。 数学的モデルは、一定期間にわたるユーザーの行動の兆候を要約し、これに基づいてブロッキングが発生します。これにより、正当なWebサイトの訪問者のリクエストはブロックされませんが、攻撃の開始を見逃すことはありません。
人工知能
機械学習は、学習可能なアルゴリズムを構築する方法を研究する人工知能の広範なサブセクションです。 トレーニングには2つのタイプがあります。
- ユースケーストレーニング、または特定の経験的データからの一般的なパターンの識別に基づく帰納的トレーニング
- 専門知識の形式化と知識ベースの形でのコンピューターへの転送を含む演transfer的訓練。 演ductive学習は通常、エキスパートシステムの分野と呼ばれるため、機械学習とケーススタディという用語は同義語と見なすことができます。
簡単に言えば、蓄積されたすべての経験(Webアプリケーション保護と侵入テストの両方の経験)を使用して、学習モデルの基礎を構築します。つまり、演learning学習を使用します。
追加の攻撃源-侵入テストラボ
2013年、最初のテストラボ侵入テストラボが開始されました。これは、一般的な脆弱性と構成エラーを含む仮想企業の仮想企業ネットワークのコピーです。 4年間の研究開発の間、その概念は変わりませんでした。サイズだけが変わりました。 最新の研究所は、本社と支店の分散ネットワークであり、ノードの数は50ユニット(サーバー、ワークステーション、ネットワーク機器など)に増加しています。 CTFとは対照的に、テストラボではリアリズムに重点が置かれており、攻撃者の行動は外部の侵入者の行動と同一であり、テストラボの周りに18,000人以上の参加者を集めることができました。
私たちにとって、実験室は「ただの楽しみ」だけでなく、Nemesida WAFの作業をデバッグおよび改善するための優れたテストの場にもなりました。 想像してみてください-遅延なく処理およびフィルタリングする必要がある「クリーン」攻撃の40-50 Mbit \ sのトラフィック。
ネメシダワフ
侵入テスト、セキュリティ分析など、実用的な情報セキュリティの分野でサービスとソリューションを提供する企業として、高品質の脆弱性検索データベース(10件中8件のペンテストで重要なデータにアクセスすることになります)を備えたNemesida WAF-統合システム人工知能に基づいて攻撃を検出し、ほぼ0%の誤検知でWebアプリケーションに対する攻撃を正確に検出してブロックします。
個人アカウント


Nemesida WAFは 、クラウドサービスの形式(保護されたアプリケーションへのトラフィックがインフラストラクチャにある保護されたモジュールを通過する場合)またはスタンドアロンソリューション(WAFがクライアントのインフラストラクチャにインストールされている場合)のいずれかで提供されます。