Wyjaśnienie skanowania AI w GitHubie: kontrole bezpieczeństwa projektów PHP, Shell i Docker

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

GitHub AI Scan dodaje wyniki dotyczące bezpieczeństwa do kwalifikujących się żądań ściągnięcia, w tym zmian w plikach PHP, Shell i Dockerfile. Może pomóc w przeglądzie kodu i konfiguracji aplikacji hostowanych samodzielnie. Wyniki mają charakter doradczy: nie powodują niezaliczenia kontroli analizy kodu ani nie stają się wymogiem zestawu reguł blokującym scalanie.

Korzystaj z tej funkcji jako z dodatkowego sygnału podczas przeglądu repozytoriów, którymi zarządzasz. Nie sprawdza ona każdej działającej usługi na Twoim serwerze NAS, nie aktualizuje zainstalowanego środowiska PHP ani nie dowodzi, że kontener innej firmy jest bezpieczny. Łącz przegląd kodu z obsługiwanymi aktualizacjami i weryfikacją działającej aplikacji.

Co sprawdza GitHub AI Scan?

AI Scan uzupełnia CodeQL, oferując obsługę wybranych języków i frameworków. GitHub opisuje analizę opartą na PR, a nie skanowanie zaległości w całym repozytorium. Wyniki pojawiają się w żądaniu ściągnięcia z etykietą AI, dzięki czemu można je odróżnić od wyników CodeQL.

W przypadku projektu serwera domowego może to dotyczyć skryptu wdrożeniowego lub pliku Dockerfile, które faktycznie zmieniasz. Nie zastępuje to sprawdzania statusu dostawcy obrazu bazowego i spakowanej aplikacji.

Żądanie ściągnięcia na GitHubie z wynikiem kontroli bezpieczeństwa AI Scan i sugerowaną zmianą kodu
Prezentacja AI Scan GitHub pokazuje wynik dotyczący żądania ściągnięcia i proponowaną poprawkę. Ilustruje przegląd repozytorium; wyniki AI Scan mają charakter doradczy i nie stanowią certyfikacji działającej aplikacji NAS. Źródło: GitHub.

O jakich lukach w przepływie pracy należy wiedzieć?

Oczekiwanie Rzeczywiste ograniczenia, które należy uwzględnić
Sprawdź każdy wkład Żądania ściągnięcia z forków i Dependabot są wykluczone
Automatycznie blokuj niebezpieczne scalanie Wyniki AI Scan mają charakter doradczy
Skanuj cały działający serwer NAS Funkcja analizuje kwalifikujące się żądania ściągnięcia
Zaktualizuj wszystkie zależności Aktualizacje dostawcy i pakietów są osobną kwestią
Dowiedź, że czysty wynik oznacza bezpieczeństwo Wyniki mogą być niepełne lub niedokładne

Traktuj brak wyników jako ograniczony dowód. Recenzent nadal musi uwzględnić rzeczywistą ścieżkę kodu i ustawienia wdrożenia.

Dlaczego repozytorium może być skanowane, a konkretne żądanie ściągnięcia nadal pozostać nieprzeanalizowane?

Kwalifikowalność, włączenie funkcji, obsługiwane zmienione pliki i pochodzenie PR to odrębne warunki. W repozytorium może być skonfigurowana analiza kodu, a mimo to określony wkład może nie podlegać zakresowi AI Scan. Dokumentacja AI Scan GitHub opisuje wyłączenia i odróżnia te wyniki dotyczące wyłącznie PR od analizy zaległości w całym repozytorium.

Rozważ repozytorium oprogramowania serwera domowego, które przyjmuje zmiany od osób z zewnątrz. Zmiana w tym samym repozytorium i wkład przesłany z forka niekoniecznie są objęte takim samym zakresem AI Scan. Zachowaj ścieżkę przeglądu dla zmian wykluczonych ze skanowania; nie traktuj pustej listy ustaleń AI jako dowodu, że sprawdzono każdą zmianę.

Dlaczego ma to znaczenie po incydencie związanym z bezpieczeństwem PHP?

Reakcja na zagrożenia związane z PHP zwraca uwagę zarówno na ryzyko w kodzie aplikacji, jak i na konieczność utrzymywania środowiska wykonawczego. Skaner pull requestów może pomóc wykrywać ryzykowny kod, który piszesz; podatność w środowisku wykonawczym wymaga odpowiedniej aktualizacji od dostawcy pierwotnego lub dalszego. To powiązane obowiązki, ale wymagają różnych dowodów.

