Process Compose: browser DNS rebinding lets websites control local MCP tools
The process-compose MCP surface lacks Host header validation, so any website a developer visits can reach it via DNS rebinding and drive local process control tools.
$ whoami
$ cat role.txt
Security enthusiast
$ cat focus.txt
I've always been curious about how systems work and what happens when they break. That's what got me into security. These days, I spend my free time solving challenges, doing bug bounty, and digging through source code to see what I can find. Every now and then, that turns into a vulnerability disclosure. Most of the time, it's just a good way to keep learning and getting better.
cat about.md
I work on web security: application and API bugs, authentication logic, and the request-handling code that sits in front of everything else. Lately that has meant the servers AI agents talk to, where the same old mistakes keep showing up in new places.
Most of my published work started the same way. Read how something was built, notice an assumption that does not hold, then check whether it actually matters.
I learned this through CTFs rather than coursework. Several hundred challenges across web exploitation, boot2root machines and crypto, all written up as I went.
cat experience.log
cat education.log
ls -la ./cves
41 published CVEs, disclosed through GitHub Security Advisories. Each entry links to its advisory and the fixed version; technical writeups are added as each disclosure clears.
The process-compose MCP surface lacks Host header validation, so any website a developer visits can reach it via DNS rebinding and drive local process control tools.
The Streamable HTTP transport accepts requests without validating the Host header, letting a malicious page reach the locally-bound MCP server via DNS rebinding.
Unvalidated user-controlled URLs in the GitLab MCP server let an attacker make the host issue requests to arbitrary destinations, reaching internal services.
When no fixed GitLab URL is configured, the legacy HTTP MCP handler takes the GitLab base URL from a caller-supplied GITLAB-URL header, validates only syntax (no private/loopback/link-local/metadata check), and sends GitLab discovery requests with the caller's token to that URL before the token is ever verified, letting any network client force the server to make requests to internal targets.
The MCP SDK's Host-header validation only installs for host=127.0.0.1/localhost/::1 or an explicit allowedHosts list; the project's own Dockerfile/docker-compose.yml runs with host=0.0.0.0 and no allowedHosts, so a DNS-rebound browser can reach the endpoint and invoke deepseek_chat/deepseek_fim under the operator's API key with no credential.
The troth_status/troth_logs/troth_diff/troth_kill/troth_clean MCP tools pass a caller-supplied run_id directly into filesystem paths with no validation, letting a traversal payload escape the runs directory and, via a planted meta.json, delete an arbitrary attacker-chosen directory.
cat bounty.txt
Microsoft Security Response Center (MSRC) vulnerability research. (2027)
Israeli National Cyber Directorate - Vulnerability Disclosure Program (VDP) vulnerability research.
cat publications.bib
Analysis of GraphQL injection vectors: how introspection and resolver mishandling create exploitable paths, the attack chains that follow, and the real-world weaknesses behind them.
Two CVEs in jupyter-mcp-server chain into a zero-click hijack of any live Jupyter notebook connection.
Chaining a filename and a DNS record to take over CircleCI's MCP server.
ls -la ./projects
Research framework for turning MCP DNS rebinding into a live attack lab. Scans local MCP servers from a Chrome extension, drives a real DNS rebinding attack through your own VM and DNS zone, captures the MCP session, and operates it from a token-protected dashboard.
Academic project implementing time side-channel attacks: password-verification timing, defeating artificial random delays with statistics, and ECDSA key extraction. Runs against ESP32 and Arduino hardware, with a written report.
A Docker-based lab for standing up WordPress with arbitrary plugin sets and versions, so vulnerability research can be reproduced locally against a target you control.
Writeups across HackTheBox, TryHackMe, OverTheWire, root-me, webhacking.kr, pwnable.kr and more, published as a Jekyll site with its own search.
A CTF challenge authored during the third year of my BSc, covering network security and exploitation.
Telegram bot that translates and forwards messages between channels.
./contact.sh
Open to vulnerability research roles, collaboration and disclosure coordination.