CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-G27R-R6PH-VF5R

GHSA-G27R-R6PH-VF5R: Authentication Bypass via Policy Hash Truncation in sequoia-git

Alon Barad
Alon Barad
Software Engineer

May 4, 2026·7 min read·8 visits

Executive Summary (TL;DR)

sequoia-git versions prior to 0.6.0 fail to properly enforce OpenPGP key revocations due to a cache collision bug triggered by a zero-byte policy hash. This allows attackers with compromised but revoked keys to sign valid commits if a maintainer merges a malicious policy update.

A logic error in the caching mechanism of the sequoia-git library prior to version 0.6.0 results in the improper processing of OpenPGP hard revocations. A truncation bug during policy hash calculation creates cache collisions, allowing an attacker with a revoked key to bypass commit authentication if they can trick a maintainer into accepting a specific policy modification.

Vulnerability Overview

The sequoia-git library and its corresponding sq-git command-line tool provide OpenPGP-based commit authentication for Git repositories. These tools evaluate cryptographic signatures against a project-defined security policy to establish the authenticity and integrity of the commit history. Vulnerability GHSA-G27R-R6PH-VF5R affects all versions of sequoia-git prior to 0.6.0.

The vulnerability exists within the performance optimization routines responsible for caching policy evaluation results. To reduce the computational overhead of repeatedly parsing and validating OpenPGP policies during repository traversal, sq-git implements a key-value caching mechanism. This cache keys previously evaluated policy states using a cryptographic hash of the policy contents.

A logic flaw in the hash generation implementation causes the policy hash to be truncated to zero bytes. This truncation fundamentally breaks the caching architecture by destroying cache key uniqueness. Consequently, the tool fails to accurately track policy state changes across the commit history, specifically failing to carry forward hard revocations of compromised cryptographic keys.

The resulting security impact allows an attacker to bypass commit authentication mechanisms under specific conditions. If an attacker successfully introduces a commit that temporarily strips a hard revocation from the policy file, the caching bug causes sq-git to permanently drop the historical revocation state. Subsequent commits signed with the compromised key will pass authentication checks.

Root Cause Analysis

The root cause of RUSTSEC-2026-0109 is a software defect in the generation of cache keys for OpenPGP policy objects. The sequoia-git library attempts to hash the contents of the active signing policy to uniquely identify the policy state at any given point in the Git history. This hash acts as the lookup index for the evaluation cache.

During the execution of the hashing routine, a logic error prevents the calculated digest from being properly written to the output buffer. The implementation yields an empty, zero-byte array instead of a valid cryptographic hash. Because the output is consistently empty regardless of the input policy data, every distinct policy state generates the exact same cache key.

This uniform key generation results in deterministic cache collisions during repository processing. When sq-git evaluates a new commit, it computes the zero-byte hash for the current policy and queries the cache. The tool invariably retrieves a mismatched, previously cached policy state or incorrectly matches an empty initialization state.

Because the tool relies on the retrieved cache object to enforce cryptographic constraints, it loses visibility into cumulative policy changes. Specifically, the tool evaluates hard revocations only against the immediate target commit rather than applying the persistent revocation state accumulated throughout the repository history. The zero-byte collision effectively blinds the tool to historical key revocations.

Code Analysis

The vulnerable code path involves the sq-git subsystem responsible for ingesting OpenPGP policy files and indexing them for performance optimization. Prior to version 0.6.0, the hashing function initialized a buffer but failed to properly populate it with the computed digest of the policy structure. The function returned a zero-length byte slice to the cache manager.

The fix, implemented in commit f9c9074bd80023456221f09c3c4ff19957ee9c58, corrects the buffer handling logic within the hashing routine. The patched code ensures that the complete, variable-length cryptographic digest is written to the buffer and accurately returned to the calling function. This restores the one-to-one mapping between policy states and cache keys.

By enforcing accurate hash calculation, the patch eliminates the cache collisions that caused the vulnerability. When a project policy is updated to include a hard revocation, the resulting hash correctly reflects the new state. The caching mechanism can successfully differentiate between the pre-revocation and post-revocation policy objects during repository traversal.

The remediation strategy addresses the root cause comprehensively without requiring architectural changes to the caching system itself. The patch data confirms that the vulnerability was strictly an implementation defect in the hashing utility rather than a fundamental design flaw in the OpenPGP evaluation logic.

Exploitation Methodology

