Описание
Argo Vulnerable to Unauthenticated Memory Exhaustion (DoS) in Webhook Interceptor
Severity: Medium
Component: Webhook Interceptor (server/auth/webhook)
Vulnerability Type: Denial of Service (DoS)
Description
The Webhook Interceptor loads the entire request body into memory before authenticating the request or verifying its signature. This occurs on the /api/v1/events/ endpoint, which is publicly accessible (albeit intended for webhooks). An attacker can send a request with an extremely large body (e.g., multiple gigabytes), causing the Argo Server to allocate excessive memory, potentially leading to an Out-Of-Memory (OOM) crash and denial of service.
Vulnerable Code
In server/auth/webhook/interceptor.go:
The io.ReadAll call happens before the signature verification loop.
Impact
- Service Availability: An attacker can crash the Argo Server, disrupting workflow execution and API access for all users.
PoC (Conceptual)
- Target the webhook endpoint:
POST /api/v1/events/some-namespace - Send a
Content-Length: 1000000000(1GB) header. - Stream 1GB of random data.
- Monitor server memory usage. It will spike until 1GB is allocated or the process crashes.
Recommendation
- Limit Body Size: Enforce a strict limit on webhook body size (e.g., 10MB) using
http.MaxBytesReader. - Streaming Verification: If possible, verify the signature in a streaming fashion or use a temporary file for large payloads (though typically webhooks are small).
Ссылки
- https://github.com/argoproj/argo-workflows/security/advisories/GHSA-jcc8-g2q4-9fxq
- https://nvd.nist.gov/vuln/detail/CVE-2026-42294
- https://github.com/argoproj/argo-workflows/commit/7abb4de6c3599e2d5d960ba4d5de4cf1df109965
- https://access.redhat.com/security/cve/CVE-2026-42294
- https://bugzilla.redhat.com/show_bug.cgi?id=2468443
- https://github.com/argoproj/argo-workflows/releases/tag/v3.7.14
- https://github.com/argoproj/argo-workflows/releases/tag/v4.0.5
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-42294.json
Пакеты
github.com/argoproj/argo-workflows/v3
< 3.7.14
3.7.14
github.com/argoproj/argo-workflows/v4
>= 4.0.0, < 4.0.5
4.0.5
Связанные уязвимости
Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Prior to versions 3.7.14 and 4.0.5, the Webhook Interceptor loads the entire request body into memory before authenticating the request or verifying its signature. This occurs on the /api/v1/events/ endpoint, which is publicly accessible (albeit intended for webhooks). An attacker can send a request with an extremely large body (e.g., multiple gigabytes), causing the Argo Server to allocate excessive memory, potentially leading to an Out-Of-Memory (OOM) crash and denial of service. This issue has been patched in versions 3.7.14 and 4.0.5.
Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Prior to versions 3.7.14 and 4.0.5, the Webhook Interceptor loads the entire request body into memory before authenticating the request or verifying its signature. This occurs on the /api/v1/events/ endpoint, which is publicly accessible (albeit intended for webhooks). An attacker can send a request with an extremely large body (e.g., multiple gigabytes), causing the Argo Server to allocate excessive memory, potentially leading to an Out-Of-Memory (OOM) crash and denial of service. This issue has been patched in versions 3.7.14 and 4.0.5.