Skip to content
Ojun
Go back

Flatt Securityでのサマーインターンで学んだこと (2026)

Edit page

Flatt Intern 集合写真

概要

2026年9月7日から9月11日にかけて、GMO Flatt Security株式会社でのサマーインターンに参加させていただきました。

応募課題やプログラムの内容、そして僕が学んだことについて書いていこうと思います。 とはいっても、応募課題は調べれば分かるし、プログラムの内容については他の人でも書けるのでほどほどにして、僕が学んだことについて多く書きたいと思います。

僕は参加者の中でも一際Webにはあんまり明るくなく、技術的にも未熟なのですが、だからこそ参加者の中でも学んだことが最も多かったのではないかなと思っています。

応募課題

かなり大変で、20時間くらいはかけた記憶があります。

志望動機をはじめ、技術的な経験、セキュリティの経験やアウトプットといったパーソナリティについての設問があったほか、本命となる技術課題がありました。

技術課題については、興味のある技術および、興味のある脆弱性についての調査がありました。僕はeBPFおよびCopyFailについて調べて書きました。

eBPFについてはこれから勉強してより理解を深めていきたい所存です。

プログラムの内容

2025年時点でも、AIの進歩は目覚ましいものだなあと思っていた矢先、2026年に入ってからAIがさらに予想できない進歩を見せています。直近数年間の進歩が数ヶ月で達成されてしまうような感じです。

つまるところ何が言いたいかと言うと、課題が直前に変更されました。

もともとの課題は、脆弱性を発見する練習をした上で、その脆弱性について検証するoracleプログラムを作成するというものでした。

しかし、AIが進歩する中で、脆弱性が判明してから何日というオーダーではなく、何時間・何分というオーダーで対応する必要が出てきました。したがって、新たな脆弱性に対応するための仕組み作りをする必要があります。

対処法の一例として、WAF (Web Application Firewall) が挙げられます。WAFとは、(しばしば攻撃のように見える)特定のパターンを含むHTTPリクエストを止めるものです。

そこで、「新たな脆弱性に高速かつ正確に対応するWAFルール生成機及びエコシステムを開発する」という課題が我々インターン生に課されました。

プログラムは5日間あります。やられアプリが用意されているので、1・2日目はWAFを触って感触をつかみ、WAFを作るエコシステムを作る期間。3・4日目は、それぞれの興味・関心に沿った自由課題。5日目は発表のために用意された期間となります。

Flatt Security でのワークスタイル

Flatt Securityでの仕事で一番大事な(と僕が勝手に判断した)キーワードとして、WoL (Working out Loud) というものがあります。直訳すると「うるさくして働け」ということになりますが、発狂しながら働くわけでは当然ありません。

WoLの例

上の画像に示されているように、自分が考えていることや、自分の置かれている状況について、どんなに細かい情報でも(ここではSlack)に発信する行為を、WoL と呼びます。

WoL はメタ認知をする上で大きな助けになります。後述しますが、メタ認知というのはAI時代に非常に重要な行為および能力となります。

職場の雰囲気についても、適度にワイワイしていて集中も相談もしやすかったです。 僕は隣のインターン生に、今なにをしているのかめっちゃ質問していました。

僕がやったこと

僕がインターンでやったことを時系列順で振り返ります。

1日目の最初は、やられアプリの内容を把握し、WAFを手動で書いてみました。 その上で、パッチの内容をLLMに読ませ、パッチが対応している脆弱性を防ぐようなWAFルールを書かせる、ということを行ってみました。

WAFルールをアップロードすると、実際にリクエストを送って採点をしてくれるサーバーが用意されているので、それを用いて自分のWAFルールの性能がどんな感じか判断できます。攻撃遮断率を高め、誤検知率を下げるのがとりあえずの課題です。何も考えずにOpusにやらせれば高得点はとれますが、10~20分くらいは食ってしまった記憶があります。

時間もトークン量も食ってしまうので、2日目はなんとかコストを下げられないか試行錯誤してみました。コストを食っている要因の一つに、プロンプトの長さがあると考えました。というのも、いわゆる「良い」WAFルールであることの基準の一つとして、 そのアプリケーションにしか効果がないWAFルールではなく、そのOSSを使っている全てのアプリケーションに効果があるWAFルールであるべき、というのがあります。 LLMに、一般のアプリケーションで効果的なWAFルールを書かせるとしたら、それなりにコツを伝える必要があり、プロンプトが長くなっていました。

