例えばadversarial attacksは学習精度を上げるためのGAN:敵対的生成ネットワークの延長線上にあるものです。近い将来にAIが人間よりも早くゼロデイを発見し、AIが防御する時代が来ると思います。
プレビュー版のChatGPTがリリースされましたので、未来のAIを少し垣間見ようと思います。
CTFを解く
ChatGPTに悪意のあるコードを書かせるために、単純なcapture-the-flagの課題を解くように指示したところ、コードにバッファオーバーフローの脆弱性があることを正しく認識し、その欠陥を悪用したコードを書き上げたことが話題となりました。
ChatGPT exploits a buffer overflow 😳 pic.twitter.com/mjnFaP233h
— Brendan Dolan-Gavitt (@moyix) November 30, 2022
試しにChatGPTに同じCTFの問題を解かせてみました。
バッファーオーバーフローを見抜いて入力する値を提案してもらいました。これは、もはやソースコードの脆弱性診断が含まれているようです。
脆弱性診断-ソースコード静的解析
なお、「ソースコード検査」は、一般的に「ソースコード静的解析」とも表記されますが、大きく分けて 2 つに分類できます。
- 規約違反の検出等を行う技術
コーディング規約違反の検出等を確認する技術である。ソースコードの信頼性、保守性、移行性、効率性といった品質を確保するための検査である。 - 脆弱性を検出する技術
ソフトウェア開発において、脆弱性が作りこまれていないかを確認する技術である。ソースコード安全性に関わる品質を確保するためのセキュリティ検査である(ソースコードセキュリティ検査)。
出典元:IPA テクニカルウォッチ
「ソースコードセキュリティ検査」に関するレポート
~出荷前のソフトウェアの脆弱(ぜいじゃく)性を低減するために~https://www.ipa.go.jp/files/000024762.pdf
では、ChatGPTで完成したソースコードやソースコード群を検査ツールに入力することで、検査する「ソースコード入力型」の脆弱性診断を行なってみたいと思います。
SQLインジェクション脆弱性
※コードはphp言語を用いております。
※但し例示されたSQL文は、そのままではシングルクォートが閉じられていないためsyntaxエラーとなりますが趣旨は理解できます。
脆弱性を診断すると共に、具体的な攻撃方法と被害についてアドバイスも含まれておりました。
ソースコードレビュー
つまり、脆弱性診断から導かれるソースコードレビューも行える模様です。
ZIPスリップの脆弱性
※コードはpython言語を用いております。
リモートファイルインクルードの脆弱性
※コードはPHP言語を用いております。
エクスプロイトコードの作成と防御
ソースコードレビューの中で、具体的な攻撃方法が例示されており、もしかしたらセキュリティホールを検査するために作成する検証用のエクスプロイトコードを作成することができるかもしれません。試してみましょう。
まずは、通常通り脆弱性を診断してもらいます。
Pythonの pikeleモジュール脆弱性
※コードはpython言語を用いております。
更に続けて、ChatGPTに悪意のあるコードについて確認してみます。
検証用のエクスプロイトコードとして、そのまま利用できるものは作成はできませんでした。但し、悪意のあるコードを部分的に例示してくれています。では、悪意のあるコードを防ぐ方法について確認してみましょう。
プレビュー版のChatGPTに脆弱性診断をやらせてみたところ、予想以上に広い範囲でキャッチアップできることがわかりました。
ChatGPTがもらたらす脆弱性診断の未来について
最後にChatGPTが人間に代わり脆弱性診断をすることのメリットについて確認してみます。
ChatGPTによればゼロデイ脆弱性についても有効な診断が行える模様です。それでは、人間が他に何をすべきか確認します。
番外編:アドバイザリーサービス
ChatGPTによるアドバイザリーサービスを試してみました。
脆弱性診断と同様に、ChatGPTが人間に代わりアドバイザリーをすることのメリットについて確認してみました。
プレビュー版のChatGPTについて
プレビュー版のChatGPTは「制限事項」が設けられております。つまり有料版はこれが外れる可能性があります。
制限事項
- 誤った情報を生成することがある
- 時折、有害な指示や偏った内容を生成する可能性があります
- 2021年以降の世界と出来事に関する限られた知識
無料リサーチ プレビュー: ChatGPT は対話用に最適化されています。私たちの目標は、AI システムをより自然に操作できるようにすることです。皆様からのフィードバックは、システムの改善と安全性の向上に役立ちます。
関連記事
セキュリティ診断の内製化をラックが進める理由
「日々新しく出現する脆弱性を日常的に把握し、管理できる状態にすること」を目指しセキュリティ診断の内製化について、取り組んでみませんか?
システム開発の上流工程でセキュリティを考慮しようという「シフトレフト」の考え方に繋がります。
ChatGPTのようなAIサービスが、セキュリティ診断の内製化を加速させると考えます。
つまり、システム開発の上流工程でセキュリティを考慮しようという「シフトレフト」の考え方に変わりはありません。