Skip to main content

Gitingest CVE-2026-110767

| EUVDEUVD-2026-101567 HIGH
Improper Link Resolution Before File Access (CWE-59)
2026-10-14 disclosure@vulncheck.com GHSA-cgrx-q63r-jf38
8.7
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Commit symlink to public repository
  2. Delivery
    Submit crafted blob URL to Gitingest
  3. Exploit
    Server follows symlink in blob ingestion
  4. Execution
    Reads arbitrary file as service user
  5. Impact
    Exfiltrate sensitive server file contents

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Symlink resolution safety
Exploitation Conditions

The target Gitingest instance (version ≤0.3.1) must be network-reachable and must accept attacker-supplied repository/blob URLs for ingestion - which is the default operating mode of both the hosted service and self-hosted deployments. The specific trigger is the single-file blob ingestion path in ingest_query, which follows a symbolic link committed to a public repository rather than restricting reads to in-repo content. No authentication, credentials, or user interaction are required (PR:N/UI:N). Limiting factors: disclosure is bounded to files the service account can read and capped at 10 MB per request, exploitation requires the attacker to host the malicious symlink in a reachable public repo, and risk is confined to instances exposed to untrusted submitters - an internal-only instance behind access controls is far less exposed.

Impact

This is a credible, actionable priority rather than a high-CVSS paper tiger. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes network-reachable, low-complexity, fully unauthenticated exploitation with no user interaction, and the impact profile (VC:H, VI:N, VA:N) correctly reflects a pure confidentiality/arbitrary-file-read flaw (CWE-59 symlink following) with no integrity or availability impact. The signals are internally consistent: the description matches the vector - any anonymous user who can submit a repository blob URL to a Gitingest instance can read files the service account can access (up to 10 MB). No conflict exists between the vector and the description. The limiting factor on real-world blast radius is exposure: the risk is acute for the public hosted service and any internet-reachable self-hosted instance, but low for instances not exposed to untrusted submitters. Missing/absent signals should temper urgency ranking: there is no EPSS score, no CISA KEV listing, and no explicit POC flag in the input, so 'actively exploited' cannot be asserted. However, a detailed public technical writeup (hackmd) and a VulnCheck advisory exist, meaning the exploitation technique is fully disclosed and low-effort to reproduce - treat weaponization as imminent even though active exploitation is unconfirmed.

Exploit ScenarioDerived

An attacker creates or forks a public Git repository and commits a symbolic link pointing to a sensitive server path (e.g., /etc/passwd, application config, or cloud credential files). They then submit the blob URL of that symlink to an exposed Gitingest instance; the single-file blob ingestion path in ingest_query follows the link and returns the target file's contents. Because the CVSS vector is AV:N/AC:L/PR:N/UI:N, this requires no authentication, no user interaction, and only a single crafted request against a default-reachable instance; a public technical writeup detailing the method already exists.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 14, 2026

Unauthenticated arbitrary file read in Gitingest 0.3.1 and earlier allows remote attackers to retrieve any file readable by the service account, in chunks capped at 10 MB per request, by committing a symbolic link into a public repository and submitting that symlink's blob URL to the single-file ingestion path in ingest_query. The server resolves the link and returns the target file's contents instead of confining reads to in-repo content, so a network-reachable instance that accepts untrusted repository or blob URLs - the default mode for both the hosted service and self-hosted deployments - is directly exposed with no credentials or user interaction required. There is no CISA KEV listing and no public exploit identified at time of analysis, though a public technical writeup describing the symlink technique accompanies the VulnCheck advisory; impact is bounded by the service account's file permissions and the 10 MB per-request cap.

RemediationAI