Przewodnik po stosie oprogramowania i wyjaśnienie inicjatywy Patch the Planet pomagają określić tę granicę. Czystsze repozytorium nie oznacza automatycznie zastąpienia podatnego pliku binarnego w środowisku produkcyjnym.

Jak powinien postąpić opiekun projektu po wykryciu problemu?

Przeczytaj kod na ścieżce, której dotyczy problem, sprawdź, czy zgłoszone warunki mają zastosowanie, i przeanalizuj każdą sugerowaną zmianę. Ogranicz poprawkę do niezbędnego zakresu. Przetestuj odpowiednie oczekiwane działanie i upewnij się, że poprawka związana z bezpieczeństwem nie usuwa wymaganego zabezpieczenia ani nie zakłóca prawidłowego scenariusza użycia.

Nasz poradnik dotyczący śledzenia komunikatów o zagrożeniach i weryfikowania poprawek opisuje późniejszy etap wdrożenia. Pliki odzyskiwania przechowuj poza katalogami, do których aplikacja może zapisywać.

O co recenzent powinien zapytać w sprawie ustalenia dotyczącego bezpieczeństwa oznaczonego jako wykryte przez AI?

Pytanie Dowody do sprawdzenia
Czy można kontrolować dane wejściowe? Rzeczywiste źródło wartości i ścieżka żądania
Czy można doprowadzić do wykonania niebezpiecznej operacji? Warunki wywołania i istniejąca walidacja
Czy poprawka zachowuje prawidłowe działanie? Odpowiedni test danych wejściowych/wyjściowych lub uprawnień
Czy wdrożenie również jest zagrożone? Uruchomiony obraz, konfiguracja i ekspozycja
Co pozostaje poza zakresem skanowania? Środowisko uruchomieniowe, zależności i wykluczone zmiany

Na przykład wykryty problem związany z konstruowaniem polecenia powłoki należy prześledzić, analizując budowanie argumentów i zamierzone działanie polecenia. Sugerowana zmiana, która całkowicie zatrzymuje polecenie, może usunąć objaw, nie realizując zadania aplikacji. Sprawdź rzeczywisty diff i najbliższy użyteczny test działania.

Skorzystaj z porównania z CodeQL, aby odróżnić wyniki o charakterze doradczym od możliwych do wyegzekwowania kontroli. Powiąż każdą zaakceptowaną poprawkę z rejestrem wdrożonych artefaktów. Dokumentacja analizy CodeQL opisuje inny proces analizy; żadna z tych funkcji nie dowodzi, że niezwiązany z nimi plik binarny PHP działający już na Twoim NAS-ie został zaktualizowany poprawką.

Co należy skonfigurować w pierwszej kolejności?

Sprawdź, czy repozytorium się kwalifikuje, czy skanowanie kodu jest włączone, jakie ustawienie AI Scan faktycznie obowiązuje oraz jaki budżet odpowiada za rozliczenia. Zasady organizacji i przedsiębiorstwa mogą ograniczać ustawienia repozytorium. Zacznij od jednego kwalifikującego się repozytorium, zanim włączysz tę funkcję w większej liczbie repozytoriów.

Skorzystaj z przewodnika po włączaniu AI Scan. Jeśli już korzystasz z CodeQL, przeczytaj porównanie AI Scan i CodeQL, aby zrozumieć, dlaczego uzupełniający się zakres nie oznacza identycznych mechanizmów kontroli scalania.

Często zadawane pytania

Czy AI Scan blokuje scalanie pull requestu?

Nie. Jego wyniki mają charakter doradczy i nie mogą wymuszać wymagań dotyczących scalania za pomocą zestawów reguł.

Czy AI Scan sprawdza aplikacje już działające na moim NAS-ie?

Nie. Analizuje kwalifikujące się zmiany w pull requestach w repozytoriach GitHub.

Czy działa w przypadku pull requestów z forków lub Dependabota?

GitHub informuje, że te pull requesty są wykluczone.

Czy AI Scan może zastąpić aktualizacje środowiska uruchomieniowego PHP?

Nie. Zaktualizuj pakiety lub obrazy aplikacji, korzystając z odpowiedniej procedury obsługiwanej przez dostawcę.

Powiązane artykuły

Źródła

Okładka: Oficjalna grafika z ogłoszenia GitHub AI Scan. Źródło obrazu.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.