Wprowadzenie
W szybko rozwijającym się świecie technologii, generatywna sztuczna inteligencja (GenAI) rewolucjonizuje sposób podejścia do tworzenia oprogramowania. Coraz więcej programistów wykorzystuje potencjał do zwiększenia produktywności i innowacyjności tej rewolucyjnej technologii w swojej pracy. Jednak wraz z wielką mocą przychodzi wielka odpowiedzialność. Przecięcie GenAI i kodowania to skomplikowana kwestia, wymagająca starannego balansu między wykorzystywaniem nowych możliwości, a zapewnieniem solidnych środków bezpieczeństwa. W tym artykule przyjrzymy się, dlaczego integracja narzędzi AI z zakresu bezpieczeństwa z asystentami kodowania GenAI jest nie tylko zalecana, co niezbędna.
Przyspieszone tempo rozwoju
Nadejście asysty AI w kodowaniu doprowadziło do bezprecedensowego poziomu produktywności w rozwoju oprogramowania. Programiści są teraz w stanie tworzyć kod szybciej niż kiedykolwiek, co stanowi ogromny krok w przód, który, choć imponujący, wprowadza nowe wyzwania. Po tym, jak narzędzie kodujące GenAI wygeneruje dane wyjściowe, programista może założyć, że są one bezpieczne i kontynuować pracę, aż do momentu uruchomienia testu bezpieczeństwa. W tym momencie, jeśli pojawi się luka w zabezpieczeniach, programista musi wrócić i naprawić swoją pracę. Takie mentalne przestawienie się zajmuje nie tylko dużo czasu (poprzednie badanie przeprowadzone przez Uniwersytet Kalifornijski w Irvine wykazało, że powrót do normalnego toku pracy po jej przerwaniu zajmuje nam 23 minuty), ale jest również wysoce nieefektywne, ponieważ praca musi zostać powtórzona.
Szybka produkcja kodu na dużą skalę, budzi też poważne obawy dotyczące bezpieczeństwa ze względu na luki w zabezpieczeniach, wynikające z braku synergii w rozwoju kodowania i zabezpieczeń.
Zbyt duże zaufanie
Jak wspomnieliśmy wyżej, nie chodzi tylko o ilość kodu, ale o luki w zabezpieczeniach fundamentów aplikacji, które są nieświadomie wprowadzane z prędkością.
Dlaczego uważamy, że GenAI nie powinna być uznawana za bezpieczną? Wskazuje na to kilka badań, np. to przeprowadzone przez naukowców z Uniwersytetu Stanforda w 2022 roku, które wykazało, że uczestnicy z dostępem do asystenta AI "napisali znacznie mniej bezpieczny kod" niż uczestnicy, którzy z niego nie korzystali. Niedawne badanie przeprowadzone przez naukowców z Cornell University dotyczące kwestii bezpieczeństwa i ich skutków - skoncentrowane na realnych scenariuszach - wykazało złożoność i wagę luk w zabezpieczeniach kodu generowanego przez sztuczną inteligencję. W szczególności:
- 35,8% fragmentów kodu wygenerowanych przez Copilota (narzędzie GenAI) zawiera podatności wymienione w liście CWE (ang. Common Weakness Enumeration), czyli liście stworzonej przez społeczność, na której znajdują się software’owe i hardware’owe typy podatności.
- W badaniu zidentyfikowano znaczną różnorodność słabych punktów bezpieczeństwa związanych z 42 różnymi CWE. Najczęściej spotykane luki to: CWE-78: OS Command Injection, CWE-330: Use of Insufficiently Random Values oraz CWE-703: Improper Check or Handling of Exceptional Conditions.
- Około 26% zidentyfikowanych CWE znajduje się na liście TOP 25 CWE w 2022 roku.
Ten sam artykuł badawczy Uniwersytetu Stanforda wspomniany powyżej wykazał również, że "uczestnicy, którym zapewniono dostęp do asystenta AI, byli bardziej skłonni wierzyć, że napisali bezpieczny kod niż ci bez dostępu do asystenta AI". Innymi słowy, oprócz większej liczby luk w zabezpieczeniach wbudowanych w fundamenty aplikacji, programiści są również bardziej pewni siebie, jeśli chodzi o wykorzystanie kodu. Wydaje się, że szybkość jest błędnie interpretowana jako umiejętność.
Kod GenAI to teraźniejszość, a nie przyszłość
Absolutnie nie jesteśmy przeciwni korzystania ze sztucznej inteligencji. Ankieta przeprowadzona w 2023 r. przez firmę Gartner wśród dyrektorów najwyższego szczebla pokazuje, że 70% organizacji jest na etapie badania i eksploracji GenAI, a 19% chce korzystać z GenAI i jest w trybie pilotażowym lub produkcyjnym. Jest więc jasne, że zmiana już nastąpiła. W rzeczywistości, również oferowane przez nas narzędzia z zakresu cyberbezpieczeństwa np. Snyk również korzysta z GenAI, ale w sposób, który nadaje priorytet bezpieczeństwu.
Rozwiązanie: podejście holistyczne
Wiemy, że tę technologię może świetnie wykorzystać, ale trzeba to zrobić w rozsądny i bezpieczny sposób. Narzędzie do kodowania GenAI można postrzegać jako niedoświadczonego programistę, który jest w stanie tworzyć kod, ale nie potrafi jeszcze wychwycić w nim pewnych niuansów, popełnia błędy i z pewnością nie jest przeszkolony w zakresie wykrywania zagrożeń bezpieczeństwa. Aby rozwiązać ten współczesny problem bezpieczeństwa, należy przyjąć holistyczne podejście DevSecOps i wziąć pod uwagę wiedzę zespołu, procesy i narzędzia.
Edukacja
Programiści muszą wiedzieć, jak działa GenAI, jego ograniczenia i związane z nim ryzyko. Istotne jest, aby zrozumieć, że model GenAI nie ma zdolności rozumowania i jest tylko tak dobry, jak dane, które są wykorzystywane do jego szkolenia. Tak więc każdy błąd w danych szkoleniowych zostanie powielony przez Gen AI.
Co ciekawe niektóre narzędzia GenAI mogą mieć wbudowane kontrole bezpieczeństwa, jednak bezpieczeństwo nie jest ich głównym celem, co oznacza, że nie muszą być wystarczające. Podobnie jak nie można polegać na zaporze systemu operacyjnego w celu zabezpieczenia całej organizacji biznesowej, nie można (i nie należy) polegać na asystencie kodowania jako podstawowej warstwie bezpieczeństwa.
Adaptacja procesów
Tradycyjne procesy i metody bezpieczeństwa są stosunkowo powolne i zakłócają przepływ pracy programistów. Jak być może wiesz, Snyk jest pionierskim orędownikiem i promotorem "shift-left" - przeprowadzania testów na wcześniejszym etapie cyklu życia oprogramowania. Jest ku temu dobry powód: programiści tworzą rzeczy, które zwiększają Twoje przychody, ale to bezpieczeństwo ratuje Twoją reputację i potencjalnie miliony lub miliardy, które mogą zostać utracone w wyniku błędu lub braku wiedzy. Właśnie dlatego potrzebujesz obu tych elementów, aby pracować w optymalnym tempie i przepływie. Bardzo często rozwijanie oprogramowania i bezpieczeństwo nie idą w parze. Programiści muszą działać szybko, a istniejące metody testowania stanowią wąskie gardło. Dlaczego zatem nie pozyskać mistrza bezpieczeństwa opartego na sztucznej inteligencji, który neutralizuje zagrożenia w momencie ich powstawania?
Narzędzia
Sztuczna inteligencja może wiązać się z ryzykiem, ale przynosi też ogromną produktywność. Podobnie jak używanie samochodu, które z jednej strony znacznie poprawia jakość naszego podróżowania, ale także niesie ze sobą ryzyko wypadku. Właśnie dlatego, zawsze wsiadając do samochodu zapinamy pasy bezpieczeństwa. Podobnie działa to wśród programistów, którzy muszą korzystać z narzędzi do kodowania GenAI z mocno zapiętym "pasem bezpieczeństwa". Badanie Uniwersytetu Stanforda wykazało, że pod względem bezpiecznego i niezabezpieczonego kodu stworzonego przez uczestników korzystających z GenAI, "87% bezpiecznych rozwiązań wymagało znacznych zmian ze strony użytkowników". Badanie sugeruje, że do zapewnienia bezpieczeństwa kodu wymagana jest "świadoma modyfikacja". Wnioski te zgodne z naszym przekonaniem, że programiści mogą polegać na ogromnych możliwościach GenAI, o ile kontrole bezpieczeństwa w czasie rzeczywistym są przeprowadzane na ich kodzie z dużą szybkością.
Snyk: Twój kompan bezpieczeństwa AI
Właśnie tutaj z pomocą przychodzi Snyk, który wykorzystuje wiedzę do zabezpieczania i poprawiania kodu z prędkością rozwoju wspomaganego przez sztuczną inteligencję. Rozumiejąc, że zabezpieczanie nowoczesnych aplikacji jest złożonym procesem, Snyk sprawdza kod w całej aplikacji w czasie rzeczywistym podczas pisania kodu, śledząc przepływy danych w celu zidentyfikowania tylko odpowiednich zależności i luk w zabezpieczeniach. Oprócz tego oprogramowanie skanuje pod kątem podatności dołączone przez developera biblioteki open-source'owe, których wykorzystanie stało się oczywiste przy pisaniu kodu aplikacji. Jeśli jest taka potrzeba, system generuje potencjalną poprawkę wersji biblioteki, w której wykryta podatność została załatana i ponownie sprawdza całą aplikację w celu przetestowania jej wpływu na inne komponenty. Wszystko to odbywa się w ciągu kilku sekund, a mowa tu tylko o integracji Snyka ze środowiskiem developerskim, która jest tylko ułamkiem jego możliwości. Dostępne i polecane są kilku-poziomowe zapory bezpieczeństwa, które dostarcza Snyk m. in. przy przesyłaniu kodu do repozytorium lub w potokach budujących i uruchamiających środowisko aplikacyjne.
Podsumowanie
GenAI niewątpliwie wpływa na rozwój oprogramowania, ale niesie ze sobą również znaczące problemy związane z bezpieczeństwem, których nie można przeoczyć. Jednak dzięki holistycznemu podejściu do programowania, obejmującego edukację, adaptację procesów i odpowiednie narzędzia, programiści mogą bezpiecznie i skutecznie wykorzystać moc GenAI.
Bądźcie z nami na bieżąco na naszym blogu, aby uzyskać więcej wglądu w nawigację po tym ekscytującym, lecz wymagającym, nowym froncie w rozwoju oprogramowania.