CTIPilot
AI-generated · no human review · verify critical claims against the linked source. how it works →

GitLab CE

product · product:gitlab-ce single-source

Coverage
1
first 2026-07-26 → last 2026-07-26
Latest activity
2026-07-26
Public PoC chains two Oj Ruby-parser bugs to code execution on self-managed GitLab; the fix shipped as an…
Peak priority
notable
1 notable
Targets
technology
sectors: technology
Sources cited
2
2 hosts

Action items (1)

Do-now tasks recorded on the entries about GitLab CE, newest first. Check the date before acting on an older one.

  • Confirm every self-managed GitLab CE/EE instance is on 18.10.8 / 18.11.5 / 19.0.2 or later (Oj ≥ 3.17.3); the fix was not in GitLab's security-fix table, so a version check is the only reliable signal; upgrade any instance in 15.2.0–18.10.7 / 18.11.0–18.11.4 / 19.0.0–19.0.1.
    2026-07-26Public PoC chains two Oj Ruby-parser bugs to code…

Defender insights

What each entry about GitLab CE tells a defender to do, newest first.

2026-07-26NOTABLEPublic PoC chains two Oj Ruby-parser bugs to code execution on self-managed GitLab; the fix shipped as an unlabeled dependency bump

Triage · detection

Story timeline

  1. 2026-07-26GitLab CE/EE RCE via the Jupyter-notebook diff renderer and two ~5-year-old Oj Ruby-parser memory-corruption bugs, public PoC, silent patch, no CVE
    trending-vulnerabilitiesPublic PoC chains two Oj Ruby-parser bugs to code execution on self-managed GitLab; the fix shipped as an unlabeled dependency bump

Hunting pivots

Releases covered
GitLab CE
ATT&CK techniques (1 across 1 tactic)

1 technique observed across 1 entry about this entity, derived from entry metadata and body evidence, never asserted without a published entry behind it · pinned to MITRE ATT&CK v20.0 · compare on the matrix · Navigator layer (JSON)

  • Initial AccessExploit Public-Facing Application

Initial Access TA0001

T1190Exploit Public-Facing Application×1

Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network. The weakness in the system can be a software bug, a temporary glitch, or a misconfiguration.

Evidence: 2026-07-26/gitlab-oj-json-parser-rce-notebook-diff-poc · ATT&CK page ↗

Entries about GitLab CE (1)

2026-07-26 · view entry permalink →

NOTABLENATOC2

GitLab CE/EE RCE via the Jupyter-notebook diff renderer and two ~5-year-old Oj Ruby-parser memory-corruption bugs, public PoC, silent patch, no CVE

depthfirst disclosed (2026-07-24) a remote-code-execution chain against default self-managed GitLab CE/EE, reached through GitLab's in-tree ipynbdiff gem, which calls Oj::Parser.usual.parse (the native-C implementation of the Oj Ruby JSON parser) whenever a commit diff contains a .ipynb (Jupyter notebook) file (depthfirst, 2026-07-24). Two Oj memory-safety bugs that had survived in the parser for nearly five years (introduced 2021-08-08, first shipped in Oj 3.13.0, and reachable in GitLab from 15.2.0 once notebook validation switched to Oj in July 2022) are combined: an unchecked 16-bit key-length narrowing truncates an oversized object key and causes GitLab's notebook-diff output to print a live heap pointer (used to defeat ASLR and locate libc/libruby), and an unchecked nesting-stack overflow in Oj::Parser.usual.parse supplies a write primitive that redirects a parser callback to system(). The whole chain needs no elevated access, in depthfirst's words, "A normal authenticated user able to create or push to a project and view the resulting commit diff could commit an .ipynb file" (depthfirst, 2026-07-24), no admin rights, no CI/runner access, no victim interaction, by committing two crafted notebooks and requesting the commit diff (GET /<project>/-/commit/<sha>/diffs_stream).

The affected range is GitLab CE/EE 15.2.0–18.10.7, 18.11.0–18.11.4 and 19.0.0–19.0.1; GitLab shipped the fixed Oj (3.17.3) in its 10 June 2026 releases 18.10.8, 18.11.5 and 19.0.2 (The Hacker News, 2026-07-25). The operationally important detail is that GitLab did not record the fix in its security-fix table and no CVE was assigned to the GitLab chain, so any operator that tracks GitLab patching against the vendor's security-advisory feed missed it for the 44 days between the silent 10 June bump and the 2026-07-24 PoC publication; GitLab.com and Dedicated instances were already patched, but self-managed operators must act. A separate set of nine Oj advisories (covering the dumper, loader, SAJ callback and document APIs, each with its own CVE) came out of the same depthfirst review and are also fixed in Oj 3.17.3. No in-the-wild exploitation is reported; this is a disclosed researcher PoC.

The resulting chain affected GitLab CE and EE versions 15.2.0 through 18.10.7, 18.11.0 through 18.11.4, and 19.0.0 through 19.0.1.

A normal authenticated user able to create or push to a project and view the resulting commit diff could commit an .ipynb file

depthfirst 2026-07-24
vulnerability26 Jul 04:25Zsingle-sourceOpen finding →

Co-occurring entities

Derived: referenced by the same focused operational entries (weekly summaries and report roundups don't count); ×N counts the shared entries.

Where this entity is cited

  • Vulns1

Source distribution

  • depthfirst.com1 (50%)
  • thehackernews.com1 (50%)