Exploiting this vulnerability requires an attacker to possess a compromised OpenPGP key that the project administrators have already formally revoked. The target repository must actively utilize sequoia-git for commit signature verification. The attacker must also possess the capability to submit code changes to the repository, typically via a pull request or merge request workflow.

The attack sequence initiates with the attacker crafting a malicious commit using the compromised key. Within this commit, the attacker deliberately modifies the project's signature policy configuration file. The modification specifically removes the hard revocation entry corresponding to the compromised key, effectively attempting to reinstate the key's authorization.

The attacker must then rely on social engineering or procedural oversight to trick a repository maintainer into approving and merging the malicious request. The vulnerability cannot be exploited autonomously; it strictly requires active user interaction from a privileged maintainer. Once the maintainer merges the policy modification, the repository baseline is updated.

Due to the zero-byte hash collision bug, sq-git fails to properly evaluate the policy downgrade against the historical repository state. The caching subsystem incorrectly validates the current, compromised policy state. Consequently, the attacker can submit subsequent commits signed with the revoked key, and the automated signature checks will pass without raising an alert.

Impact Assessment

The fundamental impact of this vulnerability is the potential circumvention of cryptographic authentication controls within Git repositories. An attacker can successfully forge commit signatures using a revoked key, allowing them to inject unauthorized code into a protected codebase. This compromises the integrity guarantees provided by repository signature enforcement.

Despite the severity of the theoretical impact, the vulnerability is classified with a Low severity rating, carrying a CVSS v4.0 score of 1.8. The exploitability is severely constrained by the prerequisites and attack requirements. The attacker must already possess a previously trusted key and must successfully execute a social engineering attack against a project maintainer.

The requirement for High Privileges (a known, albeit revoked, key) and Active User Interaction (maintainer approval) mitigates the risk of widespread, automated exploitation. The vulnerability cannot be weaponized into a mass-exploitation tool or wormable payload. It requires targeted, manual execution tailored to a specific repository and its maintainers.

Organizations relying on sequoia-git for strict compliance or regulatory requirements face the highest risk. In these environments, the assumption of non-repudiation and cryptographic integrity is critical. A successful attack undermines the audit trail and invalidates the core security properties of the version control system.

Remediation and Mitigation

The definitive remediation for GHSA-G27R-R6PH-VF5R is upgrading the sequoia-git library and the associated sq-git binary to version 0.6.0 or later. This release contains the corrected hashing implementation and fully resolves the cache collision vulnerability. All downstream projects and deployment pipelines utilizing the library must be recompiled and deployed with the patched version.

Repository administrators should implement procedural mitigations to detect and prevent exploitation attempts during the patching window. Maintainers must establish stringent review requirements for any modifications targeting OpenPGP policy files or related configurations. Changes to policy definitions should mandate multiple independent approvals and out-of-band verification.

Development teams should actively audit their repository histories for unauthorized policy modifications. Specifically, security engineers should search for commits that remove hard revocations or unexpectedly alter the authorized key lists. Identifying such commits may indicate a historical compromise or an ongoing exploitation attempt.

Furthermore, organizations should consider implementing automated checks within their continuous integration pipelines to monitor policy file integrity. Rejecting any unapproved modifications to security policies at the pipeline level provides a defense-in-depth measure against both malicious exploitation and accidental misconfiguration.

Official Patches

GitLab (sequoia-pgp)Fix commit implementing correct hash population

Fix Analysis (1)

Technical Appendix

CVSS Score
1.8/ 10
CVSS:4.0/AV:N/AC:H/AT:P/PR:H/UI:A/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Affected Systems

sequoia-git library (crates.io)sq-git command-line tool

Affected Versions Detail

Product
Affected Versions
Fixed Version
sequoia-git
sequoia-pgp
< 0.6.00.6.0
AttributeDetail
Vulnerability TypeImproper Verification of Cryptographic Signature
CWE IDCWE-347
CVSS v4.0 Score1.8 (Low)
Attack VectorNetwork
Privileges RequiredHigh (Compromised authorized key)
User InteractionRequired (Maintainer merge)
Affected Versions< 0.6.0
Exploit StatusNone known

MITRE ATT&CK Mapping

T1556Modify Authentication Process
Credential Access
T1195.001Supply Chain Compromise: Compromise Software Dependencies and Development Tools
Initial Access
CWE-347
Improper Verification of Cryptographic Signature

The software does not adequately verify the cryptographic signature of data, which can lead to spoofing or circumvention of authenticity checks.

Vulnerability Timeline

