Security Review #316

July 31, 2026

Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.

— Stan Kelly-Bootle

Starred Articles

GAP

In this post, I’m releasing GAP (Ghost Anchor Persistence), a fileless persistence technique that exploits an architectural quirk in Chromium-based browsers to achieve persistent, arbitrary JavaScript execution within the browser - with no malicious artifact remaining on the filesystem after the attack.

Discovering cryptographic weaknesses with Claude

We have discovered improved ways to attack cryptographic algorithms. The first attack significantly weakens HAWK, the second identifies a new way to attack round-reduced AES. This post describes both findings in more detail and discusses the implications for cryptography in an age of powerful AI models.

Your House Has an FFmpeg Problem

We detail how we went hunting for attack chain primitives on Home Assistant and ended up with an interesting exploit by abusing FFmpeg input streams.

Inside Entra Agent ID

We deep dive into Entra Agent ID, a hierarchical identity framework that gives AI agents a "passport" – a central Agent Identity Blueprint stores the credentials and inheritable permissions, while each child Agent Identity (and optional Agent User) authenticates via a token‑exchange flow and is linked to a human sponsor for accountability.

New Articles

Exploiting Azure IMDS

A single unauthenticated call to the Azure Instance Metadata Service (169.254.169.254) on a compromised VM can mint OAuth tokens for dozens of audiences, letting an attacker enumerate resources, steal Key Vault secrets, execute commands on other VMs, and even compromise the domain controller - all without exploits, logging, or rate‑limiting.

You Don't Need Mimikatz for DCSync Anymore (SharpDCSync)

The end goal of most Active Directory penetration tests is a DCSync attack. If you can pull it off, you can dump the hashes of every user in the domain, which means you effectively own it. In this post I want to show a technique that doesn't rely on Mimikatz. It is a tool called SharpDCSync, a DCSync written in pure C#. No Mimikatz on disk, no Mimikatz in memory, and it runs comfortably from a C2 framework.

JavaScript Sandboxes: Antipattern Review

As JavaScript is famously known as a language held together with paper clips and rubber bands, the topic of proper sandboxing and safe JS execution is critical in application security. I explore some small and common gotchas that I've seen in recent times regarding JS sandboxes, including real-world examples I saw.

SharedRoot; Escaping the Claude Cowork sandbox

Untrusted content in a Claude Cowork session can escape the VM it's sandboxed in and read and write files anywhere on your Mac. The kernel bug that makes it possible isn't the interesting part. Four design decisions are, and they'd have stopped the next kernel bug too.

HTTP Request Smuggling in Hiawatha

An HTTP Request Smuggling vulnerability was identified in Hiawatha. The issue stems from how Hiawatha handles requests carrying both Transfer-Encoding and Content-Length headers. An unauthenticated remote attacker can exploit this in order to desynchronize the front-end and the back-end, smuggling a request that poisons the back-end connection.

CosmosEscape: Taking Over Every Azure Cosmos DB

We detail CosmosEscape, a critical vulnerability chain in Azure Cosmos DB providing attackers with full read and write access to every Cosmos DB database.

Reverse engineering what HyperGuard monitors in ntoskrnl

Reverse engineering Windows HyperGuard to map the ntoskrnl code, SSDTs, HAL callbacks, alt-syscall state and hypercall pointers protected by SKPG. We show how HyperGuard extends PatchGuard’s integrity checks into VTL‑1, and they discuss the implications for kernel‑level tampering.

Analysis of Certighost (CVE-2026-54121)

A technical analysis of Certighost (CVE-2026-54121), an Active Directory Certificate Services (AD CS) vulnerability that allows a low-privileged domain user to impersonate a Domain Controller and achieve domain compromise in the tested AD CS configuration.

KindaRails2Shell - Critical RCE in Rails via Active Storage (CVE-2026-66066)

We discovered KindaRails2Shell (CVE-2026-66066), an arbitrary file read and remote code execution chain affecting default Rails applications that use Active Storage with the vips image processor, which is the processor that ships by default in the official Rails Docker images and on Debian/Ubuntu.

From your doorbell to your home network

Analyzing Eufy Security Ecosystem and reverse engineering of its doorbell component. We show how the hidden “OCEAN_XXXXXX” Wi‑Fi network can be disrupted with de‑authentication attacks, how the doorbell's sound‑wave pairing protocol is reverse‑engineered to reveal SSID and password data, and how the encrypted configuration file containing those credentials can be extracted and decrypted from the device's firmware.

