← Another post?
Available languages:
日本語English

Reflections on 2025

Table of Contents

Thoughts on the Year

Roughly Speaking

Diving into the World of Security

I changed jobs and jumped into the world of security. It was an area I had been interested in for a long time, but actually doing it has been incredibly interesting. It's technically fascinating, and I feel the sec people are a bit different from those in the dev world. So it felt like the start of a new adventure. Everything was fresh and truly exciting!

Putting Effort into Bug Hunting

I started doing bug hunting as a hobby. At first, I was looking at Web apps and extensions, but halfway through, I shifted my focus to browsers. Recently, I've been looking only at browsers.

The only three that have been disclosed so far are:

Chromium UAF

My first Chromium bounty. It is a crash likely UAF by classic JS re-entrancy via then getter and awarded $4000 including patch and bisect :)

https://issues.chromium.org/issues/453147449

Edge UI Spoofing (CVE-2025-26643)

It was the first bug I reported about a browser, so it was moving for me :)

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-26643

Brave crash

This really isn't a big deal, but I was super happy to find a vulnerability in a browser that wasn't just a variant-rollout of someone else's finding.

https://hackerone.com/reports/2958097

Actually, I managed to make several other reports that are even more interesting. I hope to write articles about them once they are disclosed.

Recently, I've only been looking for memory-related bugs in bug hunting. I think this was a year where I became much more knowledgeable about C++ and memory.

Combined with the fact that a lot of my work time involves code reading, I think I spent more time reading code this year than at any other point in my engineering career. I read various kinds of code.

What I realized is that code reading is like shining a light on an object to observe it. Depending on how you shine the light, what you see changes. While one part jumps out at you, other parts get hidden in the shadows. If you shine the light from a security angle, you might notice IDORs or UaFs, but the elegance of the design or the efficiency of the processing (though we do consider it when thinking about DoS etc.) might slip through. I think it would be fun to be able to read code in various ways. Also, as a quick tip: I realized again that it's important to scan the whole thing first and then read with varying degrees of focus.

Next year, I plan to dig into JS engines. I think it's the hottest area in browsers right now, so I wanna do my best 👶

Working Hard on Browser Development

I was able to work on several feature implementations and bug fixes for Firefox, especially around Animation.

A screenshot of an email titled "Intent to Ship: endpoint-inclusive commitStyles" posted to the Mozilla mailing list, with the sender icon showing canalun.

The implementation of Animation.prototype.overallProgress can be found below. (There is also a Japanese version of the article).

https://canalun.company/posts/release_overall_progress_en

And here is the change regarding the behavior of CommitStyles endpoints.

https://canalun.company/posts/log_20250208_en

I also worked on implementing interventions. For those asking "What is an intervention?", I recommend looking at the about:compat page in Firefox and browsing this wiki. Below is the link to the Phabricator patch.

https://phabricator.services.mozilla.com/D276965

I think it was also good (though honestly incredibly tough) that I was able to implement the CommitStyles behavior change in Chromium as well. Below is the link to Gerrit.

https://chromium-review.googlesource.com/c/chromium/src/+/6904038

Next year, I want to work hard to implement larger features in Firefox.
I also want to aim for becoming a committer in Chromium.

Participating in Many Events

I had the opportunity to speak at various events.
Starting with chot Inc.'s event, Hardening, Sapporo Engineer Base, everyone's favorite Frontend Conference Hokkaido, and JSConf. I'm very grateful for this. I also got to do the alien thing, again 👽️

Also, participating in TPAC was a very blessed opportunity. I met people from Mozilla, people leading e-books in the publishing industry, and was able to hear various stories. It was really great to be featured on mozaic.fm.

https://mozaic.fm/episodes/189/tpac2025.html

It was also great to be able to organize a browser bug hunting event myself. I was happy that veterans like Azara, and super-legend hunters like masatokinugawa and Alesandro Ortiz spoke at the event!

https://browsercrashclub.connpass.com/event/350203/

Able to Do New Things

I think I became able to do various new things.
First, I can now buy a broken Game Boy and fix it by soldering, and I can do a certain amount of mysterious hardware hacking (which I won't write much about here). Including bug hunting, I feel like I've stepped into a world I once longed for. I think I've been truly blessed with great colleagues.
I feel like I've gotten used to the browser development flow, and it's deeply moving that I no longer get emotional just by sending a patch. A year ago, I would have been like "Whoa!" just by sending one.
Also, getting the opportunity to write articles and review books was really good. I'm incredibly happy about that.

Went to Many Overseas Conferences

I had many opportunities to go to overseas conferences. Google I/O, BlackHat, and DEFCON. TPAC was also a great opportunity to talk with people from overseas.
As a result, I feel that English is still a bit challenging for me. My first job was as a consultant at a strategy consulting firm, so I used English often, but chatting in a noisy place or having difficult technical discussions is still hard. It would be more fun if I could talk to various people, so I want to work hard on this in 2026.

Goals in 2026

What I Did

Finally, I'll list what I did this year and wrap it up 👶

January

Highlight: Analysis of UaF in Chromium's UI components
https://canalun.company/posts/uaf_in_chromium_1_en

February

Highlight: Brave Null Pointer Dereference by Crafted Response from AI Model
https://hackerone.com/reports/2958097

March

Highlight: Authored "How Chromium Renders Text (Kanaru Sato)"
https://www.lambdanote.com/products/n-vol-5-no-1

April

Highlight: Hosted Browser Crash Club
https://browsercrashclub.connpass.com/event/350203/

May

Highlight: Google I/O
https://canalun.company/posts/google_io_day1_ja

June

Highlight: Prototype-based Data Skimming
https://cheatsheetseries.owasp.org/cheatsheets/Browser_Extension_Vulnerabilities_Cheat_Sheet.html#12-prototype-based-data-skimming

July

Highlight: Implemented and released Animation.overallprogress in Firefox
https://groups.google.com/a/mozilla.org/g/dev-platform/c/_vMp7q8N0HE

August

Highlight: Nailed "ZANKOKU" at Hacker Karaoke
https://blog.flatt.tech/entry/lasvegas_2025#小ネタHacker-Karaoke

September

Highlight: "What are Browsers Protecting the 'Frontend' From?"
https://docs.google.com/presentation/d/1SRlqYR7m4a9JcN9GblnByeQP7Mmwwoe8zTlQQDhqMJc

October

Highlight: Implemented the behavior change done in Firefox in Chromium as well (Make commitStyles endpoint-inclusive)
https://chromium-review.googlesource.com/c/chromium/src/+/6904038

November

Highlight: Tragedy or Hope in the Commons: The Race for JavaScript Prototype Override
https://docs.google.com/presentation/d/1e1waxYgzcrH0YhgFXDDiyk2iVQVUw7-l7S4tDiP7s0o

December

Highlight: add a CSS webcompat intervention for tjoy.jp zoom-in on Android
https://phabricator.services.mozilla.com/D276965

Finally

Wishing everyone a great year next year! 👶

← Another post?