そこで、まずは軽量なモデルを用いて、パッチごとに何の脆弱性に対するものか分類させるということを行いました。 次に、分類させたパッチをそれぞれ専門のエージェントに見せて、WAFルールを生成させるという手順にしました。 例えば、軽量なモデルを用いてパッチ1がSQL Injection対策だと分かったら、パッチ1に対してSQL Injectionを防ぐ専門のエージェントを当てて、WAFルールを生成させています。

これにより、Haiku+Sonnetでもある程度の精度でWAFルールを生成することが出来るようになりました。しかも、モデルが軽量なのでトークン消費が少なく、所要時間も2~3分に収まりました。

2日目の最後で、自由課題の構想を少し考えました。最近は論理学がマイブームで、LeanとかZKとかZ3とか、そこら辺の技術がワンチャン使えないかなー、などと思っていました(結局僕ではうまく使えませんでしたが…)。

3日目から自由課題となりますが、まずは方向性を定めるところから始まりました。 まずは自分のペルソナを定めるところから始めました。つまり、自分が何者であるかを具体的に設定してから物事を始めようとしました。これは意外と重要だと思っていて、例えば自分のことをCloudflareだと思うと、影響力は世界に及ぶが、個々の顧客に対してきめ細やかな対応を行うのが難しかったりします。したがって、自分の立場によって、自分は何が出来て、何が出来ないのかがはっきりする。このようにまずは制約を定めて、その範囲内で出来る最大限のことをしようと考えました。

結局、自分のことをFlatt Securityの社員だと思うようになりました。というのも、Flatt Securityのインターンとしてお仕事をしているので、その枠組みで考えるのが最もFlattさんにリターンを返せる行為かなと思ったからです。となると、顧客のソースコードは(実務では範囲が限定されていそうですが)覗ける、という設定で進めてもよいことになります。

Flattとして出来る一番大きなことって何だろう、Flattのワークフローに組み込めるエコシステムってどういうものだろうと考えていたのですが、結局はWAFについて考えていたので、WAFを作るエコシステムを作る上で重要なKPIは何だろう、と思うようになりました。

結果として、WAFによるFalse Positiveを減らそうというありきたりな結論になりました。というのも、顧客は「セキュリティが強化されるに越したことはないが、通常業務を止められたらたまらない」と思うのが世の常かなあ、と考えたためです。

その後はFalse Positiveを減らすために奮闘するわけですが、ここからかなり迷走します。まず考えつきそうなこととしては、LLMに与える情報について、False Positiveを減らすように最適化することですが、ぶっちゃけ僕はあんまりやりたくないかなあと思いました。

理想的には、何かしらdeterministicなアルゴリズムを用いてFalse Positiveを100%ではないがいくらか減らし、「deterministicなアルゴリズムも役に立つんですよ」という感じで発表をしたかったです。

具体的には、正常な言語の集合Bを定めて、WAFで弾かれる言語の集合をNとすると、BとNの共通部分が空集合になるNをうまいこと構築したり出来ないかな、などと考えていました。

しかしながら、これを考えることはFalse Positiveを0にするWAFルールを考えることと、かなり似たりよったりの難しさになってしまうので、追求してもあんまりうまくいきませんでした。

しかしながら、このBとNを用いたモデルを考えることで発展させられることはいくつかあります。

例えば、LLMと改善のサイクルを積んでBを改善するといった方向だったり、BとNをともに改善していくという方向だったり… まあ、あんまり良さそうなアプローチでもなく、考えることが多かったんですね。そもそもこのモデルが妥当なのか、どの変数を固定してどの変数を動かすか、LLMをどこに組み込むか・どこをdeterministicにやるか、など考えることが多くWoLもうまくできずで、あまりうまく進めることが出来ませんでした。

ごちゃごちゃした方針で4日目が進み、5日目もごちゃごちゃした発表をしてしまう、という感じでした。

僕が学んだこと

一言で言えば、AI時代におけるソフトスキルの重要性と、ハードスキルの位置づけについて学ぶことが出来ました。ここで述べることは、メンターであるkeymoonさんから借りた言葉を多分に含む(というかほぼそのままの部分が結構あり、ごめんなさい)ので、先に言っておきます。しかしながら、keymoonさんからもらった言葉を軸に、僕がやったことを分解しようとしている、という点で独自性は少々あるのかなと思っています。

