Selected work
- Solana p-token: Catching a Bug Before MainnetA critical bug in Solana’s new token program, found and fixed before mainnet.2026
- Helping Secure BNB Chain Through Responsible DisclosureAn integer overflow in Binance’s BNB Chain that allowed minting unlimited tokens.2023
- Intel TDX security reviewA joint Google and Intel security review of Intel’s confidential computing technology.2023
- Gregor Samsa: Exploiting Java’s XML Signature VerificationCode execution through Java XML signature verification via a bug in Xalan-J’s XSLT compiler.2022
- An EPYC escape: Case-study of a KVM breakoutA guest-to-host KVM escape on AMD EPYC through a double fetch in nested virtualization.2021
- Enter the Vault: Authentication Issues in HashiCorp VaultAuthentication bypasses in HashiCorp Vault’s AWS and GCP integrations.2020
- Xenpwn: Breaking Paravirtualized DevicesFinding double-fetch bugs in Xen’s device backends with a hypervisor-based memory tracer.2016
- Attacking Next-Generation Firewalls: Breaking PAN-OSRemote compromise of Palo Alto firewalls, including an unauthenticated GlobalProtect overflow.2016
Writing & research
- 2026Solana p-token: Catching a Bug Before Mainnet
- 2025Wrong Offset: Bypassing Signature Verification in Relay
- Threat Contained: marginfi Flash Loan Vulnerability
- 2024Ethereum Log Confusion in Polygon’s Heimdall
- 2023Huckleberry: IBC Event Hallucinations
- Election Fraud? Double Voting in Celer’s State Guardian Network
- Intel Trust Domain Extensions (TDX) Security Review
- Stealing Gas: Bypassing Ethermint Ante Handlers
- Helping Secure BNB Chain Through Responsible Disclosure
- 2022Gregor Samsa: Exploiting Java’s XML Signature Verification
- 2021weggli: Fast semantic search for C and C++ codebases
- An EPYC escape: Case-study of a KVM breakout
- 2020Enter the Vault: Authentication Issues in HashiCorp Vault
- 2019Escaping a privileged Docker container or Kubernetes pod via cgroups release_agent
- 2017Behind the Masq: Yet more DNS, and DHCP, vulnerabilities
- 2016mario_baslr: Breaking hypervisor ASLR with branch target buffer collisions
- 2015Xen XSA 155: Double fetches in paravirtualized devices
- Tracing Privileged Memory Accesses to Discover Software Vulnerabilities
- Revisiting Xen’s x86 Emulation: Xen XSA 123
- The Dangers of x86 Emulation: Xen XSA 110 and 105
- 2014How to Own a Router – Fritz!Box AVM Vulnerability Analysis
- 2013Analysis of Rails XML Parameter Parsing Vulnerability
Talks
- 2025
- 2023
- 2018
- 2016
- 2015
Selected vulnerabilities
- 2022crewjam/saml: Signature bypass via multiple Assertion elements
- node-saml: Signature bypass via multiple root elements
- .NET: External entity injection during XML signature verification
- Xalan-J: Integer truncation in XSLTC
- libxml2: Heap buffer overflow in xmlBufAdd
- cmark-gfm: Integer overflow in table extension
- 2021containerd: Insecure handling of image volumes
- runc: Insecure handling of bind mount sources
- KVM: Out-of-bounds read/write in SVM sev_es_string_io
- KVM: Double fetch in nested_svm_vmrun allows unrestricted MSR access
- Package Control: Arbitrary file write on packagecontrol.io
- AWS CloudShell: Terminal escape injection
- 2020F5 BIG-IP: Stack buffer overflow in ASM is_hdr_criteria_matches
- F5 BIG-IP: Info leak and out-of-bounds write in TMM uri_normalize_host
- Node.js: Use-after-free in TLSWrap
- usrsctp: Out-of-bounds access in pending_reply_queue
- usrsctp: Insecure HMAC generation leads to out-of-bounds access
- GitHub Actions: Widespread injection vulnerabilities
- Kubernetes aws-iam-authenticator: Multiple issues
- HashiCorp Vault: Authentication bypass in GCP IAM integration
- HashiCorp Vault: Authentication bypass in AWS IAM integration
- Apache httpd: Concurrent pool usage in HTTP/2 module
- Apache httpd: Incorrect handling of large requests in mod_proxy_uwsgi
- Apache httpd: Memory corruption in HTTP/2 push diary
- HAProxy: Out-of-bounds write in HTTP/2 HPACK dynamic table
- Git: Newline injection in credential helper protocol
- Node.js: TLS session reuse bypasses hostname verification
- 2019KVM: Use-after-free in emulated VMX preemption timer
- KVM: Uninitialized memory leak in kvm_inject_page_fault
- 2018systemd-networkd: Heap overflow in DHCPv6 client
- Linux xen-netback: Integer overflow in xenvif_set_hash_mapping
- KVM: Privilege escalation in L1 guest via nested virtualization
- Red Hat DHCP client: Command injection in NetworkManager hook (DynoRoot)
- ISC DHCP: Buffer overflow in dhclient
- ISC DHCP: Reference count overflow in dhcpd
- 2017dnsmasq: Remote code execution, info leak and DoS via DNS and DHCP
- osquery: SQL injection in ie_extensions
- osquery: safari_extensions uses parent paths for privilege dropping
- osquery: known_hosts does not drop privileges
- Evince: Command injection in comic book (CBT) handler
- 2016Oracle VM VirtualBox: Vulnerability fixed in the October 2016 Critical Patch Update
- PAN-OS: Captive Portal denial of service
- PAN-OS: Cron local privilege escalation
- PAN-OS: User-ID Agent API access
- PAN-OS: Command injection in command line interface
- PAN-OS: Unauthenticated command injection in management web interface
- PAN-OS: Unauthenticated stack exhaustion in GlobalProtect/SSL VPN
- PAN-OS: Unauthenticated buffer overflow in GlobalProtect/SSL VPN
- 2015Xen: Paravirtualized drivers incautious about shared memory contents
- Xen: Hypervisor memory corruption due to x86 emulator flaw
- IBM GPFS: Local privilege escalation to root
- IBM GPFS: Unauthenticated remote code execution as root
- IBM GPFS: Kernel memory corruption via mmfslinux ioctls
- 2013Ruby on Rails: Multiple vulnerabilities in XML parameter parsing
- 2011CakePHP: Remote code execution via unserialize in Security component