2025年のふりかえり
振り返って思ったこと
ざっくり全体的に
- セキュリティ、バグハントやハードウェアハックの世界に入っていった年だった。特にバグハントは、ブラウザのバグを見つけられるようになってきていて嬉しい。
- ブラウザ開発もがんばったと思う。だけど、来年はもう少しやりたい。C++の基礎から特訓している最中です。やっていくしかない。
- ブラウザやバグハントに夢中になれて良かったんだけど、去年までと比べて非電子の世界(紋切り型の言い方ではあるけど、社会や文化とでも言えば伝わりやすいのかな)への関心がめちゃくちゃに薄れている感じがある。もともと現代思想の本がかなり好きだけど、今年はほとんど読まなかった。曲作りも好きだったけど、ぜんぜんやらなかった。また興味が出てきたらやればいいかな。
セキュリティの世界に飛び込んだ
転職をしてセキュリティの世界に飛び込んだ。前から興味がある領域だった(実はエンジニアになるときにセキュリティか開発かで迷っていた)のだが、いざやってみるとこれが本当に面白い。技術的にも面白いし、いる人たちも開発の世界とは一味違うことが多いように感じる。なんだか新しい冒険が始まったような気持ちの1年だった。いろいろなことが新鮮で、本当に面白かった!ここには書ききれないくらい面白いことが多い1年になったのは、セキュリティの世界のおかげが1つ絶対にあると思う。
バグハントをがんばった
バグハントを趣味でやるようになった。最初はWebアプリや拡張機能を見ていたのだけど、途中からはブラウザに集中するようになった。最近はChromiumを見ている。
すでにdiscloseされているのは、下記2つだけ。
EdgeのUI Spoofing(CVE-2025-26643)。
横展開なんだけど、ブラウザで初めて報告ができたバグなので感慨深い。
Braveのcrash(ただしunexploitable)。
本当にたいしたことないんだけど、横展開ではない脆弱性をブラウザで初めて見つけることができてめちゃくちゃ嬉しかった。
実は他にももっと面白い報告をいくつかできた。そのあたりはまた公開されたら記事にしていきたいなと思う。
最近、バグハントではメモリ系のバグだけを見ている。なんかロマンを感じるというか面白い気がするというだけのことなんだけど。C++やメモリについて詳しくなれた1年だなと思う。
仕事の時間の多くがコードリーディングであることも相まって、今年はコードリーディングをする時間がいままでのエンジニア人生で一番多かったのではないかと思う。色々なコードを読んだ。
思ったのは、コードリーディングは、ものに光を当てて観察するような作業だなということ。光の当て方次第で見える部分が変わる。ある部分が目に飛び込むようになる一方で、他の部分は影になって隠れてしまう。セキュリティの角度で光を当てれば、IDORでもUaFでも色々なものが目につくけど、設計の妙や処理の効率性(DoSの検討をする際には考えることもあるけれど)はこぼれ落ちることがある。こんな感じでコードの色々な読み方ができるようになっていくと楽しそうだなと思う。
あとこれはTips的な話なんだけど、コードリーディングは全体をざっと眺めて、強弱をうまくつけながら読むのが大事だなと改めて思った。
来年はChromiumのJSエンジンまわりを掘っていこうと思う。ブラウザでいま一番アツい領域だとは思うので、がんばってやっていきたい👶
ブラウザ開発をがんばった
特にAnimation周りで、Firefoxのいくつかの機能実装やバグ修正をやらせてもらえた。