SakDriver: Reversing a Kernel Driver Rootkit

Analysis of SakDriver, an advanced kernel driver rootkit that blinds Windows defenses by hooking ETW/CKCL, hiding network ports, and bypassing EDRs via registry callback C2 commands.

CVE-2026-50469 - ProjFS File Delete

An in-depth analysis of CVE-2026-50469, a file deletion vulnerability in the Windows ProjFS (Projected File System) driver prjflt.sys caused by executing privileged actions on behalf of low-privileged users without performing adequate access checks.

Azure VM Command Execution using Third-Party Extensions

In this post we cover different methods of executing code on Azure Virtual machines by abusing legitimate third-party extensions, a method that is more likely to be undetected.

A root remote command execution on macOS with M5 in 2026?

A legacy macOS Screen Sharing path allowed a VNC-password-authenticated viewer to read protected files and create files as root. We turned that primitive into post-authentication remote root command execution - without memory corruption and beyond MIE's threat model. This is the story of CVE-2026-43760.

Exploiting Titan Quest

Titan Quest is a hack-and-slash video game released in 2006. In the version provided by GOG, several development tools are installed with the game. This article details the various vulnerabilities found in the game engine as well as their exploitation.

Designing Patterns to Prevent IDOR

In this post, we explain why Insecure Direct Object Reference (IDOR) bugs are common, and we propose three architectural patterns (wrapping IDs in validation, enforcing tenant IDs in every query, and using distinct typed primary keys) plus a brief discussion of row‑level security and composite keys, all aimed at making IDOR‑preventing practices the default and hardest to bypass in a codebase.

How We Hacked Thousands of Data Centers in Minutes Using a 20-Year-Old Vulnerability

Exploiting CVE-2013-4786, a long-known vulnerability in the IPMI 2.0 authentication protocol, we managed to access thousands of servers Baseboard Management Controller (BMC), a highly privileged management processor that provides remote control over a server independently of its operating system.

Escaping Linux Sandboxes via PipeWire (CVE-2026-5674)

This post walks through a sandbox escape from a Flatpak application via PipeWire. The escape relies on three separate issues: an authentication cookie that is never validated, a module loading enabled by default, and a dlopen() with no path validation.

Still Recent

How LLM-driven EDR evasion works

In this post we look at how LLMs are impacting how we approach endpoint security, including LLM-driven EDR evasion. We illustrate by reverse engineering Cortex XDR with LLMs to extract YARA rules, ML models, and behavioral detections.

Golang code review notes - Part 2

We will start with a quick look at what changes have been made to the language to make security easier and more intuitive. Then we have a bunch of new footguns we would like to highlight, hopefully to the benefit of everyone auditing or developing Golang projects. Finally, we release a couple of semgrep rules to close the gap regarding these risky coding patterns.

One of the many flaws of Phi untagging: CVE-2026-4447

This is a writeup for a 0day vulnerability inside V8, Chrome's JS engine. The "phi‑untagging" optimization incorrectly canonicalizes a Float64‑to‑tagged conversion, turning a boxed HeapNumber into a Smi without updating type information; this creates a heap‑object‑only field type‑confusion that can be abused to achieve arbitrary read/write and full exploitation.

Oldies but Goodies

ESC8s and Where to Find Them

Many tools (e.g., Certipy, Certify) only look for the ESC8 "Web Enrollment" endpoint on the CA's own host, and miss cases where a separate IIS server is trusted for delegation and hosts the enrollment service. Therefore security analysts should also probe any delegated web servers for /certsrv/ to uncover hidden ESC8 vulnerabilities.

7 Ways to Execute Command on Azure Virtual Machines & Virtual Machine Scale Sets

In this blog post, we will dive into the various execution methods, providing examples of both Azure CLI and Azure PowerShell commands along with the underlying REST API calls that can be used to achieve code execution on Azure VMs using Entra ID credentials.

Unearthed Arcana

Golang code review notes - Part 1

A practical guide to security code review for Go codebases, identifying dangerous patterns, common pitfalls, and Go-specific vulnerabilities.

Attacking Azure with Custom Script Extensions

In this post we'll explore how the Azure VM Custom Script Extension and Run Command functionality could be leveraged by an attacker to establish a foothold in an environment, which could be used to persist access and escalate privileges.