No vendor-released patch was identified in the available data at time of analysis, so the primary action is to upgrade Gitingest beyond 0.3.1 as soon as an upstream fix is published and to track the repository at https://github.com/coderamp-labs/gitingest plus the advisory at https://www.vulncheck.com/advisories/gitingest-through-0.3.1-arbitrary-file-read-via-symlink-in-blob-ingestion for a fixed release; the public writeup at https://hackmd.io/@hieuPenguinnn/gitingest-blob-symlink-arbitrary-file-read documents the exact trigger for verification. Until a fix lands, the most effective compensating control is to disable or block the single-file blob ingestion path in ingest_query so only full-repository ingestion is accepted - this closes the symlink vector entirely, at the cost of losing a convenience feature and requiring a code-level change that must be re-applied after upgrades. If blob ingestion must stay enabled, reject symlink entries before reading by checking git mode 120000 / lstat and refusing anything that is not a regular file resolved within the cloned repository root (opening with O_NOFOLLOW where feasible); the trade-off is that legitimate repositories containing symlinks will fail to ingest and the check must be comprehensive to avoid bypasses via nested or relative links. Run the service under a dedicated, unprivileged account inside a container or sandbox with a read-only root filesystem and no mounts exposing host secrets, environment files, or cloud credentials, which limits disclosure to the container's own contents; note this constrains but does not eliminate the leak, since application secrets still live in the service's namespace. Finally, place any instance behind authentication, rate limiting, and network access controls so untrusted submitters cannot reach the ingestion endpoint at all - the most reliable mitigation for deployments that do not need public input, though it is not viable for the public hosted service.

Affected VersionsENISA

gitingest 0 ≤0.3.1

Affected Packages

euvd gitingest no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Gitingest ingests Git repositories and individual blobs and returns their text content for downstream consumption (for example, building LLM prompts). CVE-2026-110767 is an instance of CWE-59, Improper Link Resolution Before File Access ('Link Following'), located in the single-file blob ingestion logic of ingest_query, referenced at line 75 of src/gitingest/ingestion.py. Git stores a symbolic link as a blob whose content is simply the link target path, and the vulnerable code path reads and returns the blob's resolved filesystem content rather than validating that the source is a regular in-repo file. Because the attacker controls the repository content, they control the symlink target, so the service opens whatever path the symlink names - including absolute paths such as /etc/passwd or the application's own configuration and environment files - as long as the Gitingest process user can read it. No CPE mapping was supplied in the source data; the only authoritative product identification is EUVD's affected range 'gitingest 0 ≤ 0.3.1' and the upstream repository coderamp-labs/gitingest. The assessed CVSS:3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N confirms a remote, unauthenticated, confidentiality-only impact with no integrity or availability effect, consistent with the CWE-59 information-disclosure classification.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (vulncheck) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Unauthenticated network request against default config (PR:N/AC:L), attacker controls the submitted repo; pure arbitrary file read gives C:H with no integrity or availability impact and no scope change.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Gitingest through 0.3.1 contains a symlink following vulnerability in ingest_query single-file blob ingestion that allows unauthenticated attackers to read server files by submitting symlink blob URLs. Attackers can commit a symlink to a public repository and submit its blob URL, causing the server to return any file the service user can read, up to 10 MB.

Executive ViewAI

Why It Matters

Gitingest 0.3.1 and earlier - a tool commonly used to turn code repositories into LLM-ready text - can be steered into returning files from outside the repository, exposing any file readable by the account the service runs as, in 10 MB chunks per request. Both the hosted service and self-hosted deployments are exposed in their default configuration, which accepts untrusted repository and blob URLs, and there is no public exploit identified at time of analysis and no vendor-released patch identified at time of analysis, so exposure persists until maintainers ship a fix. Any team running a network-reachable instance should assume its source code, configuration files, and any credentials stored alongside them may be retrievable by an outside party.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: allowlist the repository and blob URLs the service will accept so untrusted input never reaches ingest_query; disable or block the single-file ingestion path where not business-critical; run the service under a dedicated least-privilege account with no access to secrets, tokens, or credential stores; segment the instance away from sensitive internal networks; restrict outbound network access; and monitor for reads outside the repository root or anomalous multi-chunk retrieval patterns.

Threat Intelligence Overview

EPSS Score
0.4%
Top 67% exploitable
Prevalence
Low
niche open-source developer tool for LLM repo ingestion, modest production server footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy