Przejdź do treści
ossscanner.org

Jak to działa

Od linku do repozytorium do zweryfikowanych podatności

Nasz proces odzwierciedla ten opisany przez Anthropic dla OSS Scanner — model zagrożeń, audyt, ponowna weryfikacja, analiza przyczyny źródłowej i poprawka — i wykorzystuje najnowocześniejsze modele Claude dostępne przez publiczne API.

  1. 1

    Bezpieczne klonowanie

    Pobieramy wskazaną przez Ciebie gałąź za pomocą płytkiego klonowania git z filtrem blobów przez HTTPS. Haki Git są wyłączone, dowiązania symboliczne są pobierane jako zwykłe pliki, a wszystkie protokoły inne niż HTTPS są odrzucane. Prywatne adresy sieciowe są blokowane, więc nie można skierować skanera do hostów wewnętrznych.

    Kod z repozytorium nigdy nie jest uruchamiany: nie wykonujemy kompilacji, nie instalujemy pakietów ani nie uruchamiamy testów. Kopia robocza jest usuwana po zakończeniu skanowania.

  2. 2

    Inwentaryzacja i ocena ryzyka

    Każdy źródłowy plik tekstowy jest wymieniony wraz z językiem programowania i rozmiarem. Pomijamy kod dołączony do projektu, pliki wygenerowane, zminimalizowane pakiety i pliki blokad zależności. Każdy plik otrzymuje ocenę ryzyka na podstawie niebezpiecznych operacji — kopiowania pamięci, uruchamiania powłoki, deserializacji, budowania zapytań SQL, renderowania szablonów, łączenia ścieżek, kodu kryptograficznego i uwierzytelniającego — oraz krytycznych ścieżek, takich jak parsery, obsługa protokołów i trasowanie żądań.

  3. 3

    Model zagrożeń

    Jeśli repozytorium zawiera plik .oss-scanner/threat_model.md (ten sam plik, który odczytuje skaner Anthropic), plik SECURITY.md lub model zagrożeń podany podczas rejestracji projektu, skaner postępuje zgodnie z jego treścią. W przeciwnym razie model analizuje plik README, układ katalogów i pliki o najwyższym ryzyku, a następnie tworzy jego wstępną wersję: opis projektu, miejsca, do których trafiają niezaufane dane wejściowe, oraz zakres wyłączony z analizy.

    Model zagrożeń wskazuje również pliki, na których należy się skupić, dzięki czemu audyt koncentruje się na kodzie, do którego atakujący rzeczywiście może uzyskać dostęp.

  4. 4

    Audytuj

    Pliki o najwyższym ryzyku są łączone w duże pakiety wraz z numerami wierszy i przesyłane do modelu rozumującego z dołączonym modelem zagrożeń. Model wyszukuje problemy, które zgłosiłby uważny audytor:

    • bezpieczeństwo pamięci: przepełnienia, użycie po zwolnieniu pamięci, obcięcie liczby całkowitej
    • wstrzykiwanie: SQL, poleceń, szablonów, przechodzenie przez ścieżki, SSRF
    • logika uwierzytelniania, autoryzacji i sesji
    • niebezpieczna deserializacja i błędna interpretacja danych przez parser
    • niewłaściwe użycie kryptografii i obsługa sekretów

    Szybkie skanowanie wykorzystuje Claude Haiku z umiarkowanym budżetem. Głębokie skanowanie projektów objętych programem wykorzystuje Claude Sonnet i analizuje do czterech razy więcej kodu.

  5. 5

    Niezależna weryfikacja

    Każde potencjalne zgłoszenie trafia do osobnego agenta weryfikującego, który otrzymuje nowy kontekst. Jego zadaniem jest obalenie zgłoszenia: prześledzenie przepływu danych, sprawdzenie, czy walidacja nie odbywa się w innym miejscu, oraz ustalenie, czy zgodnie z modelem zagrożeń atakujący rzeczywiście kontroluje dane wejściowe. Pozostają tylko zgłoszenia potwierdzone przez agenta lub ocenione przez niego jako prawdopodobne; pozostałe są zliczane jako odrzucone.

    Dla zgłoszeń, które przejdą weryfikację, agent opisuje przyczynę źródłową, przygotowuje test odtwarzający błąd oraz minimalną proponowaną poprawkę w postaci ujednoliconego pliku różnicowego.

  6. 6

    Commit wprowadzający błąd i raport

    Duplikaty wynikające z tej samej przyczyny źródłowej są łączone. Polecenie git blame dla podatnych wierszy wskazuje najnowszy commit, który je zmienił — zwykle ten, który wprowadził błąd — dzięki czemu możesz dodać znacznik Fixes: i ustalić, których wydań dotyczy problem.

    Raport jest zapisywany pod losowym, trudnym do odgadnięcia identyfikatorem. Możesz wyeksportować go jako Markdown na potrzeby ostrzeżenia o podatności, JSON do narzędzi lub SARIF 2.1.0 do skanowania kodu w GitHub.

Czego skaner nie robi

  • Nie uruchamia Twojego kodu, nie kompiluje go ani nie pobiera zależności.
  • Nie publikuje zgłoszeń, nie tworzy zgłoszeń w systemach śledzenia błędów ani nie kontaktuje się z nikim poza zarejestrowanymi opiekunami projektów.
  • Nie przechowuje kopii kodu źródłowego po skanowaniu. Raporty zawierają krótkie fragmenty zmienionych wierszy.
  • Niczego nie gwarantuje: modele przeoczają błędy i czasami zgłaszają nieistniejące problemy. Czysty raport nie jest certyfikatem bezpieczeństwa.

Dlaczego testy odtwarzające błąd są zablokowane

Każdy może wkleić link do publicznego repozytorium, także osoba, która nie jest opiekunem projektu. Analiza przyczyny źródłowej i poprawka pomagają obrońcom; działający dowód koncepcji pomaga przede wszystkim atakującym. Dlatego testy odtwarzające błąd pozostają ukryte do czasu, gdy ktoś doda do repozytorium plik tokena — dowód, że może wdrożyć poprawkę. To zgodne z wytycznymi jądra Linux, według których testy odtwarzające błędy znalezione przez AI należy udostępniać na prośbę opiekuna projektu.

Czym różni się to od OSS Scanner firmy Anthropic

Anthropic uruchamia swój skaner w odizolowanych środowiskach bez dostępu do sieci, w których projekt jest budowany na podstawie pliku Dockerfile. Dzięki temu agenci mogą kompilować i uruchamiać kod, aby dynamicznie potwierdzać błędy. Skaner wykorzystuje najmocniejsze modele, w tym Claude Mythos, który nie jest publicznie dostępny. My analizujemy kod statycznie za pomocą publicznie dostępnych modeli Claude. W zamian każdy może skorzystać z ossscanner.org w kilka minut, bez składania wniosku ani używania pliku Dockerfile.