W branży IT mawia się, że kod dzieli się na ten, który ma błędy, i ten, który dopiero będzie je miał. Luki w zabezpieczeniach to nieodłączna część tej układanki – ciche bomby zegarowe tykające w sercu aplikacji. Fajnie by było, gdyby ktoś (a raczej coś) mogło je rozbroić, zanim dojdzie do eksplozji. Google właśnie poinformowało o swoim najnowszym dziecku – CodeMender. To sztuczna inteligencja, która nie czeka na alarm. Sama znajduje, analizuje i łata dziury w kodzie, zanim staną się poważnym zagrożeniem.
Walka z lukami w oprogramowaniu przypomina syzyfową pracę. Raport Veracode „State of Software Security” nie pozostawia złudzeń – średni czas naprawy luki w zabezpieczeniach wynosi obecnie zatrważające osiem i pół miesiąca. Co gorsze, według najnowszych danych, nawet jedna trzecia naruszeń bezpieczeństwa wynika z prostego powodu – braku zainstalowania dostępnych łatek. Statystyki z 2024 roku również są alarmujące – opublikowano rekordową liczbę ponad 40 000 nowych luk (CVE), co daje średnio 108 nowych zagrożeń każdego dnia.
CodeMender – programista do zadań specjalnych
CodeMender jest autonomicznym agentem AI stworzonym przez Google, którego zadaniem jest automatyczne dbanie o bezpieczeństwo kodu. Funkcjonuje on niczym doświadczony programista, który po wypiciu hektolitrów kawy zyskał nadludzkie zdolności. Potrafi analizować kod, znajdować jego słabe punkty, a następnie proponować i wdrażać poprawki. Nie jest to jednak proste wyszukiwanie błędów na podstawie znanych wzorców. CodeMender korzysta z zaawansowanych modeli językowych z serii Gemini, co pozwala mu na dogłębną analizę logiki programu, a nie tylko powierzchowne skanowanie.
Oznacza to w praktyce, że narzędzie potrafi samodzielnie przeprowadzić proces debugowania. Analizuje raporty o błędach, przegląda kod źródłowy i używa zaawansowanych narzędzi, jak analiza statyczna i dynamiczna, aby dotrzeć do źródła problemu. W jednym z przykładów udostępnionych przez Google CodeMender zdiagnozował błąd przepełnienia bufora. Jego rzeczywista przyczyna leżała zupełnie gdzie indziej, w nieprawidłowym zarządzaniu stosami elementów XML. Usterki tego rodzaju często umykają uwadze nawet doświadczonych deweloperów.
Jak to działa w praktyce – proces naprawczy
Działanie CodeMendera można podzielić na kilka etapów, które naśladują pracę ludzkiego eksperta do spraw bezpieczeństwa. Po pierwsze, agent analizuje zgłoszenie o luce, aby w pełni pojąć, na czym polega problem. Następnie, korzystając z zestawu narzędzi analitycznych, bada kod w poszukiwaniu przyczyny błędu. Gdy już ją zidentyfikuje, generuje propozycję poprawki.
W tym miejscu zaczyna się ciekawsza część. Proponowana łatka jest automatycznie weryfikowana. System sprawdza, czy poprawka faktycznie eliminuje zagrożenie, nie wprowadza nowych błędów (tak zwanej regresji) oraz czy jest zgodna ze stylistyką i standardami danego projektu. Jeśli testy zakończą się niepowodzeniem, agent samodzielnie koryguje swoje rozwiązanie i próbuje ponownie, aż do skutku. Dopiero gdy łatka jest w pełni poprawna i bezpieczna, zostaje przedstawiona człowiekowi do ostatecznej akceptacji. Cały proces jest więc transparentny i pozostaje pod kontrolą dewelopera.
Proaktywna tarcza – więcej niż łatanie dziur
CodeMender nie ogranicza się jedynie do reaktywnego naprawiania już istniejących błędów. Jego twórcy zaimplementowali w nim również funkcje proaktywne. Oznacza to, że agent potrafi przeglądać istniejący kod i go “utwardzać”. W praktyce przepisuje jego fragmenty w taki sposób, aby były bardziej odporne na przyszłe ataki. Jest to działanie zapobiegawcze, które przynosi długofalowe korzyści.
Dobrym przykładem jest jego praca nad popularną biblioteką do kompresji obrazów libwebp. Kilka lat temu luka we wspomnianej bibliotece została wykorzystana do przeprowadzenia poważnego ataku na urządzenia z systemem iOS. CodeMender został użyty do przepisania części biblioteki, dodając mechanizmy sprawdzania granic buforów. Dzięki temu cała klasa potencjalnych błędów związanych z przepełnieniem bufora została wyeliminowana na zawsze. Widać tutaj, że narzędzie może służyć jako swoisty środek zapobiegawczy dla kodu, uodparniając go na szeroki wachlarz przyszłych zagrożeń.
Maszyny biorą nadgodziny
Agent CodeMender sprawia, że przyszłość nie polega już na byciu mistrzem znajdowania igły w stogu siana. Stawia on na dostarczanie czystej kreatywności. Jeżeli do tej pory utrzymanie bezpieczeństwa aplikacji wymagało ciągłego oczekiwania na usterkę i gaszenia pożarów, teraz będziemy mieli maszynę, która projektuje systemy odporne na katastrofy. Nie będziemy musieli martwić się, co czai się w logach po zachodzie słońca. Otwiera to drogę do renesansu kreatywności w świecie oprogramowania, uwalniając nas od ciężaru codziennego dłubania. Wygląda na to, że nasza praca, w jej najbardziej żmudnym wymiarze, zostanie usprawniona, a to jest piękna wiadomość dla wszystkich, którzy zamiast łataniem aplikacji, wolą zajmować się ich tworzeniem.
Zanim jednak zaczniesz szukać przycisku “Pobierz”, musimy ostudzić zapał. Obecnie CodeMender to wewnętrzne narzędzie Google, które hartuje się w boju, pomagając krytycznym projektom open-source. Na publiczną premierę i dostęp dla każdego przyjdzie nam jeszcze poczekać.
Źródło: Blog Google DeepMind
