<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-01T12:55:55.367828+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-87818</id>
    <title>CVE-2026-87818 — GitPython 3.1.59 Local File Content Oracle via --no-index</title>
    <updated>2026-10-01T12:55:55.404903+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> gitpython-developers GitPython</p>
<p>GitPython 3.1.59 fails to restrict the --no-index option in the high-level diff API, allowing attackers to read arbitrary filesystem paths as repository operands. Attackers can combine --no-index with -I/--ignore-matching-lines to create a content-dependent Boolean oracle, repeatedly querying local files to recover single-line secrets through distinguishable success or error responses.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-87818"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-whh4-5q6c-9v3x</id>
    <title>GHSA-whh4-5q6c-9v3x — GitPython: --no-index bypasses diff unsafe-option protections and enables a blind local-file content oracle</title>
    <updated>2026-10-01T12:55:55.405018+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: gitpython</p>
<p>### Summary</p>
<p>GitPython 3.1.59 blocks a previously available local-file read path through unsafe git diff options such as -O/--orderfile.</p>
<p>However, the high-level diff API still permits --no-index with the default allow_unsafe_options=False.</p>
<p>--no-index changes the semantics of the paths arguments: instead of repository-relative pathspecs, Git interprets them as arbitrary filesystem paths.</p>
<p>When combined with the still-allowed -I/--ignore-matching-lines option, this creates a content-dependent Boolean oracle over a caller-selected local file.</p>
<p>This was reproduced against the published GitPython 3.1.59 wheel.</p>
<p>The original unsafe-option path is blocked in 3.1.59, while this alternate path remains reachable without setting allow_unsafe_options=True.</p>
<p>### Details</p>
<p>Confirmed API surface:</p>
<p>repo.index.diff(
    None,
    no_index=True,
    I=pattern,
    paths=[baseline_path, target_path],
    create_patch=True,
)</p>
<p>The relevant behavior is:</p>
<p>1. --no-index makes the two values supplied via paths filesystem operands rather than repository pathspecs.
2. -I/--ignore-matching-lines makes Git's result depend on whether the supplied regular expression matches the relevant file content.
3. GitPython exposes the resulting bit through distinguishable behavior:
   - matching condition: normal return with an empty DiffIndex
   - non-matching condition: GitCommandError with exit status 1</p>
<p>An application that forwards attacker-influenced diff options and paths and exposes the success/error disti…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-whh4-5q6c-9v3x"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/pysec-2026-3983</id>
    <title>PYSEC-2026-3983</title>
    <updated>2026-10-01T12:55:55.405136+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: gitpython</p>
<p>GitPython 3.1.59 fails to restrict the --no-index option in the high-level diff API, allowing attackers to read arbitrary filesystem paths as repository operands. Attackers can combine --no-index with -I/--ignore-matching-lines to create a content-dependent Boolean oracle, repeatedly querying local files to recover single-line secrets through distinguishable success or error responses.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/pysec-2026-3983"/>
  </entry>
</feed>
