前の記事で 、人工知能Nemesida WAFがどのようにWebアプリケーションへの攻撃を最小限の誤検知で検出するために絶対精度で役立つかについて説明しました。 この記事では、Nemesida AI操作の新しいメカニズムを検討します。これにより、シグネチャメソッドと比較して攻撃検出の精度が2倍になり、誤検出の数が0.01%に減少します。
理論:認識精度を改善するアプローチ
シグネチャ分析モード(「チェーンオブルール」モードを含む)でのWAFの作業には、多数の誤検知(False Positive)が伴います。正当なリクエストまたは除外をブロックするルールのテーブルのコンパイル結果は、そのようなWAFを回避する可能性を高めます。 正当なクエリのテーブルの構成が最小限であっても、クロールの可能性は非常に高くなります。 現在のWAFの回避策は次のとおりです。
- (/*!%55NiOn*/ /*!%53eLEct*/);
- (/?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users);
- (-1 UnIoN SeleCT pAssWord fROM USers);
- (union%20%64istinctRO%57%20select).
Nemesida WAFに人工知能を導入すると、両方の問題が解決しました。 現在、Nemesida AIの学習メカニズムを改善するために、次の戦略を使用します。
1.誤検知のレベルを0.01%の値に修正します。
2.特定の誤検知レベルで最大検出レベルまで増加します。
したがって、分類器のパラメーターは各条件の充足を考慮して選択され、ベクトル空間モデル(正当なトラフィックと攻撃)に基づいて2つのクラスのトレーニングサンプルを生成する問題を解決した結果は、分類器の品質に直接影響します。
不正トラフィックのトレーニングサンプルは、Webアプリケーションの手動および半自動テストモードを使用して取得した攻撃シグネチャの既存のデータベースに基づいています。正当なトラフィックは、保護されたWebアプリケーションに到着し、シグネチャアナライザーによって正当であると認識されたリクエストに基づいています。 このアプローチにより、Nemesida AIトレーニングシステムを特定のWebアプリケーションに適合させ、誤検知のレベルを最小限に抑えることができます。 生成される正当なトラフィックのサンプルのサイズは、Nemesida WAFが動作するサーバーの空きRAMの量によって異なります。 推奨パラメーターは、トレーニングモデル用に10 GBの空きRAMを備えた120,000リクエストの値です。
AdaBoostアルゴリズム(適応ブースティングの略)は、Yoav FreundとRobert Schapireによって提案された機械学習アルゴリズムです。 これはメタアルゴリズムであり、学習プロセスでは、基本的な学習アルゴリズムから構成を構築して、その有効性を向上させます。 AdaBoostは、後続の各分類子が、以前の分類子では不十分に分類されたオブジェクト上に構築されるという意味で、適応ブースティングアルゴリズムです。 私たちの場合、基礎となるアルゴリズムは決定木です。 AdaBoostは、ループ内で弱い分類器を呼び出します。 各呼び出しの後、重みの分布が更新されます。これは、分類のためのトレーニングセットの各オブジェクトの重要性に対応しています。 各反復で、誤って分類された各オブジェクトの重みが増加するため、新しい分類子はこれらのオブジェクトに「注意を向けます」。
TF-IDF(英語のTF-用語頻度、IDF-逆文書頻度)は、文書またはコーパスのコレクションの一部である文書のコンテキストで単語の重要性を評価するために使用される統計的尺度です。 単語の重みは、ドキュメントでのこの単語の使用量に比例し、コレクションの他のドキュメントでの単語の使用頻度に反比例します。 TF-IDFメジャーは、クラスタリング中にドキュメントの近接度のメジャーを計算する際に、たとえば、ドキュメントの検索クエリへの関連性の基準の1つとして、テキスト分析および情報検索タスクでよく使用されます。
不正なトラフィックのクラスのトレーニングサンプルの反復補充の過程で、次の規則性が明らかになりました:データベース内の攻撃の数が増えると、それらの検出の精度も向上しますが、データベース内の攻撃の数が過剰に増えると、誤検知が大幅に増加する可能性があります。 実施された多数の実験を考慮して、Webアプリケーションに対する攻撃のさまざまな兆候を伴う189.316の異なるリクエストを含むデータベースが形成されました。 したがって、これまでのところ、必要なレベルの誤検知(0.01%)を達成することが可能であり、新しい(署名方法では認識されない)攻撃の検出精度が向上しました。
実践:テスト方法論とトレーニングデータセットの生成
不正な要求を判断するために、攻撃シグネチャの既存のデータベースが使用され、Webアプリケーションの手動および半自動テストによって補完されます。 テストWebAppとして、一般的なCMSと、明らかに脆弱性を含むシステム(DVWAなど)が使用されます。
まず、悪意のあるリクエスト、攻撃の兆候、脆弱性の悪用を含まない正当なトラフィックが生成されます。 これにより、ユーザーの行動の正当なモデルを強調できます。
SQLインジェクションの操作ベクトルを含まない正当なクエリの例:
GET /vulnerabilities/sqli/?id=1&Submit=Submit HTTP/1.1
Host: waf.office.pentestit.ru
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://waf.office.pentestit.ru/vulnerabilities/sqli/
Cookie: PHPSESSID=e91108c6l9jcqv9ob813kore73; security=low
Connection: close
Upgrade-Insecure-Requests: 1
2番目の段階は、脆弱性を特定して悪用するための専用ツールと「手動」分析の両方を使用して、Webアプリケーションの侵入をテストします。
SQLiの脆弱性を悪用するクエリの例:
POST /vulnerabilities/sqli/ HTTP/1.1
Host: waf.office.pentestit.ru
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://waf.office.pentestit.ru/vulnerabilities/sqli/
Content-Type: application/x-www-form-urlencoded
Content-Length: 49
Cookie: PHPSESSID=e91108c6l9jcqv9ob813kore73; security=medium; _ym_uid=1512232172282659138; _ym_isad=2; _ym_visorc_45042173=w; _ym_visorc_25686548=w; _ym_visorc_36267400=w
Connection: close
Upgrade-Insecure-Requests: 1
id=3 and 0 union select @@version,2&Submit=Submit
クエリの結果、DBMSバージョンが表示されます。
First name: 10.1.26-MariaDB-0+deb9u1
これらのリクエストは不正とマークされ、Nemesida WAF人工知能処理システムに入ります。 脆弱なパラメーターは、脆弱性を特定する悪用ベクトルと攻撃の両方である、さまざまな要求タイプ(ペイロード)によってテストされます。
関数 'sleep'または 'benchmark'を含むリクエストの例:
SLEEP(5)#
SLEEP(5)--
SLEEP(5)="
SLEEP(5)='
or SLEEP(5)
or SLEEP(5)#
or SLEEP(5)--
or SLEEP(5)="
or SLEEP(5)='
waitfor delay '00:00:05'
waitfor delay '00:00:05'--
waitfor delay '00:00:05'#
benchmark(50000000,MD5(1))
benchmark(50000000,MD5(1))--
benchmark(50000000,MD5(1))#
or benchmark(50000000,MD5(1))
or benchmark(50000000,MD5(1))--
or benchmark(50000000,MD5(1))#
OWASP ZAP(ファジング)を使用したWebアプリケーションのテスト手法:
第1ステージと第2ステージを数回繰り返した後、既存のトレーニングモデルをチェックして、誤検知の数を減らします。 不正なリクエストが処理されるほど、ファイルコンテンツを含む異常の検出がより正確になります。その後、特定のWebアプリケーションのトレーニングのベースとして収集された異常のデータベースが、Nemesida WAFからサーバーに自動的にダウンロードされます。
おわりに
Nemesida WAFの改良された人工知能トレーニングメカニズムにより、Webアプリケーションへの攻撃を2倍正確に検出できると同時に、誤検知の数をほぼゼロに減らすことができます。 さらに、Nemesida WAFにはVirtualpatchシステムと組み込みの脆弱性スキャナーが含まれており、保護されたWebアプリケーションで脆弱性が検出された場合、脆弱なコンポーネント用の独自のパッチを迅速にインストールします。
Nemesida WAFはサイトを攻撃から保護する強力なツールです。これを体験するには、 Nemesida WAFのテストバージョンが事前にインストールされた既製の仮想マシンをリクエストするか、クラウド保護を2週間無料で有効にします。