Podatność w platformie Coder umożliwia atakującemu sfałszowanie tożsamości instancji Azure (VM) bez jakiejkolwiek autoryzacji poprzez ominięcie weryfikacji podpisu PKCS#7. W rezultacie atakujący może przejąć token sesji agenta roboczego (workspace agent) ofiary.
▸ Pokaż oryginał (EN)
Coder allows organizations to provision remote development environments via Terraform. In versions prior tp 2.24.5, 2.29.13, 2.30.8, 2.31.12, 2.32.2, and 2.33.3, `azureidentity.Validate()` verifies that the PKCS#7 signer certificate chains to a trusted Azure CA but never verifies the PKCS#7 signature itself. An attacker can embed a legitimate Azure certificate alongside arbitrary content e.g. `{"vmId":"<target>"}` and the forged `vmId` will be accepted returning the victim workspace agent's session token. No authentication is required. The attacker only needs to know a target VM's `vmId` which is a `UUIDv4`. That's a practical limitation which would typically require prior access to be exploited. Versions 2.24.5, 2.29.13, 2.30.8, 2.31.12, 2.32.2, and 2.33.3 patch the issue. As a workaround, reconfigure any Azure templates to use token authentication rather than `azure-instance-identity`.
Funkcja `azureidentity.Validate()` sprawdza jedynie, czy certyfikat sygnatariusza PKCS#7 pochodzi z zaufanego Azure CA, ale nigdy nie weryfikuje samego podpisu PKCS#7. Atakujący może osadzić legalny certyfikat Azure obok dowolnej treści, np. `{"vmId":"<target>"}`, spreparowując w ten sposób fałszywy `vmId`. Ponieważ podpis nie jest weryfikowany, serwer akceptuje sfałszowany dokument i zwraca token sesji agenta przypisanego do wskazanej maszyny wirtualnej. Praktycznym ograniczeniem ataku jest konieczność znajomości `vmId` docelowej maszyny (wartość UUIDv4), co zazwyczaj wymaga wcześniejszego dostępu do środowiska.
Atakujący bez uwierzytelnienia może uzyskać token sesji agenta workspace'u ofiary, co prowadzi do przejęcia kontroli nad zdalnym środowiskiem deweloperskim i potencjalnego dostępu do przechowywanych w nim danych oraz zasobów (wysoki wpływ na poufność i integralność).
Należy zaktualizować Coder do wersji 2.24.5, 2.29.13, 2.30.8, 2.31.12, 2.32.2 lub 2.33.3 (w zależności od używanej gałęzi). Jako obejście (workaround) przed wdrożeniem patcha należy zmienić konfigurację szablonów Azure tak, aby korzystały z uwierzytelniania tokenowego (token authentication) zamiast `azure-instance-identity`.
Coder we wszystkich wersjach poprzedzających 2.24.5, 2.29.13, 2.30.8, 2.31.12, 2.32.2 oraz 2.33.3, gdy szablony Azure skonfigurowane są z metodą uwierzytelniania `azure-instance-identity`
Praktyczne wykorzystanie podatności jest ograniczone koniecznością wcześniejszej znajomości wartości `vmId` (UUIDv4) docelowej maszyny wirtualnej, co zazwyczaj wymaga uprzedniego dostępu do środowiska — jak wskazano wprost w opisie oryginalnym.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NCoder
APPCoder< 2.24.52.29.0 – 2.29.13 (bez)2.30.0 – 2.30.8 (bez)2.31.0 – 2.31.12 (bez)2.32.0 – 2.32.2 (bez)2.33.0 – 2.33.3 (bez)
Powiązane podatności
Coder: nieautoryzowane przepisanie agenta między workspace'ami (IDOR)
Coder CLI: wyciek tokenu sesji przez niezwalidowany URL zewnętrznej aplikacji
Coder: command injection przez niesanityzowane ustawienia SSH w ~/.ssh/config
Coder: brak weryfikacji AllowedIPs w koordynatorze tailnet — eskalacja dostępu przez WireGuard
Coder AI Bridge Proxy pomija weryfikację certyfikatu TLS (CWE-295)