Conversation
The /api/v1/projects/{project}/detailed endpoint returns plaintext
repository credentials to any caller holding `projects, get`, bypassing
the per-repository RBAC enforced on /api/v1/repositories. The lab ships
Argo CD v2.14.15 with a low-privilege project token to demonstrate the
asymmetry.
The previous commit added `!argocd/` and `!base/argocd/` to .gitignore to defeat a personal global '*' rule on the contributor's machine. That workaround is local-environment-specific and shouldn't ship in the repo; the argocd files are already tracked so removing the overrides has no effect on tracking.
Inserts a screenshot of the Argo CD sign-in page as 1.png to anchor the beginning of the UI walkthrough, shifting the existing Repositories list and project Roles screenshots to 2.png and 3.png. Also shows the admin-password command's sample output so readers know what the auto-generated 16-character random string looks like.
The shipped manifest argocd-install-v2.14.15.yaml was 26165 lines, of which 90% (23551 lines) was OpenAPI schema for Argo CD's three CRDs (Application, ApplicationSet, AppProject). That bulk made the contribution hard to review. Drop the bundled file and have bootstrap.sh apply the manifest from raw.githubusercontent.com/argoproj/argo-cd/v2.14.15/manifests/install.yaml at first-container-start. Verified end-to-end: bootstrap completes in ~80 s and the CVE-2025-55190 reproduction still leaks the helm-repo credentials through /api/v1/projects/myproject/detailed while the proper /api/v1/repositories endpoint correctly returns an empty list for the same low-privilege token.
A user with only `projects, get` is the CVE's minimum attacker per GHSA-786q-9hcg-v9ff; centering the demo on it (instead of a token read from /etc/) makes the privilege escalation land.
Cut from 3 repos to 2 (helm + git PAT), removed UI perspective 3 section, compressed Environment Setup, added language tags and inline comments to the shell snippets, and trimmed surrounding prose. Lab demo is unchanged.
1.png was 2.8 MB; resized to 1600 px wide and re-encoded to 470 KB to match the size profile of the other two screenshots.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Add reproduction environment for CVE-2025-55190
ArgoCD's
/api/v1/projects/{project}/detailedendpoint returns repository credentials (username, password, SSH key) in plaintext to any caller holdingprojects, geton the project, bypassing the standardrepositories, getpermission check.Severity
Affected Versions
>= 2.2.0-rc1(vulnerable since the endpoint was introduced)This lab ships ArgoCD v2.14.15 (last unpatched release on the v2.14 line).
Usage
Reproduction details and credentials in argocd/CVE-2025-55190/README.md.
References