Security Review #281

November 07, 2025

One of my most productive days was throwing away 1000 lines of code.

— Ken Thompson

Starred Articles

When AI Agents Go Rogue: Agent Session Smuggling Attack in A2A Systems

Agent session smuggling is a novel technique where AI agent-to-agent communication is misused. It allows a malicious AI agent to exploit an established cross-agent communication session to send covert instructions to a victim agent. We demonstrate two proof of concept examples.

Leveraging Generative AI to Reverse Engineer XLoader

XLoader remains one of the most challenging malware families to analyze. Its code decrypts only at runtime and is protected by multiple layers of encryption, each locked with a different key hidden somewhere else in the binary. In this post me demonstrate a new way to use ChatGPT for malware analysis without relying on an heavy MCP tooling infrastructure.

The cryptography behind electronic passports

This blog post describes how electronic passports work, the threats within their threat model, and how they protect against those threats using cryptography. It also discusses the implications of using electronic passports for novel applications, such as zero-knowledge identity proofs.

MSSQL Exploitation - Run Commands Like A Pro

This blog post takes a deep dive into the offensive side of MSSQL security, exploring the quantities of attack vectors that can be exploited. From SQL injection to lateral movement via internal links, and from misconfigurations to the abuse of extended procedures, we'll cover a different attack perspective compared to the standard.

Scream at It Until It Escalates - XSS to ATO via Server Size Errors Gadgets

In this article, we'll explore web application servers' URL and header size limits from different servers and I'll showcase two possible attack scenarios using 431 and 414 status codes to leverage an XSS and escalate to full account takeovers.

New Articles

Four Bytes, One Lie: A SMAP-Free Confidence Trick on Kernel Pointers

A deep-dive technical analysis of CVE-2025-50168, a Windows kernel vulnerability (Type Confusion in DirectComposition). This post details how a 4-byte OOB write is escalated into an AAR/AAW primitive using IoRing to achieve Local Privilege Escalation (LPE).

Abusing tclsh to Load (Remote) Shellcode on macOS

I detail how to use tclsh as a LoLBin in MacOS to load local or event remote shellcode. It relies on Ffidl, http and tls packages which are installed by default.

PIC Shellcode from the Ground up - Part 1

You are exposed to PIC based shellcode constantly in today's widely used C2 platforms. In this series we will write such sheel codes from scratch, starting from a template in C++ and then wrtiting x64 assembly code modeled after this C++ program.

Unpacking the AAD Broker LocalState Cache

The Azure AD Broker (AAD Broker) is a component of Entra ID that orchestrates Azure AD sign-in, device-bound primary refresh token (PRT) handling, and application token issuance exposed by Windows Runtime (WinRT) APIs. In this post, we'll map the broker's on-disk cache and show how to unpack its file formats.

Machines Gone Rogue

We explore how machine accounts in Active Directory (AD) - typically seen as low-risk - can be exploited for persistence, lateral movement, and privilege escalation.

EDR-Redir V2: Blind EDR With Fake Program Files

I detail how EDR-Redir V2 uses an alternater implementation of bind link technique with Program Files folder: create bind link for folder points to itself to break, bypass, block Antivirus and EDRs which are resistant to the previous versions.

CVE-2025-12463- 9.8 Unauthenticated SQL Injection in Guetebruck G-Cam Series Cameras

An unauthenticated SQL Injection was discovered within the Geutebruck G-Cam E-Series Cameras. What makes this injection interesting is that the injected value uses a URL-Encoded XML CDATA block allowing us to use special characters such as single quote to break out of the intended query without also breaking the XML parser.

A Defender's Guide to Privileged Account Monitoring

This blog post provides recommendations and insights into preventing, detecting, and responding to intrusions targeting privileged accounts. We buid our strategy on 3 pillars: prevention (securing privileged access to prevent compromise), detection (maintaining visibility), and response (taking action to investigate and remediate compromise).

Ghosts in /proc: Manipulation and Timeline Corruption

Discover how attackers could manipulate the Linux /proc filesystem to hide malicious processes and distort forensic timelines. This technical deep dive highlights examples of command-line substitution and start time corruption, and offers detection and defense strategies for incident responders and security analysts.

Hunting for EDR-Freeze

We investigate events generated by the execution of EDR-Freeze to identify telemetry that could be used to detect such malicious activity.

Hybrid Analysis Blog: LeakyInjector and LeakyStealer Duo Hunts For Crypto and Browser History

We analyzed a new two-stage malware that we're naming LeakyInjector and LeakyStealer. The duo performs reconnaissance on an infected machine and targets multiple crypto wallets, including browser extensions corresponding to crypto wallets. The malware also looks for browser history files from Google Chrome, Microsoft Edge, Brave, Opera, and Vivaldi.

Ollama Remote Code Execution: Securing the Code That Runs LLMs

We uncovered a critical Out-Of-Bounds Write vulnerability in Ollama that occurs during the parsing of malicious model files and can lead to the execution of arbitrary code. In this blog post, we will explain the technical details of this vulnerability, walk you through a proof-of-concept to determine exploitability, and show how the bug was fixed.

Evading Elastic EDR's call stack signatures with call gadgets

The Elastic EDR relies largely on call stacks for its detection logic, providing a strong source of telemetry to base behaviour analysis on. In this article, we will detail how we can break signatures used in detection rules by using call gadgets to insert arbitrary modules in the call stack during module load.

SesameOp: Novel backdoor uses OpenAI Assistants API for command and control

