前回、ChatGPT4のo3を使ってLinuxのksmbdゼロデイ脆弱性を見つけた、というブログエントリーが書かれた、というところで終わりました。そしてそれが次々生まれてくる脆弱性に振り回される図式を変えてくれる一手になり得るのでは、と書きました。
そのブログは脆弱性探索の自動化について長年研究しているSean Heelanさんが書いたものです。Sean Heelanさんは自分が発見した脆弱性であるCVE-2025-37778をベンチマークとして、o3に同じような思考の道筋を辿らせたらどうなるか検証しました。 その実証実験を行った時点ではCVE-2025-37778は未公表であり、o3にとっては完全に未知の状態でした。実証実験の結果、o3は新たなゼロデイ脆弱性であるCVE-2025-37899を発見したとのこと。 同時にClaude sonnetでも試したのですが、実際に吐き出されたレポートを読むと、o3が人間の思考プロセスに似た形での推論を展開しているのに対し、Claudeの方は作業ログのようなレポートを吐き出していて非常に興味深かった、と書かれています。 詳しくはブログそのものをお読みいただければと思いますが、それらのレポートを読むとSean Heelanさんが人間の思考をトレースし、自動化できるのでは、とo3に期待を寄せるのもわかる気がします。
そのブログにも書かれているとおり、これまで脆弱性の探索と言えばシンボリック実行や抽象解釈、ファジングでした。これらは長く研究されてきたものですが、2016年DARPA主催で行われた Cyber Grand Challenge によって、それらの機能を複合的に備えたツール群が一気に出現してきました。 今ではCTFなどでも当たり前のように用いられているほど、ある意味常識化していますが、それでも脆弱性が溢れかえる現状を変えられるだけの力を持ち得ているとは言い難いのが現状です。 それらのツールや技術があっても、人間の探索能力がまだまだ必要で、お互いに補完しあっているような状況だと言えます。補完、と言っても人間が担うべき部分は難易度が高く、探索できる人間は希少であるため、正直なところそこはまだまだ弱いと言わざるを得ません。 なのでo3による光明は社会的に大きな意味を持つ可能性があり、かかる期待も大きくなる、というわけです。
もしo3が示した可能性が将来実用に値するものになったとしたら、ブログにも書かれていますが、先行者が探し尽くしてしまえば後発の試みはほとんど無駄になるでしょう。 つまり、良い人が先行してしまえば、悪い人がいかにノンフィルターな独自LLMを構築して頑張ったとしても、無駄になる可能性が高い、ということです。 テストプロセスに組み込むことができれば、密かに生まれてしまった脆弱性が世に出る前に修正することができるわけなので、そもそも同じ手法では見つけようが無いわけですね。 そうなると久しぶりに、良い人側が悪い人たちを先行できるかもしれません。
そんな未来となるよう期待を持ちながら、文字通りの日進月歩であるLLM界隈の流れ、特にプログラムコード生成まわりの流れを追いかけ続けたいと思っています。 つまり、LLM的なシフトレフトによってそもそも脆弱性を生成する確率を下げることにも期待していきたいと思っています。