Google wykorzystał sztuczną inteligencję do zidentyfikowania 26 nowych luk w zabezpieczeniach projektów open source, w tym błędu w OpenSSL, który pozostawał niewykryty przez dwie dekady. Błąd, nazwany CVE-2024-9143, polegał na problemie z pamięcią przekraczającą dopuszczalne limity, który powodował awarie programu i, w rzadkich przypadkach, uruchamiał złośliwy kod.
Aby wyszukać podatności i zautomatyzować proces, programiści Google wykorzystali metodę testów fuzz, podczas której do kodu ładowane są losowe dane w celu zidentyfikowania ewentualnych awarii. Na blogu firmy zauważono, że podejście polegało na wykorzystaniu mocy dużych modeli językowych (LLM) do generowania bardziej rozmytych celów.
Jak się okazało, programy LLM „wysoce skutecznie emulowały cały przepływ pracy typowego programisty polegający na pisaniu, testowaniu i selekcji wykrytych błędów”. W rezultacie sztuczna inteligencja została wykorzystana do przetestowania 272 projektów oprogramowania, w których wykryto 26 luk, w tym „starożytny” błąd w OpenSSL.
Zdaniem badaczy błąd pozostawał niewykryty przez 20 lat, ponieważ trudno było przetestować poszczególne skrypty kodu oraz uznano, że kod został już dokładnie przetestowany i dlatego nie wzbudził większego zainteresowania. „Testy nie są w stanie zmierzyć wszystkich możliwych ścieżek, którymi można wykonać program. Różne ustawienia, flagi i konfiguracje mogą również aktywować różne zachowania, które ujawniają nowe luki” – wyjaśnili eksperci. Na szczęście błąd ma niewielką wagę ze względu na minimalne ryzyko obsługi procesu.
Wcześniej programiści ręcznie pisali kod do testów fuzzingu, ale teraz Google planuje nauczyć sztuczną inteligencję nie tylko znajdowania luk, ale także automatycznego sugerowania poprawek, minimalizując interwencję człowieka. „Naszym celem jest osiągnięcie punktu, w którym będziemy pewni, że możemy obejść się bez ręcznej weryfikacji” – stwierdziła firma.