Bezpieczeństwo

Ta strona mówi i o tym, co chronimy, i o tym, czego ochronić nie jesteśmy w stanie. Opowieść o bezpieczeństwie, której brakuje drugiej części, skłania czytelnika do pomylenia listy z gwarancją.

Punkt wyjścia

Opublikować pakiet to uruchomić kod na komputerze każdego inżyniera, który go zainstaluje. Każda decyzja dotycząca bezpieczeństwa w tym produkcie była najpierw ważona wobec jednego pytania: czy ta zmiana ułatwia publikację bez uprawnienia?

  • Pakiety są podpisane (ECDSA P-256)

    Plik podpisu podróżuje wewnątrz pakietu. Podpisuje manifest ze skrótami plików, identyfikatorem pakietu i wersją — a nie sam skrót archiwum.

    Gdyby podpisywano tylko skrót, stare, poprawnie podpisane archiwum dałoby się podstawić pod nowym numerem wersji: podpis przeszedłby weryfikację, a użytkownik zainstalowałby jako „aktualizację” narzędzie ze znaną podatnością.

  • Klucz prywatny NIE leży na serwerze

    Serwer wyłącznie sprawdza. Podpisywanie odbywa się na komputerze tego, kto publikuje, osobnym narzędziem.

    Gdyby klucz leżał na serwerze, kto go przejmie, mógłby podmienić pakiet i podpisać go ponownie — co uczyniłoby podpis daremnym.

  • Klient też sprawdza

    Dodatek na komputerze inżyniera weryfikuje podpis samodzielnie, a lista zaufanych kluczy, z której korzysta, nie pochodzi z serwera.

    Podpis istnieje właśnie dlatego, że serwerowi nie można wierzyć na słowo. Wzięcie listy zaufania z tego samego serwera po cichu unieważniłoby założenie wyjściowe.

  • Dziennik audytu, którego się nie kasuje

    Każda publikacja, każda zmiana uprawnienia i każda decyzja o kanale zapisują się na zawsze. Celowo nie istnieje żadna ścieżka zmiany ani usunięcia, a sprzątanie po okresie przechowywania go nie rusza.

    „Skąd się tu wzięło to narzędzie” pyta się zwykle po miesiącach. Tamtego dnia wpis, który dało się skasować, jest wpisem, którego nigdy nie było.

  • Zasada czworga oczu, opcjonalna

    Wypuszczenie wersji do szerszego kanału może wymagać zgody drugiego administratora, a ten, kto poprosił, nie zatwierdzi własnej prośby. Wycofanie nigdy nie wymaga zgody.

    Domyślnie jest wyłączona. W zespole trzech osób przeszkoda w kilka tygodni zamienia się w wiadomość zatwierdzaną bez czytania; kontrola, o której się wierzy, że chroni, choć nie chroni, jest gorsza niż żadna.

  • Rozpakowanie archiwum samo w sobie jest powierzchnią ataku

    Wgrane archiwa sprawdza się pod kątem wyjścia poza folder (zip-slip) i bomb dekompresyjnych, a rozmiar po rozpakowaniu jest ograniczony.

    Rozpakowanie archiwum wygląda niewinnie. Specjalnie przygotowane może zapisać pliki poza folderem docelowym albo zapełnić dysk serwera.

  • Logowanie bez hasła

    Użytkownicy logują się kodem jednorazowym wysłanym na swój adres. Sesja chodzi na krótkotrwałym tokenie; token odświeżający nigdy nie jest widoczny dla kodu w przeglądarce.

    Jeśli nie ma skarbca haseł do prowadzenia, nie ma też bazy haseł, która mogłaby wyciec. A ponowne użycie już unieważnionego tokenu odświeżającego traktuje się jako znak kradzieży: sesja się zamyka.

  • Widać, co się instaluje

    Folder instalacyjny zawiera czytelny maszynowo wykaz składników (SBOM CycloneDX) i skrypty migracyjne pod obie bazy danych.

    Dział IT musi mieć możliwość sprawdzenia, co trafia na serwer, zanim tam trafi. Kiedy ogłoszą podatność w jakiejś zależności, „czy ją mamy?” staje się wyszukiwaniem po plikach.

Czego nie jesteśmy w stanie ochronić

To nie są braki, tylko granice. Wynikają ze struktury, a twierdzenie inaczej byłoby nieprawdą.

  • Dwóch administratorów działających razem. Zasada czworga oczu zatrzymuje jednego, nie dwóch.
  • Administrator systemowy serwera. Dla kogoś, kto ma dostęp do bazy danych i systemu plików, żadna kontrola na poziomie aplikacji nie jest przeszkodą.
  • Stacja, na której leży klucz podpisujący. Klucz nie jest na serwerze, ale gdzieś jest; jeśli padnie tamta maszyna, padnie i podpis.
  • Celowo ukryte złośliwe zachowanie. Nasza inspekcja pakietów jest heurystyczna i nie twierdzimy, że wychwyci kod, który stara się ukryć.
  • Wyciek danych. Zainstalowane narzędzie pracuje z uprawnieniami samego inżyniera i może czytać wszystko, do czego one sięgają. Ogranicza to kontrola systemu operacyjnego i sieci, a nie ten produkt.
  • Bezpieczeństwo Państwa kopii zapasowych. Kopia bazy danych jest w Państwa rękach, a wszystko w niej warte jest dokładnie tyle, co żywy system.

Zgłoszenie podatności

Jeśli znaleźli Państwo jakąś, prosimy napisać. Traktujemy zgłoszenia poważnie, nie wykluczamy zgłaszającego z procesu i informujemy, kiedy wychodzi poprawka.

security@ypcad.com