CVE-2026-61738
KrytyczneCVSS 10.0Streszczenie
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.
Ocena ryzyka
Możliwe jest nadpisanie plików hosta (z ograniczeniem do zaakceptowanej treści JSON), co może zakłócić działanie aplikacji. Wykazany prymityw nie potwierdza jednak nieograniczonego wykonania kodu ani bezwarunkowego naruszenia poufności między dzierżawcami.
Rekomendacja
Zaktualizuj SOCFortress CoPilot do wersji 0.1.77, która usuwa kontrolowaną przez wywołującego nazwę pliku z podatnego endpointu. Do czasu aktualizacji ogranicz dostęp do endpointu generowania raportów GCP.
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-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-61728Krytyczne
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).
- 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. Prior to 0.1.77, `POST /api/scoutsuite/generate-gcp-report` in `backend/app/integrations/scoutsuite/routes/scoutsuite.py` admits admin and analyst users and validates the uploaded content as `GCPScoutSuiteJSON`, but passes raw `file.filename` from the multipart header to `save_file_to_directory` in `backend/app/integrations/scoutsuite/services/scoutsuite.py`. The writer combines this filename with `scoutsuite-report` using `os.path.join` without sanitization or a resolved-path containment check. A traversal filename therefore writes the supplied JSON outside the intended report directory. In the reported root-running backend, the researcher demonstrated root-owned writes outside that directory and into the application source directory. This permits host-file overwrite subject to the accepted JSON-content constraint and can disrupt application operation; the demonstrated primitive does not establish unrestricted executable contents or unconditional cross-tenant confidentiality loss. Version 0.1.77 removes caller-controlled filenames from the affected route; unrestricted-content and direct-code-execution claims require separate curator reconciliation.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

