CVE-2026-61728
KrytyczneCVSS 9.9Streszczenie
W SOCFortress CoPilot użytkownicy portalu, w tym konta typu customer_user, mogą przesyłać znaczniki HTML przez endpoint komentarzy do alertów, które są renderowane bez sanityzacji przy użyciu v-html. Umożliwia to przechowywany XSS, a ponieważ tokeny dostępu i odświeżania są przechowywane w pamięci dostępnej dla JavaScript, wstrzyknięty skrypt może je wykraść i przejąć konto przeglądającego. Podatność dotyczy także innych pól SOC (sprawy, zasoby, health-check) i została naprawiona w wersjach 0.1.70 (health-check) oraz 0.1.76 (komentarze i pozostałe pola).
Ocena ryzyka
Może to prowadzić do trwałego przejęcia uprzywilejowanych kont analityków i administratorów, dostępu do danych innych dzierżawców oraz modyfikacji lub usuwania incydentów, co osłabia wykrywanie i reagowanie na zagrożenia.
Rekomendacja
Zaktualizuj SOCFortress CoPilot do wersji 0.1.76 lub nowszej, a jeśli nie jest to możliwe, ogranicz dostęp do portalu i wdróż dodatkowe kontrole bezpieczeństwa dla treści użytkowników.
Inne podatności w SOCFortress CoPilot
Zobacz wszystkie- CVE-2026-61739Wysokie
W SOCFortress CoPilot przed wersją 0.1.77 endpointy zarządzania wykluczeniami Velociraptor Sigma nie weryfikują ról ani tenanta, a endpoint tworzenia wykluczenia nie waliduje poprawnie poświadczeń — dowolny nieprawidłowy, wygasły lub sfałszowany token Bearer pozwala utworzyć regułę wyciszania. Ponadto reguły z pustym customer_code działają globalnie, a niskouprzywilejowani użytkownicy mogą przeglądać, modyfikować, wyłączać i usuwać wykluczenia.
- CVE-2026-61708Wysokie
W SOCFortress CoPilot przed wersją 0.1.76 endpoint POST /api/agent_data_store/upload pozwala użytkownikom z rolą customer_user wybrać nazwę bucketu i obiektu bez allowlisty, prefiksu tenanta ani sprawdzenia własności. Możliwe jest nadpisywanie obiektów innych tenantów, w tym konfiguracji sysmon, szablonów raportów i dowodów z spraw. Podatność naprawiono w wersji 0.1.76.
- CVE-2026-61738Krytyczne
W SOCFortress CoPilot przed wersją 0.1.77 endpoint POST /api/scoutsuite/generate-gcp-report przekazuje surową nazwę pliku z nagłówka multipart do funkcji zapisu bez sanityzacji ani sprawdzenia ścieżki docelowej. Nazwa pliku z sekwencją przejścia katalogów pozwala zapisać przesłany JSON poza zamierzonym katalogiem raportów, w tym w katalogu źródłowym aplikacji.
- CVE-2026-61730Krytyczne
W SOCFortress CoPilot nieuwierzytelniony mount StaticFiles /scoutsuite-report udostępnia katalog scoutsuite-report, ujawniając raporty HTML oraz pliki wyników zawierające informacje o IAM, zasobach i błędach konfiguracji AWS, Azure i GCP. Podczas skanowania GCP klucz konta usługi jest zapisywany w tym samym katalogu i usuwany dopiero po zakończeniu skanowania, więc anonimowy klient może go pobrać.
- CVE-2026-61729Krytyczne
W SOCFortress CoPilot przed wersją 0.1.76 funkcje verify_graylog_header i verify_velociraptor_header uwierzytelniają webhooki przy użyciu tego samego publicznie zaszytego domyślnego nagłówka, obecnego także w .env.example. Wdrożenia z niezmienionym sekretem pozwalają anonimowemu wywołującemu ominąć uwierzytelnianie JWT i wywołać akcje active-response oraz tworzyć sfałszowane alerty.
- CVE-2026-61707Krytyczne
W SOCFortress CoPilot przed wersją 0.1.76 szablony raportów przesyłane przez użytkownika o najniższych uprawnieniach (customer_user) są później wykonywane przez niesandboxowane silniki Jinja2 podczas generowania raportu przez administratora lub analityka. Brak walidacji treści szablonu oraz brak izolacji między klientami pozwala atakującemu na wstrzyknięcie złośliwych wyrażeń Jinja, które są wykonywane jako kod Python na backendzie.
- CVE-2026-42869Krytyczne
W wersjach przed 0.1.57, SOCFortress CoPilot zawierał twardo zakodowany sekret do podpisywania JWT, co umożliwiało atakującym fałszowanie tokenów administracyjnych. W przypadku, gdy JWT_SECRET nie jest ustawiony, wszystkie tokeny uwierzytelniające są podpisywane tym publicznie znanym kluczem.
Oryginalny opis (angielski, źródło NVD)
SOCFortress CoPilot focuses on providing a single pane of glass for all your security operations needs. In affected snapshots preceding the respective 0.1.70 and 0.1.76 sink repairs, portal users, including `customer_user`, can submit stored markup through `POST /api/incidents/db_operations/alert/comment`. In `customer-portal/src/components/alerts/AlertDetails/AlertComment.vue`, `commentHtml` replaces newlines in `comment.comment` but passes the result to `v-html` without escaping or sanitizing HTML. When another user views the poisoned alert, stored script executes on the application origin; the same unsanitized rendering pattern affects server-stored SOC case, asset and health-check fields in `SocCaseNote.vue`, `SocCaseItem.vue`, `SocCaseAssetsItem.vue`, `SocAlertAssetsItem.vue` and `HealthcheckItem.vue`. The authentication store in `customer-portal/src/stores/auth.ts` persists both access and refresh tokens in JavaScript-readable storage, and `customer-portal/src/api/httpClient.ts` uses bearer headers rather than HttpOnly cookies. An injected script can steal both tokens, impersonate the viewer and obtain fresh tokens through `/auth/refresh`. If an analyst or administrator views the poisoned alert or case, this enables persistent privileged account takeover, cross-tenant data access, incident modification or deletion, and detection/response subversion. The health-check sink repair is first contained in version 0.1.70, while the comment and other SOC sink repairs are first contained in version 0.1.76. Version 0.1.76 is the provisional first release containing all observed repairs; grouped versus split CVE scope requires curator adjudication.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

