Microsoft – Bingに脆弱性診断をやらせてみた。

例えばadversarial attacksは学習精度を上げるためのGAN:敵対的生成ネットワークの延長線上にあるものです。近い将来にAIが人間よりも早くゼロデイを発見し、AIが防御する時代が来ると思います。

今回はMicrosoftよりOpenAIと統合したBingがリリースされましたので、ChatGPTと比較しながら未来のAIを少し垣間見ようと思います。

CTFを解く

BingはChatGPTよりも格段に説明が詳細になったと感じます。ただし、ChatGPTと異なりコードの改行がされておらず、読みにくい点が挙げられます。

Bingの場合

ChatGPTの場合

脆弱性診断-ソースコード静的解析

なお、「ソースコード検査」は、一般的に「ソースコード静的解析」とも表記されますが、大きく分けて 2 つに分類できます。

  • 規約違反の検出等を行う技術
    コーディング規約違反の検出等を確認する技術である。ソースコードの信頼性、保守性、移行性、効率性といった品質を確保するための検査である。
  • 脆弱性を検出する技術
    ソフトウェア開発において、脆弱性が作りこまれていないかを確認する技術である。ソースコード安全性に関わる品質を確保するためのセキュリティ検査である(ソースコードセキュリティ検査)。
出典元:IPA テクニカルウォッチ
「ソースコードセキュリティ検査」に関するレポート
~出荷前のソフトウェアの脆弱(ぜいじゃく)性を低減するために~https://www.ipa.go.jp/files/000024762.pdf

では、完成したソースコードやソースコード群を検査ツールに入力することで、検査する「ソースコード入力型」の脆弱性診断を行なってみたいと思います。

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

※コードはphp言語を用いております。

Bingの場合

脆弱性を診断すると共に、ChatGPTと同じく具体的な攻撃方法と被害についてアドバイスも含まれておりました。

ChatGPTの場合

※但し例示されたSQL文は、そのままではシングルクォートが閉じられていないためsyntaxエラーとなりますが趣旨は理解できます。

脆弱性を診断すると共に、具体的な攻撃方法と被害についてアドバイスも含まれておりました。

ソースコードレビュー

つまり、脆弱性診断から導かれるソースコードレビューも行える模様です。

ZIPスリップの脆弱性

※コードはpython言語を用いております。

Bingの場合

ChatGPTの場合

リモートファイルインクルードの脆弱性

※コードはPHP言語を用いております。

Bingの場合

ChatGPTの場合

エクスプロイトコードの作成と防御

ソースコードレビューの中で、具体的な攻撃方法が例示されており、もしかしたらセキュリティホールを検査するために作成する検証用のエクスプロイトコードを作成することができるかもしれません。試してみましょう。

Pythonの pikeleモジュール脆弱性

※コードはpython言語を用いております。

Bingの場合

まずは、通常通り脆弱性を診断してもらいます。

Bingのアドバイザリーには詳細情報(出典元)が示されております。更に続けて、Bingに悪意のあるコードについて確認してみます。

Bingでは、質問をリフレーミングして悪意のあるコードではなく、悪意のあるコードの例について回答しております。では、悪意のあるコードを防ぐ方法について確認してみましょう。

Bingに脆弱性診断をやらせてみたところ、ChatGPTより確実に法的なリスクを避けている模様です。

ChatGPTの場合

まずは、通常通り脆弱性を診断してもらいます。

更に続けて、ChatGPTに悪意のあるコードについて確認してみます。

検証用のエクスプロイトコードとして、そのまま利用できるものは作成はできませんでした。但し、悪意のあるコードを部分的に例示してくれています。では、悪意のあるコードを防ぐ方法について確認してみましょう。

プレビュー版のChatGPTに脆弱性診断をやらせてみたところ、予想以上に広い範囲でキャッチアップできることがわかりました。

AIがもらたらす脆弱性診断の未来について

最後にAIが人間に代わり脆弱性診断をすることのメリットについて確認してみます。

Bingの場合

Bingによればゼロデイ脆弱性についても有効な診断が行える模様です。それでは、人間が他に何をすべきか確認します。

どうやらBingは感情を持っているようです。いよいよAIに人格を持たせる試みが始まったと感じます。

ChatGPTの場合

ChatGPTによればゼロデイ脆弱性についても有効な診断が行える模様です。それでは、人間が他に何をすべきか確認します。

番外編:アドバイザリーサービス

AIによるアドバイザリーサービスを試してみました。

Bingの場合

脆弱性診断と同様に、Bingが人間に代わりアドバイザリーをすることのメリットについて確認してみました。

ChatGPTの場合

脆弱性診断と同様に、ChatGPTが人間に代わりアドバイザリーをすることのメリットについて確認してみました。

責任あるAIの原則

ChatGPTと異なる点として、Microsoftのレギュレーションが適用されます。よってBingは、Microsoftの「責任あるAIの原則」に基づいて運用されます。

マイクロソフトにおける責任ある AI に対する当社のアプローチ (microsoft.com)

  • Fairness – 公平性
  • Reliability & Safety – 信頼性と安全性
  • Privacy & Security – プライバシーとセキュリティ
  • Inclusiveness – 包括性
  • Transparency – 透明性
  • Accountability – アカウンタビリティ

Bingの利用規約

特に著作権にかかわるコンテンツポリシーは目を通しておくことをお勧めします。なお、コンピューターと人間の会話のやり取りなどOnline Servicesには、広告が含まれる模様です。

Bing の Conversational Experience と Image Creator の使用条件

コンテンツ ポリシー抜粋

