Wpływ
Zhakowane interfejsy API umożliwiają atakującym ominięcie interfejsów użytkownika i bezpośrednią interakcję z bazami danych i usługami zaplecza [S1]. Może to prowadzić do nieautoryzowanej eksfiltracji danych, przejęcia kont metodą brute-force lub niedostępności usług z powodu wyczerpania zasobów. [S3][S5].
Główna przyczyna
Główną przyczyną jest ujawnienie logiki wewnętrznej przez punkty końcowe, które nie mają wystarczającej walidacji i ochrony [S1]. Deweloperzy często zakładają, że jeśli funkcja nie jest widoczna w interfejsie użytkownika, jest bezpieczna, co prowadzi do zepsucia kontroli dostępu [S2] i zezwalających zasad CORS, które ufają zbyt wielu źródłom [S4].
Niezbędna lista kontrolna bezpieczeństwa API
- Wymuszaj ścisłą kontrolę dostępu: każdy punkt końcowy musi sprawdzić, czy requester ma odpowiednie uprawnienia do określonego zasobu, do którego uzyskiwany jest dostęp, [S2].
- Wdrożenie ograniczania szybkości: Ochrona przed automatycznymi nadużyciami i atakami DoS poprzez ograniczenie liczby żądań, które klient może wykonać w określonym przedziale czasowym [S3].
- Skonfiguruj poprawnie CORS: Unikaj używania symboli wieloznacznych (
*) dla uwierzytelnionych punktów końcowych. Jawnie zdefiniuj dozwolone źródła, aby zapobiec wyciekom danych między lokalizacjami. [S4]. - Audyt widoczności punktu końcowego: Regularnie skanuj w poszukiwaniu „ukrytych” lub nieudokumentowanych punktów końcowych, które mogą ujawnić wrażliwe funkcje [S1].
Jak FixVibe to testuje
FixVibe obejmuje teraz tę listę kontrolną poprzez wiele kontroli na żywo. Sondy z bramką aktywną testują ograniczenie szybkości punktu końcowego uwierzytelniania, CORS, CSRF, wstrzykiwanie SQL, słabe strony przepływu uwierzytelniania i inne problemy napotykane przez API dopiero po weryfikacji. Kontrole pasywne sprawdzają nagłówki zabezpieczeń, publiczną dokumentację API i ekspozycję OpenAPI oraz sekrety w pakietach klientów. Skanowania repo dodają ocenę ryzyka na poziomie kodu pod kątem niebezpiecznego CORS, nieprzetworzonej interpolacji SQL, słabych kluczy tajnych JWT, użycia JWT wyłącznie do dekodowania, luk w podpisie webhooka i problemów z zależnościami.