先に言葉の定義をします。そこまで言葉の定義をガチガチに定める必要もないので、適当にindeedさん(https://jp.indeed.com/career-advice/resumes-cover-letters/hard-skills-vs-soft-skills)から引っ張ってくると、 🔗

さて、例を見れば分かる通り、最近のAIの進歩によってハードスキルはかなりカバーされてしまっていそうです。 たぶん、「プログラミング能力、語学力、ROPチェーンを組む力」でAIに勝てる(保険をかけるならば、勝ち続けられる)人類はほぼいないでしょう。

しかしながら、ソフトスキルに関しては、少なくとも今では価値がまだそこまで減っていないのではないかなと考えられます。したがって、めちゃくちゃ短絡的に言うならば、AI時代はソフトスキルを重視して伸ばせ!ということです。

そこで2つ疑問に浮かぶのが、ソフトスキルはどうやって磨くのかということと、ハードスキルは磨くべきなのか、ということです。

この2つの課題に一気にアプローチする方法の一つとしては、普通にハードスキルを勉強しておけというものがあります。 というのも、ハードスキルを本気で身につけようとしていたら、自然とソフトスキルもある程度育つからです。 1つ例を挙げると、数学の計算はハードスキルの代表例ですが、計算について本気で向き合った時、例えば「自分は積分での計算ミスが多いから、積分したときは答えを微分して検算しよう」といった工夫を思いつくでしょう。 「計算をミスなく素早くできること」自体はハードスキルですが、「計算をミスなく素早くできるようになる」営みを通じて、ソフトスキルは間違いなく育っています。 CTFでも同じで、AIを使わずに問題を解いているときには、ハードスキルと共に何かしらのソフトスキルが育っているはずです。 かなり感情論的な言葉になりますが、ハードスキルを通じてソフトスキルを育てるときには、本気でやるというのが大事かなという気がしています。

さて、先ほどソフトスキルを重要視したので、ソフトスキルに特化して磨くにはどうすればよいのかという疑問も浮かんできます。 先ほど述べた僕のインターン中での行動で分かる通り、3・4・5日目は僕のソフトスキル面の弱さが克明に現れた期間かなと考えています。 解決策として、keymoonさんの言葉を借りると、メタ認知の強化が挙げられます。

ソフトスキルはハードスキルと異なり、成長が見えにくいです。だからこそ、ソフトスキルを育てるためには、自分のソフトスキル面が今どうなっているか認知しておく必要があります。 そのための道具の1つとしてWoLがあった訳ですね。メタ認知をするために、自分の思考・行動を言語化しておくことは極めて重要です。WoLの大きな役割の1つに、メタ認知の手助けがあることが分かります。

ちょっと次元の入り組んだ話になりますが、実際うまくいかなかった3・4・5日目はあまりWoLが上手くいっていませんでした。WoLの量自体はあったのですが、今見るとなんだかずっと同じことを言っていて意味がないなあ、という感じです。今振り返ると、むしろ上手くいっていないときほど「今こう考えていて、ここまでは分かっていて、次はこれを試す」という報告の質を上げるべきでしたが、当時は自分の方向性を良くすることに精一杯で、WoLの質が二の次になっていました。

1つ言えるのは、WoLという形式を取らなくても、自分の今の状況・思考・行動について止めどなく言語化をしておくことは重要ということです。なんとなく生きる時間も大事ですが、comfort zoneに収まらず思考を巡らせる時間を増やしていく努力が、特に僕には必要だなあと感じています。

また、今思いついた突飛なアイデアとしては、「AIに100$払ってぶん回そう!」というのを試してみても、意外とソフトスキル強化につながるのではないかなと思います。 インターン期間中、今まで与えられたことがないほどのトークン量のClaudeを与えられて、正直持て余していました。いや、5h limitは頻繁に引っかかっていたのですが、僕ではそのトークン量のClaudeを上手く使うことが出来ていませんでした。

具体例としては、先ほど述べたように、3・4・5日目の迷走の原因の一つがAIへの不慣れかなと思います。AIは大量の情報を提供してくれる分、こちらが取捨選択する必要があります。頭では分かっていましたが、いざ大量のトークンを使って回してみるとなかなか判断ができない。僕のハードスキル不足もありますが、正直ハードスキルが不足していてもAIに質問すればかなり理解を進められる時代です。 僕に足りていなかったものの1つは、どこでAIをぶん回して、どこで足を止めて理解するのか、という判断力なのかなと思います。メタ認知の重要性がここでも分かりますね。 結果的にインターン期間中の僕はAIの情報量に踊らされ、あまり良いアウトプットを出すことが出来ませんでした。かなりデカい失敗をしましたが、かなり大きな学びにもなりました。

また、AIの出力に呑まれた原因を単純に僕の知識不足とするのも少し違うかなと思っています。原因の1つとしては、作業設計の問題があるかと考えられます。大量の情報が返ってくると、「そもそも自分は何を確かめようとしていたのか」を保持すること自体が難しくなります。 そうなると、AIに何かを投げる前に「これで何が分かれば次に進めるか」を一行だけ書いておくという仕組み作りが有効になってきます。なぜなら、返ってきた情報の価値を判断する基準が一つできるからです。 1つメタの話になりますが、この設計を考えることもソフトスキルかなと思います。

今までソフトスキルについて述べましたが、ハードスキルの位置づけについても述べようと思います。まず、ハードスキルが必要でないかで言えば、絶対に必要です。 極論を言えば、そもそもAIを叩けることもハードスキルです。 極論以外で言えば、自分がある程度理解していないと出来ないことが世の中多くあります。

例えば、学部2年の僕が修士論文に匹敵する論文を出せるかと言えば出せないでしょう。いや、GPT 6 Astraを使えば技術的には可能かもしれません。しかし、たぶんその論文は何を言っているのか僕には分からないし、分かるようになるのは数年先かもしれません。それに僕の名前をつけて世に出せるかと言われると、少なくとも僕は出来ません。

このように、AIが言っていることをある程度理解できるだけのハードスキルは絶対に必要です。 現在のAIは、多くの知的作業で人間を大きく上回る能力を持っていますが、例えばAIの舵取りをするとなったとき、AIがやっていることを見て筋が悪いと判断して切り替えさせるとなれば、圧倒的に人間の方が速く決断できます。オフィスにいた人の言葉を借りれば、「人間の脳は、AIよりも遥かに高速なキャッシュメモリである」として使うことができます。 我々が人間である以上、ある行為の受益主体となりたいわけです。つまり、僕たちは人間なのだから、人間が得をするように動きたいはず。そこでAIが何をしているのか分からないとなれば、「何をしているのか分からないけど我々より知能が高いモノ」に全てを任せることになってしまいます。 したがって、物事を判断できるだけのハードスキルは、まだ必要とされるのではないかと思います。

物事を判断できるだけのハードスキルを身につけるにはどうすればよいのかという話になりますが、体系的な教科書があるような分野であれば、教科書の内容を自分で理解するというのが一番漏れがないと思います。Webなら代表的なのは徳丸本かなと思います。高度すぎる脆弱性は載っていませんが、典型的な脆弱性なら網羅されているはずです。 教科書がない分野でも、ある程度よくあるパターンや、その分野における理論について勉強して、(ある程度複雑な)具体例を2・3個ほど自分で完璧に説明できるようになれば、ハードスキルとしてはある程度の到達点にあるのかなと思います。 例えばSQL Injectionなら、典型的な具体例を1つ、ある程度複雑な具体例を1つ、自分で完全に説明できるようにする、ということをやってもよいかもしれません。それが全ての典型的脆弱性に及んでいれば、少なくとも、AIの出力を評価したり、次に何を調べるべきか判断したりするためのかなり強い土台になると思います。

まとめると、まずスキルをソフトスキルとハードスキルに分解したときに、前者の重要性が増してきているが後者も依然として重要。ソフトスキルを磨くには、まずはメタ認知が大事。ハードスキルは、物事の判断をできる最小限の範囲(または自分のやりたい範囲)で勉強し、ときにはAIを全く使わず自分の頭で考える時間も作って磨く、ということが大事かなという結論に至りました。

人との出会い

メンターのkeymoonさん、shioさんをはじめ、かなり多くのセキュリティ界隈の人々と会うことができました。木曜日には社内でプチ飲み会がありましたが、飲み会のスキルもソフトスキルです。マジで。

かなり風通しの良い職場となっているので、経営陣との距離も近く、例えば米内さんとは多くお話をさせていただきました。CEOの井手さんとお話させていただく機会もあり、経済をはじめとした社会一般の話を多く聞かせていただき、とても勉強になりました。

今まで、僕が学んだことについて長々と述べてきましたが、Flattmateとの出会いも、インターンでの学びと同じくらい価値のあるものでした。

まとめ

Flattが次に目指している方向について技術的に体感できた他、セキュリティに限らず仕事一般、というか人生において大事なことを多く学べて、とても有意義なインターンになりました。

セキュリティを将来の専門にするつもりがない方も、応募課題に興味を持って取り組めるならぜひ応募してみてほしいです。


Edit page
Share this post on:

Previous Post
Daily AlpacaHack B-SIDE no win func Writeup
Next Post
Daily AlpacaHack fsbase modification Writeup