From square root to root - escalating privileges in Azure containers with Python in Excel
Where
Main Stage
DEF CON 34
Duration
41 min
Shows how a symlink flaw in the file upload path of Microsoft's Python in Excel containers led to root, and how Excel's trust prompts were bypassed.
Summary
The talk starts from a practical question: Excel's Python feature sends user code to a cloud container, so could that code reach Microsoft-owned servers? The researchers begin with basic reconnaissance from a low-privilege account, then map the helper services around the container and reverse-engineer the API the Excel client uses to submit code.
The central finding is in the file upload flow. The service writes uploaded data as root into paths whose names the client can predict and partly control. By placing a symbolic link at the location used for the ETAG output and hiding a payload in the ETAG value, they overwrote a setuid-related binary that a root-level service runs on a schedule, which gave them root. From there they recovered service binaries and a deployment configuration file that exposed internal component names and architecture, reached container hosts across many regions, and found that some images were publicly pullable, including pilot builds. Microsoft responded by checking for symbolic links in file operations.
On the Excel side, the researchers observed that Python workbooks skip the trusted-records prompt that macros trigger. A returned web image object could make the client fetch an arbitrary URL, which could be used to move data back into the isolated container. This led to CVE-2026-45459, covering both the trusted records warning and network isolation. The practical takeaways are to enforce least privilege on anything a service writes as root, and to keep deployment details and skill files off production hosts.
Materials
Related talks
Main Stage·37 min
Daniel Hillel · Noam Trobishi
Shows how a use-after-free in the NVIDIA Linux kernel module lets an unprivileged container user escape to root on the host.
Main Stage·40 min
Alejandro Hernando · Borja Martin
Shows how a USB device, or one forged over RDP, can make Windows Plug and Play run vendor installer code as SYSTEM, using chained low-severity flaws.
Main Stage·21 min
David Rochester · Nicholas Gould
Shows how pulling artifacts from malicious OCI registries can become SSRF, file reads, and container escape in tools like Ollama and Docker Model Runner.


