Google DeepMind prezentuje CodeMender: AI, które autonomicznie łata luki w kodzie
Google DeepMind zaprezentowało CodeMender, agenta AI zaprojektowanego do autonomicznego wyszukiwania i naprawiania krytycznych luk bezpieczeństwa w kodzie oprogramowania. W ciągu ostatnich sześciu miesięcy system ten wniósł już 72 poprawki bezpieczeństwa do uznanych projektów open source, co stanowi znaczący krok w kierunku automatyzacji procesu, który tradycyjnie jest czasochłonny i wymaga dużego nakładu pracy.
Identyfikacja i łatanie luk w zabezpieczeniach to zadanie niezwykle trudne, nawet przy użyciu zautomatyzowanych metod. Badania Google DeepMind, w tym projekty oparte na sztucznej inteligencji, takie jak Big Sleep i OSS-Fuzz, okazały się skuteczne w odkrywaniu nowych luk typu zero-day w dobrze przetestowanym kodzie. Sukces ten stworzył jednak wąskie gardło: w miarę jak AI przyspiesza wykrywanie wad, wzrasta obciążenie programistów odpowiedzialnych za ich naprawianie. CodeMender ma na celu rozwiązanie tego problemu.
Jak działa CodeMender?
CodeMender działa jako autonomiczny agent AI, który kompleksowo podchodzi do poprawy bezpieczeństwa kodu. Jego możliwości są zarówno reaktywne, pozwalając na natychmiastowe łatanie nowo odkrytych luk, jak i proaktywne, umożliwiając przepisywanie istniejącego kodu w celu wyeliminowania całych klas błędów, zanim zostaną one wykorzystane. Pozwala to programistom i opiekunom projektów poświęcić więcej czasu na tworzenie nowych funkcji i ulepszanie funkcjonalności oprogramowania.
System wykorzystuje zaawansowane możliwości rozumowania modeli Gemini Deep Think firmy Google. Dzięki temu agent może debugować i rozwiązywać złożone problemy bezpieczeństwa z dużą dozą autonomii. W tym celu system jest wyposażony w zestaw narzędzi, które pozwalają mu analizować i rozumować na temat kodu przed wprowadzeniem jakichkolwiek zmian. CodeMender zawiera również proces walidacji, aby upewnić się, że wszelkie modyfikacje są poprawne i nie powodują nowych problemów.
Walidacja i bezpieczeństwo przede wszystkim
Błąd w zabezpieczeniach kodu może mieć kosztowne konsekwencje. Automatyczny system walidacji CodeMendera jest zatem niezbędny. Systematycznie sprawdza, czy proponowane zmiany usuwają pierwotną przyczynę problemu, są poprawne pod względem funkcjonalnym, nie powodują nieprawidłowego działania istniejących testów i są zgodne z wytycznymi dotyczącymi stylu kodowania projektu. Do przeglądu przez człowieka trafiają tylko poprawki wysokiej jakości, które spełniają te rygorystyczne kryteria.
Aby zwiększyć skuteczność naprawiania kodu, zespół DeepMind opracował nowe techniki dla agenta AI. CodeMender wykorzystuje zaawansowaną analizę programów, wykorzystując zestaw narzędzi, w tym analizę statyczną i dynamiczną, testowanie różnicowe, fuzzing i SMT solvers. Instrumenty te pozwalają mu systematycznie analizować wzorce kodu, przepływ sterowania i przepływ danych w celu zidentyfikowania podstawowych przyczyn luk w zabezpieczeniach i słabości architektury.
System wykorzystuje również architekturę multi-agentową, w której wyspecjalizowani agenci są wdrażani w celu rozwiązania określonych aspektów problemu. Na przykład, dedykowane narzędzie do krytyki oparte na dużym modelu językowym ujawnia różnice między oryginalnym a zmodyfikowanym kodem. Pozwala to agentowi zweryfikować, czy proponowane zmiany nie powodują niezamierzonych skutków ubocznych i w razie potrzeby skorygować swoje podejście.
Proaktywne podejście do bezpieczeństwa
Oprócz reagowania na istniejące błędy, CodeMender został zaprojektowany, aby proaktywnie chronić oprogramowanie przed przyszłymi zagrożeniami. Zespół wdrożył agenta do zastosowania adnotacji -fbounds-safety do części libwebp, szeroko stosowanej biblioteki kompresji obrazów. Adnotacje te instruują kompilator, aby dodał do kodu kontrolę granic, która może uniemożliwić atakującemu wykorzystanie przepełnienia bufora do wykonania dowolnego kodu. Praca ta jest szczególnie istotna, biorąc pod uwagę, że luka w zabezpieczeniach typu heap buffer overflow w libwebp, oznaczona jako CVE-2023-4863, została wykorzystana przez podmiot stanowiący zagrożenie w ataku zero-click na iOS kilka lat temu.
Przyszłość CodeMendera
Pomimo obiecujących wczesnych wyników, Google DeepMind przyjmuje ostrożne i rozważne podejście do wdrażania, z dużym naciskiem na niezawodność. Obecnie każda poprawka wygenerowana przez CodeMendera jest sprawdzana przez badaczy, zanim zostanie przesłana do projektu open source. Zespół stopniowo zwiększa liczbę zgłoszeń, aby zapewnić wysoką jakość i systematycznie uwzględniać opinie społeczności open source. W przyszłości badacze planują skontaktować się z osobami odpowiedzialnymi za krytyczne projekty open source z poprawkami wygenerowanymi przez CodeMendera. Poprzez iterację na podstawie opinii społeczności mają nadzieję ostatecznie udostępnić CodeMendera jako publicznie dostępne narzędzie dla wszystkich programistów.
Zespół DeepMind zamierza również opublikować artykuły techniczne i raporty w nadchodzących miesiącach, aby podzielić się swoimi technikami i wynikami. Praca ta stanowi pierwszy krok w badaniu potencjału agentów AI do proaktywnego naprawiania kodu i fundamentalnego zwiększania bezpieczeństwa oprogramowania dla wszystkich.
