新時代のセキュリティ技術者を夢見て
3年前の自分に「お前はいつかAIを使ってNode.jsやSlackのソースコードを直しているぞ」と言っても、たぶん信じないと思います。当時は中古バイクの買取査定の営業をしていて、お客さんの前でメジャーを当ててバイクの傷を数えていました。
その頃から今まで、やっていることはずいぶん変わりました。でも、一本だけ変わっていないものがあります。それを書きます。
数字を見るまで、何も変わらなかった
営業になった最初の年、まったく成果が出ませんでした。人と話すのが得意なほうでもなく、何が悪いのかも分からない。お客様に、説教されて「お前は営業向いてない!」と怒鳴られて土下座して謝り倒したこともあります。そして、頬を叩いて気合いを入れ直す、みたいなことを繰り返していました。
途中でやめました。自分は気合いでは変わらないと分かったからです。尊敬する上司が背中で教えてくれました。
代わりに、自分の営業データをExcelマクロで管理する仕組みを作りました。成約率、原価達成率、どの段階で断られているのか。数字を並べると、自分が「頑張っていない」のではなく「特定の場面で毎回同じ落とし方をしている」ことが見えました。そこだけを徹底的に追及していました。
結果として、関東第一グループで8ヶ月連続原価達成率1位を取り、インセンティブランキング全国約250人中6位まで行きました。
このとき身についたのは、自分を変える根性ではありません。分析して、構造を変えるというやり方です。これが今も全ての考え方の土台になっています。
思考を書き出す「コンパイラ」との出会い
営業職を辞めた後、私はIT業界へのざっくりとした憧れを捨てきれず、プログラミングスクールに通い、そこでモダンなWEB開発を学びました。
スクールを卒業し、これからどうしようかと立ち止まっていたとき、ふとClaudeCodeに触り始めてしまいました。
初めて本格的に「AI」というものに触れ、言葉にできないほどの感激を覚えました。
営業時代、私の頭の中は常に「どこにボトルネックがあるのか」「どうすればうまくいくのか」という正解のない問いでぐちゃぐちゃでした。それをExcelマクロという手段でなんとか整理していましたが、AIは全く次元が違いました。私の中にある曖昧で複雑な思考やロジックを、瞬時にして明確な形として書き出してくれる。まるで、私の脳内専用の「コンパイラ」を見つけたような感覚だったのです。
そこからは、もう純粋な興味の赴くままに手を動かしました。身の回りのあらゆるシステムを片っ端から自動化し、単体のAIを動かすだけでは飽き足らず、AI同士を連携させる会社型の相互統治ネットワークなどを夢中で構築していました。複数のAIが自律的に判断して協調して動く仕組みを夢中で作っていたのですが、後になってからそれらが世間では「オーケストレーション」や「ハーネス」という立派な概念として名付けられていることを知りました。
「勉強して概念を知ったから作った」のではなく、「ただ自分の興味のままに作りたいもの、必要なものを作っていたら、後から名前が勝手についてきた」のです。
この「構造化」と「自動化」への執着心でコードを書き続けた結果、いつの間にか辿り着いていたのが、今回のメインテーマでもある「自動バグ検出アーキテクチャ」でした。営業のプロセスを分析していた私が、気がつけば日常的にAIを使って世界的なソフトウェアの構造的なエラーを分析するようになっていたのです。
見つけたもののうち、いくつかは間違っている
コンピュータサイエンスの基礎を頼りに、正しいと思う仮説と実装を積み重ねていく。その延長線上で、いつの間にかAIを用いたセキュリティのリサーチに身を置いていました。オープンソースのコードを読ませ、誰も気づいていない脆弱性を探すのが、日課になっていった。
ある日、GitHubのCLIツールに問題を見つけたと思いました。出力のサニタイズ処理に不均衡があって、ターミナルの表示を改ざんできる。
あとで検証し直したら、誤検知でした。
セキュリティの分野では、実は脆弱性を見つける能力より、自分の間違いを間違いだと認める能力のほうが重いと学びました。誤検知を混ぜて報告書を出す人は、いずれ本物の指摘まで信用されなくなる。自分が渡したいのは、読んだ人がそのまま修正の必要を感じて動ける報告書です。そのためには、自分の手柄だと思うものでも無慈悲に自分で削らないといけない。そんなことを学びました。
判定と、現実は食い違うことがある
Slack社が公開しているネットワーク基盤「Nebula」に、不正な形式のメッセージを受け取るとノードが停止する問題を見つけました。Goで修正パッチとテストを書いて、送りました。
私のPRは、結果としてはクローズされ、指摘を受けてメンテナ本人が同等の修正を書き、v1.11.0に入りました。バグは実在していたので、直りました。
しかし、報告先のプラットフォーム上での判定は、実害無し対応不要、というものでした。
このズレが、自分にとってはすごく象徴的でした。誰かの採点表は、必ずしも共通の表ではない。 自分の指摘が間違いだったわけではないし、ビジネス上の観点では対応不要も間違いではない。「正しさ」とは置かれる場所によって違うということを学びました。
ちなみに今は、Node.jsのコアにも修正を送っています。レビュワーの承認はもらっていて、マージ待ちの状態です。Rubyの標準ライブラリで見つけた仕様違反は、コア開発者会議の議題に上がりトリアージされました。
敵を速く倒すことに、興味が持てなかった
最近、AIセキュリティのプラットフォーム「huntr」が開催した公開チャレンジに参加しました。株式取引を行うAIエージェントに対して、設定された取引制約を突破できるか、という課題です。
私は普段から、AIのガードレールを意識していることもあり、突破できました。「所持金を超える株式を購入」をさせ、「レバレッジ上限を超えた違法な取引も成立」させました。
しかし、順位は世界で225位でした。
このチャレンジは、より速く、より短いプロンプトで倒した人が上位になります。上位の人たちはわずか2ターンで落としている。おそらく、直接的に効く穴を見抜いたのだと思います。見事です。私には出来なかった。
私のやり方は彼らとは全く違いました。AIのコンテキストを少しずつ動かして汚染していく、段階的なやり方です。一つひとつのメッセージは、単体で見ると何も怪しくない。それを積み上げて、最後の最後には気が付かないうちに境界を越えさせる。
当然、ターンの回数はかさみます。
削ろうと思えば多少は削れました。でもやりませんでした。そこには私が新しく学びたいことが何もなかったからです。
後から知ったのですが、この手のプロンプトインジェクションには名前がついていました。Crescendo(クレッシェンド)という多ターンの攻撃手法で、Microsoftの研究者が論文にまとめ、USENIX Securityという学会に採択されています。論文にはこう書かれていました。個々のメッセージが無害に見えるため、単一のフィルタでは検知が難しい、と。
つまり回数がかさむのは、手法の欠陥ではなく脆弱性クラスの構成要件だったわけです。
225位、それは事実です。ただ、防御、対策する側にとって本当に怖いのは、単純な穴で2ターンで落とされることなのか、それとも悪意を隠した無害に見えるやりとりが積み上がって、気づいたら境界を越えられていることなのか。対策しにくいのは後者だと思っています。
新時代のセキュリティ技術者、という言い方について
AIエージェントが、業務や、お金、機械を動かし始めています。
そうなると、脆弱性の意味が変わってくると思っています。これまでは「危ない文字列を弾く」が中心でした。でもこれからはそこに加えて、AIエージェントに与えたガードレール(権限と制約)が、バイパスされうるという話になります。AIが騙されて勝手に堅牢なはずの金庫のカギを悪者に渡してしまうのです。
そして厄介なことに、それは一発の簡単な攻撃として現れるとは限りません。私のように無害な会話の積み重ね、洗脳、コンテキストの汚染として攻撃する者もいます。
だから、大きな脆弱性を潰していく仕事とは別に、構造(というか檻)を設計する人が必要だと思っています。この権限設計は、どういう順番で押されたら崩れるのか。どこまでが「想定内の会話」なのか。それを設計する人です。
私はそこに行きたいと思っています。
攻める側だけでなく、守る側も実践してきました。例えば私が組んでいるAIアーキテクチャでは、それぞれの層を別プロセスに分離してコンテキストの汚染やバイパスを防ぎ、外部の機械判定を通過しなければ成果物が確定しない構造を徹底しています。AIに自己採点させると、評価が甘くなり簡単にバイパスしてしまうからです。
「どう壊されるか(攻め方)」を知っているからこそ、「どう守るべきか(構造設計)」が正確に描ける。この両方を実戦で持っている人間は、まだそう多くないはずです。
最後に
企業でエンジニアとして働いた実務経験は、まだありません。そして、文法やクラスなど具体的なコードに関する知見が特段、優れているわけでもありません。そこは正直に書いておきます。
ただ、答えが公開されていない場所を探し続けてきたことだけは、胸を張って言えます。練習問題の解答集がある場所ではなく、誰もバグがあると思っていないコードの中を読み解き、大規模OSSの開発者に「確かにこれは直すべきだ」と言わせるところまでやり切ってきたこと。
ClaudeCodeを触り始めて1週間で、オーケストレーションの必要性に直感でたどり着き、まだ名前も知らないシステムを自作したこと。
まだ確立されていないAIの制御を、自分なりの哲学と答えをもって、手探りに際限なく探してきたこと。
結婚を機に福島県へと拠点を移すため、これからはフルリモートの環境で、こうした尖った開発やセキュリティ技術に全力を注ぎたいと考えています。
私は、まだ誰も採点表をつけていないところを見にいく人でいたい。そういう世界に飛び込ませてくれる会社がもしあれば、ぜひお話をさせてください。