Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Używasz Postmana? Zwróć uwagę czy nie udostępniasz sekretów
Narzędzia takie jak Postman ułatwiają deweloperom nie tylko budowanie i testowanie API, ale także współdzielenie pogrupowanych zbiorów zapytań i ich konfiguracji (adresy URL, parametry, rodzaje uwierzytelnienia, nagłówki etc) w postaci tzw. kolekcji. Dzięki temu dokumentowanie interfejsów programistycznych aplikacji webowych jest bardzo proste, co przyspiesza rozwój oraz zachęca innych deweloperów do pracy nad dobrze utrzymywanym środowiskiem.
Okazuje się jednak, że użytkownicy dodając publiczne kolekcje do prywatnych środowisk (workspaces) udostępniają sekrety takie jak tokeny dostępowe i inne poświadczenia wszystkim użytkownikom Internetu! Niemały udział w błędnej konfiguracji ma mało przejrzyste UI oraz brak jednoznacznego opisu funkcji, co powoduje, że łatwiej jest podjąć błędną decyzję i opublikować sekrety w sieci. O incydencie tym poinformowano przez platformę bugbounty – hackerone.
Temat został podchwycony przez Truffle Security, znane między innymi z rozwoju projektu TruffleHog, o którym pisaliśmy w artykule dotyczącym wpadki Mercedesa. W wyniku przeprowadzonego badania, które opisuje opublikowany niedawno raport, znaleziono ponad 1700 działających poświadczeń, jednak z racji ograniczonego sposobu indeksowania, przeszukano jedynie 20% dostępnych zasobów czyli przeszło 40 000 projektów. Analitycy szacują, że analogicznie dla reklamowanych 200 000 udostępnionych projektów liczba sekretów oscylować będzie w okolicy 4500 działających poświadczeń. Nie jest to może liczba oszałamiająca, ale biorąc pod uwagę ich różnorodność, to atakujący mogą zaliczyć naprawdę udane łowy.
Do najczęściej udostępnianych publicznie poświadczeń należą tokeny dostępowe do GitHuba, OpenAI czy… OpenWeather. Jednak ze wszystkich zebranych sekretów, najpopularniejsze były poufne ścieżki dostępu do zasobów (często zawierające np. poświadczenia basic auth).
Powodów wrzucania sekretów do sieci jest kilka. Jednak najczęściej przytaczany jest argument mylącego interfejsu użytkownika. Po pierwsze wartości przechowywane jako secret values są tak naprawdę maskowanymi danymi (widoczne jako wygwiazdkowane). Każdy użytkownik może poznać zawartość tego pola.
Po drugie zmienne globalne przechowywane w projekcie mogą być ustawione w dwojaki sposób – wykorzystując Initial Value oraz Current Value. Pierwsza wartość jest zapisywana do projektu i będzie widoczna w publicznym workspace. W przypadku Current Value, zmienne te są przechowywane tylko lokalnie. Trzeba przyznać, że to bardzo niefortunne określenie, co nie raz zostało zauważone przez użytkowników Postmana.
Używam Postmana –co teraz? Przede wszystkim należy sprawdzić, które workspace zostały udostępnione i jakie wartości mogły się tam znajdować. Po drugie, wszelkie sekrety, co do których zachodzi najmniejsze podejrzenie, że mogły zostać udostępnione osobom nieuprawnionym, powinny zostać unieważnione i wygenerowane ponownie. I na koniec, należy do swojego sposobu pracy dołączyć etap skanowania w poszukiwaniu sekretów. Funkcje Postmana są w tym aspekcie dość ubogie, natomiast autorzy TruffleHoga dopisali całkiem rozbudowaną obsługę, warto się z nią zapoznać.
~fc
Zależy gdzie się używa. Jak na serwerach, które nie mają wyjścia w świat i do tego nie zapisuje się nic w workspaces to nic nie grozi ;)
Jak się dobrze poszuka w Google to można na postman znaleźć dużo skarbów…kolega mi mówił.