ホームページ > 記事 > テクノロジー周辺機器 > ChatGPT が PoC を作成して脆弱性を取得します。
ChatGPT (Chat Generative Pre-trained Transformer) は、現在最も期待されているインテリジェント AI チャット ロボットの 1 つです。基本的な言語コミュニケーションを可能にするだけでなく、記事作成、コードスクリプト作成、翻訳など、多くの強力な機能も備えています。それでは、ChatGpt を使用して、作業を完了するのを支援できますか?たとえば、製品にセキュリティ リスクがあり、脆弱性の検出が必要な場合、それを実装するために対応する POC を作成する必要があります。 ChatGPT は、複数の検証を経て、この実験の実現可能性を最初に確認しました。ChatGPT は、簡単な PoC を書くように訓練することはできますが、出力内容に一致する正規表現を記述するなど、細部の制御が十分ではありません。複雑なロジックを処理するため、手動による介入と変更が必要になります。さらに、比較手法を使用して、ChatGPT のセキュリティ推測とトレーニング モデルの一部の精度を検証しました。以下は、Goby の悪用検出のための実用的なネットワーク攻撃および防御ツールと組み合わせた場合の導入効果です。
ChatGPT と Goby を使用して PoC と EXP を作成します。半自動書き込みと完全自動書き込みの 2 つの方法があります。 (プロセス内では ChatGPT-Plus アカウントを使用します)。
半自動書き込みでは、言語形式の変換に ChatGPT を使用します。変換後に生成されたコードには詳細な問題がある可能性があるため、さらなるトラブルシューティングと改善が必要です。最後に、対応するステートメントと関数の内容を修正して、PoC と関数の書き込みを完了します。経験値
全自動書き込みでは、使用したコードテンプレートと脆弱性の詳細をChatGPTに与えることで、テンプレートに対応したPoCを自動生成します。情報。現時点では簡単な PoC を自動で書くことは可能ですが、EXP の場合は ChatGPT で Goby の組み込み関数を使用するためのさらなるトレーニングが必要です。
Adobe ColdFusion は、効率的な Web アプリケーション サーバー開発環境です。 Adobe ColdFusion 9.0.1 以前の管理コンソールには、複数のディレクトリ トラバーサルの脆弱性が存在します。リモートの攻撃者は、/CFIDE/administrator/enter.cfm、/CFIDE/administrator/archives/index.cfm などに送信されるロケール パラメーターを介して任意のファイルを読み取る可能性があります。
まず、ChatGPT に CVE-2010-2861 ディレクトリ トラバーサルの脆弱性の Python 形式 EXP を Go 言語形式のコードに変換させてみます。手動によるコード解釈とコード変換プロセスを置き換えるために使用されます。
脆弱性公開プラットフォームで脆弱性の EXP コードを選択します:
ChatGPT を使用して対応する脆弱性の EXP コードを変換する前に、まず次のことを示します。オリジナルの Python コードの実行結果は次のとおりです:
形式の変換を開始します:
さらに、プログラムの使用方法も提供しました。ただし、ChatGPT の答えは毎回まったく同じであるとは限りません。前の回答では関数の具体的な使い方が詳しく説明されていませんでしたが、別の回答では次のような説明がありました: (必要に応じて、質問に「関数の具体的な使い方を紹介します」と追加できます)
コードをデバッグした後、すぐには使用できず、必要なファイルの内容を正常に読み取ることができないことがわかりました:
次に、調整を開始する必要があります。間違っています。トラブルシューティング プロセスは次のとおりです。
通常の一致後に文字列が空かどうかを確認します。
返送の確認 パッケージの内容が正常か、必要なコンテンツがあるかを確認し、返送されたデータパケットは以下のように正常です。正規表現に問題があり、該当する内容が一致しないと判断された場合:
調査の結果、正規表現に正しく一致しないことが判明したため、ファイルの内容を一致させることができませんでした。以下の修正を行いました 修正内容は以下の通りです:
変更前:
最終実行結果、完全な Python-Go 変換:
Python 形式の EXP を Go 言語形式に変換できたので、今度はそれを PoC と Goby 形式の EXP に変換してみます。
Goby は Go 言語をベースとした独自開発の脆弱性フレームワークを使用しているため、ユーザーの利便性を考慮して、ユーザーが使用できる組み込み関数が多数用意されているため、上記の部分のみを使用するだけで済みます。 PoC と EXP を完了するコード。EXP 変更の一般的な説明と詳細は次のとおりです。
##インポート コンテンツを変更します。 コマンド ラインを使用する場合、生成された EXP ではパラメーターを手動で入力する必要があるため、次のようになります。 次に、PoC を変換するときに、定数を再定義し、Goby の httpclient.FixUrl.IP と httpclient.FixUrl.Port を使用してテスト IP とポート番号を取得し、テスト ファイルのパスを決定する必要があります。 #その後、PoC に条件判断ステートメントを追加し、脆弱性の特性を判断して true (脆弱性がある) を返します。 最後に、冗長な出力印刷コードを削除します。次のような PoC 変換を完了します。 EXP を変換するときは、変数を再定義する必要があります。Goby の expResult.HostInfo.IP と expResult.HostInfo.Port を使用して取得します。テスト IP とポート番号、および ss.Params["filePath"] を使用します (文字列) ユーザーによって入力された EXP パラメーターを取得します - テスト ファイル パス filePath: 次に、EXP コードに条件判定文を追加して、EXP 実行が成功したかどうかを判定し、EXP 実行結果を出力し、EXP 変換を完了します。3.2 完全自動書き込み
ChatGPT を手動での作成と組み合わせて使用した後、さらにそれを使用して Goby 形式で PoC を作成しようとしました。
まず、Goby 形式のテンプレートを指定します。次に、脆弱性番号、製品、タイプ、URL、脆弱性ファイル、パラメーター、および成功条件を指定します。関連するフィールド形式を説明すると、最終的に次のコードが得られました。これは Goby フロントエンドでコンパイルでき、簡単な PoC を正常に生成できます。
モデルのトレーニングは次のとおりです。最初に完了しました。引き続き 2 番目のケースを使用して、モデルの完全性を確認します:
Name フィールドにまだ形式エラーがあることがわかりました。再度トレーニングして変更します。 (検証の名前フィールドとその他の出力が正しい場合は、このエラー修正手順をスキップできます):
最後に、3 番目のケースを使用して、最終的なトレーニング結果を検証します。となり、トレーニングは成功しました:
コードを Goby に入力し、不足している脆弱性の説明情報を入力します (後で詳細なトレーニングを続けることができます)。実行時の効果は次のとおりです:
ChatGPT を使用して新しいゼロデイ脆弱性またはその他の機密脆弱性検出 PoC を作成する場合、このプロセスはプログラム インジェクションや情報漏洩などにつながりますか? 。 どうしたの?つまり、モデルのトレーニングが完了し、他のユーザーが関連する質問をした場合、ChatGPT はトレーニングされたモデルまたはデータを直接出力しますか?
ChatGPT の自己学習予想が存在するかどうかを検証するために、「異なるセッション」と「異なるアカウント」を通じてトレーニングが実行されます。次の実践の結果、ChatGPT はセッション間およびアカウント間の自己学習を実行しないという結論になりました。トレーニングされたモデルとデータは OpenAI の手にあり、他のユーザーは関連するモデルを取得できないため、関連情報の漏洩に伴うセキュリティリスクはありますが、今後の状況については OpenAI の判断に基づいて判断する必要があります。
使用したテンプレート (図は省略) と脆弱性情報が示されていますが、PoC の Name フィールドと description フィールドが一致していないことがわかります。トレーニング モードを埋めるため、ChatGPT は異なるセッションで自動的に学習しません。各セッション間のトレーニング モデルは独立しています:
テンプレート (ここでは概略図は省略) と脆弱性情報も示されています。また、PoC の関連フィールドが以前のトレーニング モデルに従って入力されていないこともわかります。 ChatGPT がアカウントの自己学習を超えないことを知っておいてください:
ChatGPT4 が更新され、起動されました。その後、ChatGPT4 を使用して、同じ全自動書き込みトレーニングとChatGPT3トレーニングを実行して出てくるモデルの違いは何ですか?答えは、ChatGPT4 が ChatGPT 3 よりも「スマートで柔軟」であり、モデル生成がより正確であるということです。
必要な情報をすべて提供し、1 回のトレーニング後 (ここでは概略図の一部を省略しています)、以下の図の正しい効果が得られました。
# さらに、10 ラウンドのトレーニングを実施し、ChatGPT3 と 4 の PoC 書き込み精度を決定するためにモデルの Name フィールドを比較しました。どちらの場合にも確率的誤差が存在することがわかり、そのうちモデルの出力精度は次の表に示すように、これは 4 よりも低く、特定の状況下では引き続きエラー修正トレーニングが必要です。 #0×06 概要一般的に言い換えると、ChatGPT は作業の一部を完了するのに実際に役立ちます。脆弱性 PoC の作成などの日常的な作業では、そのコード変換機能を使用して作成を高速化できます。また、脆弱性に関する詳細情報を提供することもできます。ChatGPT を使用してください。適切なモデルをトレーニングし、単純な脆弱性検証 PoC コードを直接出力する方が便利で高速です。ただし、提供される回答内容は必ずしも直接コピーして使用できるとは限らず、改善するには手動による修正が必要です。また、ChatGPT は現在比較的安心して使用でき、単一ユーザーの学習モデル データを他のユーザーに出力して使用することはありません (ユーザー データの相互汚染を懸念するため、セッションが混乱することはありません)。将来的には、OpenAI 本部の意思決定に基づいてさらなる判断を下す必要があります。したがって、ChatGPT を合理的に使用することで、ある程度の作業効率の向上につながる可能性があり、今後さらにトレーニングと開発を継続できれば、たとえば、標準化されたより複雑な PoC や情報記述付きの EXP を記述することができるかどうかなど、より多くのアプリケーション シナリオと可能性を探るため、バッチでコンテンツを完成させるように設計することもできます。 参考[1] https://gobysec.net/exp[2] https://www.exploit-db.com/exploits/14641[3] https://zhuanlan.zhihu.com/p/608738482?utm_source=wechat_session&utm_medium=social&utm_oi=1024775085344735232[4] ChatGPT を使用してエンコーダーとサポート Webshell を生成します
以上がChatGPT が PoC を作成して脆弱性を取得します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。