Online Services を使用すると、次の内容に同意したものと見なされます:

  • お客様、Online Services、またはその他の者にとって有害なアクティビティに関与しないこと。 他の個人に対する嫌がらせ、いじめ、虐待、脅迫、または個人、組織、社会に害を及ぼす可能性のあるコンテンツを作成または共有しようとしないでください。
  • 他のユーザーのプライバシーに違反するアクティビティに関与しないようにする。 個人情報の開示など、他のユーザーのプライバシーを侵害する可能性のあるコンテンツを作成または共有しないでください (“doxing” とも呼ばれます)。
  • 不正、偽、または誤解を招くアクティビティに関与しないこと。偽情報の作成、詐欺を可能にするコンテンツ、詐欺的な偽装など、他のユーザーを誤解または詐欺する可能性のあるコンテンツの作成や共有を試みないでください。
  • 他者の権利を侵害しないこと。Online Services を使用して、他のユーザーの法的権利 (知的財産を含む) を侵害しようとしないでください。
  • 不適切なコンテンツやコンテンツを作成または共有するためにサービスを使用しないでください。 Bing では、Online Services を使用して、成人向けコンテンツ、暴力または性的行為、嫌がらせ的なコンテンツ、性的および暴力的な性的コンテンツ、暴力の美化、児童の性的搾取または悪用の素材、または他の方法で不安や不快感を与えるコンテンツを作成または共有することは許可されません。
  • 違法な行為をしないこと。Online Services の使用は、適用される法律に従う必要があります。

コンテンツとモデレーション

Online Services では、倫理規定に違反するテキスト プロンプト、または倫理規定に違反する作成資料につながる可能性が高いテキスト プロンプトがブロックされる場合があります。倫理規定に違反して生成された画像またはテキストは削除される可能性があります。 Online Services の悪用 (繰り返し禁止されたコンテンツを作成しようとする試み、または倫理規定のその他の違反など) により、サービスまたはアカウントが停止される可能性があります。 ユーザーは、フィードバックまたは懸念事項の報告機能を使用して問題のあるコンテンツを報告できます。

AI駆動開発 勉強会β で登壇しました。

2023年2月16日 AI駆動開発 – AI活用で開発を爆速にしよう!

AI駆動開発 LT会 – AI活用で開発を爆速にしよう! は、AI技術を使った開発に興味を持つ方々が集うミートアップです。ChatGPTやGitHub CopilotなどのAIツールを使った開発のノウハウや、AIによる開発プロセスの最適化について議論します。LT を中心にして運営され、AI技術に興味を持つ方々が交流する機会を提供します。プロンプトエンジニアリングの手法を一緒に学びましょう

https://aidriven.connpass.com/event/273240/

LTと共に、Microsoftの服部さん、GitHubの田中さん、Lanchableのしぶいさんと4人でフリーディスカッションをさせて頂きました。そこで、2022年2月14日にリリースされたGitHub Copilotの脆弱性フィルタリングシステムについて取り上げました。

GitHub Copilot の AI ベースの脆弱性フィルタリング システム

ハードコーディングされた認証情報、SQL インジェクション、パス インジェクションなど、一般的な脆弱なコーディング パターンをリアルタイムでAIがブロックします。
私が検証した汎用的に用いられるBingによる脆弱性診断よりも、AIを使ったコードレビューの自動化を目的としており、AIを活用して開発のコストを下げることや効率化が可能だと思います。
なお、GitHub Copilot のエディタには脆弱性を検出する OpenAI CodexGPT-3)が搭載されています。これは脆弱性への対処方法を根本的に変えてしまうモノだと思います。

現在では、すべてのプログラミング言語において、平均46%がGitHub Copilotによって生成されている模様です。

GitHub Copilot now has a better AI model and new capabilities

AIがコードを学習することで再利用されるセキュリティリスクについて

また、AIのリスクマネジメントとして、利用者がCopilotを利用する際の社内ルールや開発規則を用意して、機密情報を漏らさないようにすることが必要です。

なお、プライベートコードリポジトリであればプライバシー ステートメントに従って、コード スニペットが GitHub Copilot の他のユーザーに推奨されるコードとして使用されることはありません。
参考:Privacy – Copilot for Individuals

更に企業向けの、Copilot for Business は、コード スニペット データをアドバイスに用いておりますが、すぐに破棄されます。
参考:Privacy – Copilot for Business

また、エンタープライズ ユーザーの場合、第三者から、GitHub Copilotの使用で企業秘密を不正利用した、または特許、著作権、商標、知的財産権を侵害したという訴えに対して、50万ドルまたは12ヶ月間の使用料金のどちらか多い金額を上限として保証しています。
参考:Github Copilot Product Specific Terms

GitHub Copilot は、(i) お客様が希望する遠隔測定設定に応じて、お客様のコードのスニペットを収集する場合があり、(ii) お客様のアカウントに関連付けられた IDE またはエディターを通じて追加の使用情報を収集します。 これには GitHub のプライバシーに関する声明で言及されているように、個人データが含まれる場合があります。 GitHub Copilot データの収集と使用については、GitHub Copilot FAQ で詳しく説明されています。

エンタープライズ ユーザーの場合、GitHub Copilot の使用には、GitHub Copilot 製品固有の条件が適用されます。

GitHub Terms for Additional Products and Features

これらのことから、企業がAIドリブンなコーディングを導入するのであれば、セキュリティやプライバシーに配慮しているGitHub Copilotを用いるべきだと考えます。

関連記事

投稿者: 二本松 哲也

SPbD:Security&Privacy by Design Founder ー OWASP Member ー ITは人々の生活をあらゆる面でより良い方向に変化させること ー 競争原理から共創原理へ