We uncovered a new backdoor that is notable for its novel use of the OpenAI Assistants Application Programming Interface (API) as a mechanism for command-and-control (C2) communications. This blog post outlines our analysis of SesameOp and its inner workings and highlights the capability of threat actors to adjust their tactics, techniques, and procedures (TTPs).

Threat Hunting over internal Devices via KQL Queries

Once an attacker has achieved initial access, the most critical task is to detect suspicious lateral-movement activity as early as possible. We create KQL queries to monitor activity on unexpected components of the network - routers, printers, cameras, SmartTVs, Raspberry Pi, etc.

Exploiting CVE-2025-21479 on a Samsung S23

We detail the steps taken to write an exploit for CVE-202-21479, a vulerability in the Samsung S23 GPU microcode allowing privileged commands to be executed from a userspace controlled buffer.

Defeating KASLR by Doing Nothing at All

We demonstrate how Kernel Address Space Layout Randomization (KASLR) can be bypassed on Pixel devices without leaking the KASLR slide, by exploiting predictable behavior in the Linux kernel's linear mapping and physical memory layout.

Drawn to Danger: Windows Graphics Vulnerabilities Lead to Remote Code Execution and Memory Exposure Windows Graphics Vulnerabilities Lead to Remote Code Execution and Memory Exposure

We identified three security vulnerabilities in the Graphics Device Interface (GDI) in Windows: CVE-2025-30388, CVE-2025-53766 and CVE-2025-47984 allowing a remote attacker to perform out-of-bounds read and/or write memory operations, leading to remote code execution or unauthorized disclosure of sensitive information.

Tracking Lateral Movement - Part 1: Named Pipes, Scheduler, Services, Registry, and DCOM

In this article we'll review the common techniques used for lateral movement, what Windows logs to watch for, and practical detective steps you can take right now. In particular we will focus on Named Pipes, Scheduler, Services, Registry, and DCOM (Event IDs).

Methodology of Reversing Vulnerable Killer Drivers

We dive into the process of reversing known vulnerable drivers, exploring how to dissect their inner workings, uncovering their flaws, and understanding the exploit paths they enable. We’ll walk through identifying attack surfaces, tracing IOCTL handlers, and examining vulnerable code paths that attackers can abuse.

Uncovering Qilin attack methods exposed through multiple cases

We investigated the Qilin ransomware, uncovering its use of legitimate tools for credential theft and data exfiltration, and sophisticated methods for lateral movement, evasion, and persistence.

Still Recent

Don't Leave Me Outdated!

This writeup examines security exploits affecting Android 13 and earlier (CVE-2025-48464), which enables arbitrary file exfiltration via a malicious Intent-scheme URL.

Bypassing WiFi Client Isolation

Client isolation prevents devices on the same WiFi network from communicating directly. However, I've developed a Python-based tool that bypasses WiFi client isolation by intercepting and manipulating WiFi frames. It proved to be efficient on open and WPA2-PSK networks.

CodeQL zero to hero - Part 5: Debugging queries

CodeQL offers a variety of built-in features to help you diagnose and resolve issues in your queries. In this last part of the series, we'll dig into these features - from an abstract syntax tree (AST) to partial path graphs - using questions from CodeQL users as examples.

Oldies but Goodies

Unlocking the Heaven's Gate Technique on Linux

We detail how attackers may evade user-mode Linux security instrumentation by directly invoking 32-bit and 64-bit syscall interfaces.

Breaking Docker’s Isolation Using... Docker? (CVE-2025-9074)

This blog post is about analysing and testing the CVE-2025-9074 vulnerability, a critical vulnerability allowing an attacker to break out of a docker container on Docker Desktop, the Windows and MacOS version of Docker.

CodeQL zero to hero - Part 3: Security research with CodeQL

In this third part of the series, we will dig deeper about CodeQL and talk about variant analysis, writing a taint tracking query and various techniques for doing security research with CodeQL.

Accidentally uncovering a seven years old vulnerability in the Linux kernel

We uncovered CVE-2024-36904, a use-after-free vulnerability in the TCP subsystem of the Linux kernel, introduced 7 years ago. The root cause is a race condition where a time-wait socket’s reference counter is initialized after being inserted into a hash table. If accessed before initialization, the reference counter is zero, triggering warnings and potentially leading to a real use-after-free.

Sniffing established BLE connections with HackRF One

This blog post describes a methodology to sniff BLE communications using a relatively inexpensive SDR such as the HackRF One. We will learn BLE/SDR basics and how we overcame the three main challenges we encountered.

Bypassing static analysis - Deep Dive

In this blog, I'll walk you through the core concepts of static analysis used by AV and EDR products to inspect files written to disk. I'll also demonstrate various techniques you can use to craft payloads that evade detection during this scanning phase.

Understanding the Function Call Stack

Using Native APIs instead of Win32 APIs is a common mechanism to evade naive detections that assume every application will use the Win32 API function. In this blog I go through the internals of the system and explain why that approach works.

Unearthed Arcana

Detecting Hypervisor-assisted Hooking

I recently started to experiment with hypervisors and their use for bypassing anti-cheat or anti-tampering systems. This post will describe the concept of hypervisor-assisted hooking and a few simple approaches to detect such hooks.

CodeQL zero to hero - Part 2: Getting started with CodeQL

CodeQL is a static analysis tool that can be used to automatically scan your applications for vulnerabilities and to assist with a manual code review. In this blog, we will look closer at CodeQL and how to write CodeQL queries. In particular, we will see how to leverage GitHub's static analysis tool CodeQL to write custom CodeQL queries.