VYPR
Unrated severityNVD Advisory· Published Jun 18, 2026

conda-smithy vulnerable to misrouted repository invitation by conda-forge-webservices[bot] due to GitHub username takeover leading to unintended write access in conda-forge feedstock repository

CVE-2026-46699

Description

conda-smithy is a tool for combining a conda recipe with configurations to build using freely hosted CI services into a single repository. Prior to version 3.61.0, a vulnerability in the conda-forge automated webservices allowed unintended write access to feedstock repositories through GitHub username takeover. The root cause is the use of mutable GitHub usernames as identifiers for repository invitation routing, rather than stable, immutable GitHub user IDs. Version 3.61.0 fixes the issue.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Affected products

2

Patches

Vulnerability mechanics

Root cause

"Use of mutable GitHub usernames as identifiers for repository invitation routing instead of stable, immutable GitHub user IDs."

Attack vector

An attacker monitors GitHub for usernames that have been freed (e.g., after a maintainer changes their username) and that still have pending conda-forge repository invitations. By registering the freed username, the attacker becomes the recipient of any future invitations tied to that old username. Accepting the invitation grants unintended write access to the associated feedstock repository, enabling supply-chain compromise [ref_id=2]. The root cause is the use of mutable GitHub usernames as identifiers instead of immutable GitHub user IDs [CWE-287].

Affected code

The vulnerability resides in the `configure_github_team` function within `conda-smithy`. The original code routed repository invitations and team membership based on GitHub usernames (mutable strings) rather than immutable GitHub user IDs. The patch introduces a durable mapping file (`.recipe_maintainers.json`) and checks that a username's current GitHub user ID matches the previously recorded ID before granting access [ref_id=1][ref_id=2].

What the fix does

The patch introduces a durable mapping file (`.recipe_maintainers.json`) stored in each feedstock repository that records the GitHub user ID associated with each maintainer username. Before adding a new maintainer to the GitHub team, the code now fetches the current user ID for that username and compares it against the previously recorded ID. If the IDs do not match, the user is not added, preventing a new registrant of a recycled username from gaining access. The same ID check is used when removing maintainers, ensuring that legitimate username changes are not treated as removals [ref_id=1].

Preconditions

  • configA conda-forge maintainer must have changed their GitHub username, freeing the old username.
  • inputThe freed username must still have a pending repository invitation or be listed as a maintainer in a feedstock recipe.
  • authAn attacker must register the freed GitHub username before the legitimate maintainer updates the recipe.

Generated on Jun 19, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

2

News mentions

0

No linked articles in our index yet.