<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>browser exploitation — algoatson.github.io</title>
    <link>https://algoatson.github.io/series/browser-exploitation/</link>
    <atom:link href="https://algoatson.github.io/series/browser-exploitation/feed.xml" rel="self" type="application/rss+xml"/>
    <description>The primitives and the bug are in hand; this is the escalation every JS-engine exploit ends with. Forge a TypedArray whose backing-store pointer you control, get read/write anywhere, then turn that into code execution — and the modern mitigations (the V8 sandbox, W^X JIT) that make the last step the hard one now.</description>
    <language>en</language>
    <lastBuildDate>Tue, 16 Jun 2026 02:47:53 +0000</lastBuildDate>
    <item>
      <title>addrof and fakeobj — the two primitives that own a JS engine</title>
      <link>https://algoatson.github.io/p/addrof-fakeobj-primitives/</link>
      <guid isPermaLink="true">https://algoatson.github.io/p/addrof-fakeobj-primitives/</guid>
      <pubDate>Sun, 11 Jan 2026 00:00:00 +0000</pubDate>
      <category>pwn</category><category>browser</category>
      <description>Every JavaScript-engine exploit converges on the same two primitives — leak the address of an object, and forge an object at an address. Build them once from a type confusion between a float array and an object array, and the rest of the exploit is mechanical.</description>
    </item>
    <item>
      <title>JIT type confusion — when the optimizer believes a lie</title>
      <link>https://algoatson.github.io/p/jit-type-confusion/</link>
      <guid isPermaLink="true">https://algoatson.github.io/p/jit-type-confusion/</guid>
      <pubDate>Tue, 13 Jan 2026 00:00:00 +0000</pubDate>
      <category>pwn</category><category>browser</category>
      <description>The fastest path to the addrof/fakeobj primitives is a bug in the JIT itself. Convince the optimizer that a value has a type or range it doesn&#x27;t, and it removes a bounds check it shouldn&#x27;t have — handing you an out-of-bounds access in compiled, unguarded code.</description>
    </item>
    <item>
      <title>from OOB to arbitrary R/W (and a shell)</title>
      <link>https://algoatson.github.io/p/oob-to-arbitrary-rw/</link>
      <guid isPermaLink="true">https://algoatson.github.io/p/oob-to-arbitrary-rw/</guid>
      <pubDate>Fri, 16 Jan 2026 00:00:00 +0000</pubDate>
      <category>pwn</category><category>browser</category>
      <description>The primitives and the bug are in hand; this is the escalation every JS-engine exploit ends with. Forge a TypedArray whose backing-store pointer you control, get read/write anywhere, then turn that into code execution — and the modern mitigations (the V8 sandbox, W^X JIT) that make the last step the hard one now.</description>
    </item>
  </channel>
</rss>