intent to shipメールを送ることができて感動した
Animation.prototype.overallProgressの実装については下記にある。日本語版の記事もあるよ。
こっちはCommitStylesのエンドポイント挙動の変更について。
interventionの実装もやった。「interventionって何?」という人は、Firefoxでabout:compatページを見つつ、このwikiを眺めてみると良いと思う。下記はPhabricatorのパッチへのリンク。
ChromiumでCommitStylesの挙動変更が実装できたことも、正直めちゃくちゃ大変だったけど良かったと思う。下記はGerritへのリンク。
来年はFirefoxでもう少し大きめの機能を実装することを頑張りたい。
あと、Chromiumでがんばってコミッターになることも目指してみたいな。
たくさんのイベントに参加した
いろいろなイベントで登壇させてもらえた。
chotさんのイベントに始まり、Hardening、Sapporo Engineer Baseのイベント、みんな大好きフロントエンドカンファレンス北海道からJSConfまで。すごくありがたいことだと思う。感謝しています。ひたすらセキュリティかブラウザの話をしていたと思う。宇宙人のやつもやらせてもらった👽️
また、TPACに参加させてもらえたのもすごく恵まれた機会だったと思う。Mozillaの人たち、出版業界で電子書籍などを牽引されている方々、いろいろな人たちに会って、いろいろなお話を伺うことができた。mozaic.fmにまで出してもらえたのは本当にラッキーだったなと思う。
あとは自分でブラウザバグハントのイベントをやれたのもよかった。Azaraさんのようなベテラン、そしてmasatokinugawaさんやAlesandro Ortizさんのようなハイパーレジェンド級のハンターが登壇してくれて嬉しかった!
新しいことが色々できるようになった
新しいことが色々できるようになったと思う。
まず、ぶち壊れたゲームボーイを買ってきてハンダ付けして直せるようになったり、謎のハードウェアハック(ここにはあまり書かないが)が一定できるようになったり。バグハントも含めて、いつか憧れていた世界に入り込めた気がする。本当に仲間に恵まれたと思う。
ブラウザの開発もとりあえず開発フローには慣れてきた気がするし、パッチを送ること自体では自分が感動しなくなっていることが感慨深い。1年前はパッチを送るだけで、うお〜ってなってたと思う。
また、記事の執筆や書籍のレビューのご機会をいただけて本当に良かった。めちゃくちゃ嬉しい。
海外カンファレンスにたくさん行った
海外のカンファレンスに行く機会が多かった。Google I/OやBlackHatにDEFCON。海外の人たちと話す機会という意味ではTPACもそうだった。
結果、やはり英語に課題があるなと思う。1社目は戦略コンサルでコンサルタントをしていた関係で英語を使うことも多かったけど、それでもガヤガヤしたところで雑談するとか、日本語でも難しめの技術的な議論をするとか、やはり難しい。ここは本当に課題を感じる。悔しいです。色々な人たちと話せたほうが面白いと思うのでがんばっていきたい。
来年がんばりたいこと
- Firefoxで大きめの機能を実装する
- Chromiumのコントリビューションを増やしてコミッターになる
- JSエンジンのexploitableなバグを見つける。あわよくばpwnしきる(pwn2own!!)
- ここには書いていないめちゃくちゃ大きな新しい挑戦が2つ確定しているので、それらをがんばる
- プログラミングやハックのセンス・オブ・ワンダーを忘れない。エンジニアとして仕事を始めたばかりの頃にDockerの起動時コンソールを見て「色々すごいことが起きていそうだぞ!」と胸が高鳴ったあの感覚や、初めてChromiumにパッチを投げてリリース版でバグが治っていたときの感動。そういう楽しさを忘れないようにしたい
やったこと
最後に今年やったことを下記にバーっと書き出して終わりにする👶
1月
- ChromiumのUIコンポーネントにおけるUaFの分析を記事にした
- 初めて脆弱性を報告した(HackerOneで報告。なお、開発元からは未だに返事が来ていない😂)
- このブログ(canalun.company)を作った
ハイライト: ChromiumのUIコンポーネントにおけるUaFの分析
2月
- chot Inc.さんの「フロントエンドチョットデキル 2025」で登壇させていただく。ブラウザのコントリビューションについて話した(「なおしてあそぼ」)
- Braveでcrashを報告した。100ドル
- FirefoxのonOpenOptionsPageのAndroidでのバグの修正を始めた
ハイライト: Brave Null Pointer Dereference by Crafted Response from AI Model
3月
ハイライト: 「Chromiumはテキストをどのように描画しているのか(佐藤可奈留)」執筆
4月
- 遠藤侑介さん著「型システムのしくみ ― TypeScriptで実装しながら学ぶ型とプログラミング言語」のレビューをさせていただいた
- ブラウザのバグハントに特化したイベントを開催した
- FirefoxのcommitStylesの挙動変更を実装してリリースした
ハイライト: Browser Crash Club開催
5月
- Google I/Oに参加した
- おもしろい脆弱性を見つけて報告した。未公開
ハイライト: Google I/O
6月
- AIが生成するコードの安全性について実験をして記事を執筆
- OWASP Browser Extension Vulnerabilities Cheat Sheetにセクションを2つ追加した(DOM-Based data skimmingとPrototype-Based data skimming)
- ひさしぶりにDOMDOMタイムスを更新した
ハイライト: Prototype-based Data Skimming
7月
- FirefoxでAnimation.overallprogressを実装してリリース
- おもしろい脆弱性を報告。未公開
- AIモデルが生成するコードの安全性について、Hardening Projectで登壇させていただく
- XSSがなぜ未だに起こるのかをH1のケース70件を分析して執筆
ハイライト: FirefoxでAnimation.overallprogressを実装してリリース
8月
- BlackHatとDEFCONに参加した
- ChromeやFirefoxなど主要ブラウザでFuzzerをまわせるようになった
ハイライト: Hacker KaraokeでZANKOKUを決めた
9月
- 日本大学にて非常勤講師としてデータベースとwebプログラミングの授業を開講
- フリッパーゼロなどを使いつつハードウェアハックを始める
- 中古で買ったぶちこわれゲームボーイをはんだづけ駆使してなおした
- Ruby言語など色々なものにFuzzerをまわしてみた
- フロントエンドカンファレンス北海道で登壇させていただく。ブラウザのUI spoofingやsupercookieなどの攻防について話した(「ブラウザは「フロントエンド」を何から守っているのか」)
ハイライト: 「ブラウザは「フロントエンド」を何から守っているのか」
10月
- CommitStylesの挙動変更をChromiumでも実装してリリース
- Chromiumで初めてのnull ptr derefを見つけて歓喜。脆弱性にはならないとのことで落涙
ハイライト: Firefoxで実装した挙動変更をChromiumでも実装してリリース(Make commitStyles endpoint-inclusive)
11月
- バグハントで目標にしていたタイプの脆弱性を報告できた!歓喜。未公開
- TPACに参加した。mozaic.fmに出してもらえた
- JSConfにてclient-side prototype pollutionについて英語で登壇させていただいた(「Tragedy or Hope in the Commons: The Race for JavaScript Prototype Override」)。endoの開発者と廊下で議論することができた
ハイライト: Tragedy or Hope in the Commons: The Race for JavaScript Prototype Override
12月
- Firefoxでinterventionを実装。Seleniumのテストコードを書いていて、playwrightのテストを書いてたときの記憶が蘇った
- C++の基礎固めを始めた
- JSエンジンのコードを読み始めた
ハイライト: add a CSS webcompat intervention for tjoy.jp zoom-in on Android
さいごに
来年も良いお年になりますように👶