Researcher Publishes GitLab RCE PoC Letting Authenticated Users Run Commands as Git
A security researcher has published a working proof-of-concept (PoC) exploit that executes commands as git on an unpatched self-managed GitLab 18.11.3 server. The exploit is build-specific to GitLab 18.11.3 on x86-64 and affects broader releases.
Intelligence analysis by Llama

A security researcher has published a working proof-of-concept (PoC) exploit that executes commands as git on an unpatched self-managed GitLab 18.11.3 server. The exploit is build-specific to GitLab 18.11.3 on x86-64 and affects broader releases. The affected ranges are GitLab Community Edition (CE) and Enterprise Edition (EE) 15.2.0 through 18.10.7, 18.11.0 through 18.11.4, and 19.0.…
Imagine you have a special tool that can read and write files on a computer. If someone can trick the tool into doing something it shouldn't, they might be able to run commands as the tool's owner. This is what happened with GitLab, a tool used by developers to manage their projects. A security researcher found a way to trick GitLab into running commands as the tool's owner, which could be bad if the tool has access to sensitive information.
Analysis
A $60B Vote of Confidence
The researcher's proof-of-concept exploit targets a vulnerability in the Oj JSON parser, which is used by GitLab to render Jupyter notebooks. The exploit corrupts the callback pointer and causes Oj to pass a forged interior pointer to realloc(). A later Ruby Array allocation reclaims the same 3,584-byte jemalloc region and overwrites p->start. Oj allocates a 65,565-byte object key, truncates its length to 29 in a signed 16-bit field, and returns 29 bytes containing the live key-allocation pointer. GitLab carries that pointer into the rendered notebook diff, giving the exploit the address leak needed to narrow the ASLR search.
The researchers projected one to two hours across the widest mature-worker range. Two lexically ordered notebook files in one diffs_stream request keep both stages inside the same Puma worker, which reuses the process-global Oj parser. The first file corrupts the callback and raises an error that GitLab catches before continuing the diff. The next parse invokes the overwritten pointer and reaches system() through a build-specific gadget sequence.
Why Cursor?
The exploit is build-specific to GitLab 18.11.3 on x86-64 and affects broader releases. The affected ranges are GitLab Community Edition (CE) and Enterprise Edition (EE) 15.2.0 through 18.10.7, 18.11.0 through 18.11.4, and 19.0.0 through 19.0.1. The first fixed releases are 18.10.8, 18.11.5, and 19.0.2.
The Road Ahead
GitLab has patched the vulnerability, and self-managed operators should move to a supported release containing the fix. Dedicated customers need no action. The researchers reported the Oj bugs on May 21, and the maintainer merged the fixes on May 27. Oj 3.17.3 shipped on June 4. The researchers reported the GitLab chain on June 5; depthfirst said GitLab confirmed it on June 8. GitLab released the fixed versions on June 10 and resolved the report on July 17, according to depthfirst.
Key points
- A security researcher has published a working proof-of-concept (PoC) exploit that executes commands as git on an unpatched self-managed GitLab 18.11.3 server.
- The exploit is build-specific to GitLab 18.11.3 on x86-64 and affects broader releases.
- The affected ranges are GitLab Community Edition (CE) and Enterprise Edition (EE) 15.2.0 through 18.10.7, 18.11.0 through 18.11.4, and 19.0.0 through 19.0.1.
- The first fixed releases are 18.10.8, 18.11.5, and 19.0.2.
If this vulnerability is patched quickly, it could prevent a potential security breach. Additionally, the fact that the researchers were able to find and report the vulnerability in a timely manner suggests that the security community is proactive and effective in identifying and addressing potential threats.
If the vulnerability is not patched quickly, it could lead to a security breach, potentially resulting in the theft of sensitive information or the disruption of critical systems. Additionally, the fact that the exploit was able to run as the tool's owner suggests that the vulnerability may be more severe than initially thought.



