GitLab RCE PoC lands 6 weeks after a fix labeled a bug
A working GitLab RCE exploit lets any user who can push run commands as git. The fix shipped in June — filed as a bug, not a security advisory. Patch to 18.11.5 or 19.0.2.
Your patch process almost certainly keys off the vendor's security advisory table. That's the failure mode here. GitLab shipped a fix on June 10 that it classified as a bug, so it never appeared in the security release notes — and on July 24 a researcher published a working GitLab RCE exploit for the versions that fix covers. If you run self-hosted GitLab and you only patch when the advisory says "security," you've been sitting on this for six weeks.
What actually happened
Yuhang Wu at depthfirst published a proof-of-concept that executes commands as the git user on an unpatched self-managed GitLab 18.11.3 server, as reported by The Hacker News on July 25. The path in is unglamorous, which is what makes it bad: an ordinary authenticated user commits two crafted Jupyter notebooks and asks for the diff.
GitLab's notebook renderer — an in-tree gem called ipynbdiff — hands repository-controlled .ipynb JSON to Oj::Parser, and two memory-corruption bugs in Oj (a Ruby JSON parser written largely in native C) make the chain work. The first notebook leaks a heap pointer through the commit diff; repeat it and an automated probe locates the libraries in memory; the second corrupts the parser into running commands. No admin rights. No CI runner access. No access to anyone else's project. No victim interaction.
Affected ranges are CE and EE 15.2.0–18.10.7, 18.11.0–18.11.4, and 19.0.0–19.0.1. First fixed releases: 18.10.8, 18.11.5, 19.0.2, all from June 10. The Oj bugs themselves were reported May 21 and patched May 27. There is no CVE assigned, which is the other half of why this slipped past people — if your tooling watches CVE feeds, there was nothing to watch.
Why this matters for your business
Self-hosted GitLab is one of the highest-value boxes a small company owns. It holds every repo, every deploy key, every CI secret. Running commands as git there is functionally the same as owning your production pipeline. And the entry requirement — "can push to a project" — includes every contractor, every intern, and anyone who has ever compromised one developer's credentials.
The operational lesson is broader than GitLab. Vendor severity labels are a vendor's risk model, not yours. A parser bug that reads as a stability nit inside a large engineering org reads very differently when the affected box is the single system holding all of your source code. We've watched teams build careful patch discipline that is nonetheless load-bearing on someone else's triage decision, and this is what that costs.
Two concrete changes. First, for the handful of systems where compromise means game over — your Git host, your CI, your identity provider — track upstream releases, not just security advisories. Patch minor versions on a schedule regardless of label. Second, check who can actually push. Most self-hosted GitLab instances we look at have a dozen accounts with more access than anyone remembers granting.
If you're behind: update to 18.10.8, 18.11.5, or 19.0.2, then review your instance's audit events for unexpected .ipynb commits and diff requests.
Key takeaways
- A working GitLab RCE PoC published July 24 runs commands as
gitfor any authenticated user who can push to a project - The chain abuses GitLab's Jupyter notebook diff renderer feeding repo-controlled JSON to two memory-corruption bugs in the Oj Ruby parser
- Fixed June 10 in 18.10.8, 18.11.5, and 19.0.2 — but classified as a bug, not a security release, and no CVE was assigned
- Affected: CE/EE 15.2.0–18.10.7, 18.11.0–18.11.4, 19.0.0–19.0.1 — a range going back years
- For crown-jewel systems, track upstream releases rather than relying on the vendor's security-advisory table to tell you when to patch
Running your own GitLab, CI, or identity server? We put update cadence, access review, and audit logging on a schedule that doesn't depend on someone else labeling a fix correctly. See how we manage self-hosted infrastructure or get your instance reviewed.
Sources: The Hacker News, GitLab releases.
- #gitlab
- #rce
- #patching
- #self-hosted
- #security
Tommy Rush — Founder, Rush Commerce
Operator turned builder. 15+ years running operations — now shipping the systems businesses run on. More
Get The Rush Report weekly — one email, zero fluff.
Keep reading
Cursor's ₹649 India tier: dev seats go geographic
Cursor launched a ₹649/month India-only plan, roughly a third of its $20 Pro tier. AI dev tool pricing is now segmented by market, and that changes your budget math.
Read itvBulletin RCE exploit went public: get to 6.2.2 today
A working exploit for vBulletin CVE-2026-61511 dropped four weeks after the patch. Unauthenticated remote code execution, no in-the-wild reports yet. That window closes fast.
Read it