Vulnerability reported by Hassan Sheet and published to OSV/RustSec
2026-04-21
Official RustSec advisory RUSTSEC-2026-0109 issued
2026-04-24
Fixed version 0.6.0 released
2026-04-24

References & Sources

  • [1]GitHub Advisory: GHSA-G27R-R6PH-VF5R
  • [2]RustSec Advisory: RUSTSEC-2026-0109
  • [3]OSV Vulnerability Data: RUSTSEC-2026-0109
  • [4]Fix Commit in GitLab

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•1 day ago•GHSA-H5X8-XP6M-X6Q4
7.1

GHSA-H5X8-XP6M-X6Q4: Unvalidated Signature Generation in @jhb.software/payload-cloudinary-plugin

The @jhb.software/payload-cloudinary-plugin exposes an endpoint that performs unvalidated cryptographic signing of Cloudinary API parameters, allowing authenticated users with minimal privileges to forge valid signatures for arbitrary actions. This flaw allows attackers to overwrite remote storage assets, execute unauthorized file uploads, alter asset visibility parameters, trigger SSRF webhooks, and perform directory traversal within Cloudinary repositories.

Alon Barad
Alon Barad
3 views•6 min read
•1 day ago•GHSA-G2GW-Q38M-VJFC
8.7

GHSA-G2GW-Q38M-VJFC: Server-Side Request Forgery and Bearer Token Exfiltration in @merill/lokka

A Server-Side Request Forgery (SSRF) and Bearer Token Exfiltration vulnerability exists in the @merill/lokka (Lokka) Model Context Protocol (MCP) server prior to version 2.1.2. The server constructed Azure Resource Manager request URLs by concatenating user-controlled path parameters directly into destination request strings. By injecting authority-redefinition characters, an attacker can manipulate URL parsing to execute a host-escape attack, forcing the server to send high-privilege Azure Resource Manager (ARM) Bearer tokens to an external attacker-controlled host. This allows complete administrative access to the associated Azure subscriptions.

Alon Barad
Alon Barad
6 views•7 min read
•1 day ago•GHSA-4XGF-CPJX-PC3J
5.3

GHSA-4xgf-cpjx-pc3j: Directory Traversal and Symlink Following in Pydantic Settings

A directory traversal and symlink following vulnerability exists in Pydantic Settings when using the NestedSecretsSettingsSource with nested subdirectory lookups enabled. An attacker capable of writing to the secrets directory can bypass size limitations, read arbitrary host files, or cause a denial-of-service condition via cyclic symlinks.

Amit Schendel
Amit Schendel
2 views•7 min read
•1 day ago•GHSA-H5RG-8P7F-47G2
4.1

GHSA-h5rg-8p7f-47g2: Server-Side Request Forgery (SSRF) in SurrealDB Identity & Access Management (IAM) JWKS Fetcher

A Server-Side Request Forgery (SSRF) vulnerability exists in SurrealDB's Identity & Access Management (IAM) module prior to version 3.1.5. When configuring JSON Web Key Set (JWKS) URLs for token verification, the remote fetcher follows HTTP redirects by default without validating redirect targets against configured network capabilities. This allows high-privileged users to bypass network access limits and perform blind port scanning of internal network resources.

Amit Schendel
Amit Schendel
4 views•6 min read
•1 day ago•GHSA-CC8F-FCX3-GPJR
7.7

GHSA-cc8f-fcx3-gpjr: Arbitrary File Disclosure via DEFINE ANALYZER mapper filter in SurrealDB

A local file disclosure vulnerability exists in SurrealDB's full-text search capabilities, allowing authenticated users with database EDITOR or OWNER roles to read arbitrary files from the host system filesystem. This occurs by abusing the mapper() filter inside a DEFINE ANALYZER statement to point to system files.

Alon Barad
Alon Barad
6 views•6 min read
•1 day ago•GHSA-H4H3-3RFJ-X6FQ
4.3

GHSA-H4H3-3RFJ-X6FQ: Value-Ordering Oracle Side-Channel via Indexed ORDER BY in SurrealDB

SurrealDB versions 3.0.0 through 3.1.4 contain an information exposure vulnerability (CWE-203) where the query planner optimizes sorted queries using indexes on fields with field-level SELECT restrictions. Because the query planner performs index-based sorting before enforcing permission-based redaction, unauthorized users can observe the physical order of returned rows to deduce the relative values of protected fields.

Alon Barad
Alon Barad
4 views•8 min read