🇰🇷 한글 설명
Flux notification-controller의 gcr Receiver가 Google OIDC 토큰의 이메일 클레임을 검증하지 않아, 유효한 Google 토큰 소유자라면 누구나 웹훅 엔드포인트에 인증하여 무단 Flux reconciliation을 트리거할 수 있습니다. 웹훅 URL을 알아야 하며, reconciliation은 멱등성 때문에 실제 영향은 제한적입니다.
💡 쉬운 설명
Flux 알림 시스템이 Google 로그인 토큰의 신원을 제대로 확인하지 않아서, 누구든지 올바른 웹훅 주소를 알면 시스템을 업데이트하도록 명령할 수 있습니다. 다행히 시스템은 중복 요청을 무시하고 실제 변경이 없으면 아무것도 하지 않아서 실제 피해는 제한적입니다.
🇺🇸 원문 (English)
Flux notification-controller is the event forwarder and notification dispatcher for the GitOps Toolkit controllers. Prior to 1.8.3, the gcr Receiver type in Flux notification-controller does not validate the email claim of Google OIDC tokens used for Pub/Sub push authentication. This allows any valid Google-issued token, to authenticate against the Receiver webhook endpoint, triggering unauthorized Flux reconciliations. Exploitation requires the attacker to know the Receiver's webhook URL. The webhook path is generated as /hook/sha256sum(token+name+namespace), where the token is a random string stored in a Kubernetes Secret. There is no API or endpoint that enumerates webhook URLs. An attacker cannot discover the path without either having access to the cluster and permissions to read the Receiver's .status.webhookPath in the target namespace, or obtaining the URL through other means (e.g. leaked secrets or access to Pub/Sub config). Upon successful authentication, the controller triggers a reconciliation for all resources listed in the Receiver's .spec.resources. However, the practical impact is limited: Flux reconciliation is idempotent, so if the desired state in the configured sources (Git, OCI, Helm) has not changed, the reconciliation results in a no-op with no effect on cluster state. Additionally, Flux controllers deduplicate reconciliation requests, sending many requests in a short period results in only a single reconciliation being processed. This vulnerability is fixed in 1.8.3.
📍 영향받는 시스템
Flux notification-controller 1.8.2 이하 (1.8.3에서 수정)
⚔️ 공격 벡터
유효한 Google 발급 OIDC 토큰 + 웹훅 URL 알아야 함 (클러스터 접근 또는 시크릿 노출 필요)
🛡️ 대응 방법
notification-controller를 1.8.3 이상으로 업그레이드
🔧 검증 코드
출력된 버전이 v1.8.3 이상이면 안전, 1.8.2 이하면 취약함
kubectl get deployment -n flux-system notification-controller -o=jsonpath='{.spec.template.spec.containers[0].image}' 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+'