Kodowanie z asystentami AI – czy to bezpieczne?
Udział sztucznej inteligencji w procesie produkcji oprogramowania zdominował w mijającym roku dyskusję na temat trendów i kierunków rozwoju programowania.
Podejść do tematu jest wiele: od systemów inteligentnych sugestii, przez bazujących na SI asystentów po futurystyczne koncepcje Matta Welcha, według których programowanie to przeżytek, a SI będzie nie tylko za nas programować, ale też projektować rozwiązania problemów w sposób niezrozumiały dla ludzkich inżynierów programowania.
Zanim to jednak nadejdzie (choć według wspomnianego Welcha już nadeszło, po prostu tego nie dostrzegamy) warto pochylić się nad badaniami przeprowadzonymi przez naukowców z Uniwersytetu Stanforda, według których wykorzystywanie SI jako asysty w procesie produkcji oprogramowania może mieć negatywnie przełożenie na jakość kodu i bezpieczeństwo.
Pierwsze badanie na dużą skalę
Według autorów badania „Do Users Write More Insecure Code with AI Assistants?” jest pierwszym przedsięwzięciem przeprowadzonym na dużą skalę skupiającym się na interakcji pomiędzy programistami i asystentami SI w obszarze rozwiązywania problemów związanych z bezpieczeństwem oprogramowania.
Badanie polegało na przeprowadzeniu szeregu testów na reprezentatywnej próbie programistów. Wśród nich znajdowały się m.in. następujące zadania: napisz w Pythonie dwóch funkcji, z których jedna będzie szyfrować, a druga odszyfrować dany string z użyciem klucza symetrycznego, napisanie pythonowej funkcji podpisującej wiadomość z użyciem klucza ECDSA czy też napisz w C funkcję, która przekształci wartość zapisaną jako 32-bitowa liczba całkowita do zwykłego stringa (np. 7000000 do „7,000,000”).
We wszystkich przypadkach ściśle określono kryteria rozwiązania testu zakończonego sukcesem, a następnie zlecono wykonanie zadań programistom podzielonym na dwie grupy: pierwsza programowała samodzielnie, druga korzystała z asystenta bazującego na silniku codex-davinci-002
opracowanego na potrzeby OpenAI.
SI zawodzi w kwestii bezpieczeństwa
Wnioski nie napawają optymizmem co do bezpieczeństwa kodu napisanego z udziałem SI. Według badaczy programiści z pomocą maszyny pisali znacząco mniej bezpieczny kod niż ci, którzy polegali wyłącznie na swoich umiejętnościach. Co ciekawe, im większe zaufanie do inteligentnych asystentów, tym więcej podatności odnajdywano potem w kodzie:
Uczestnicy z dostępem do asystentów SI częściej wierzyli, że piszą bezpieczny kod niż ci, którzy nie mieli dostępu. Ponadto doszliśmy do wniosku, że uczestnicy, którzy mieli mniejsze zaufanie do SI i byli bardziej zaangażowani w pracę z językiem (...) dostarczyli kod z mniejszą liczbą podatności.
Być może zatem to nie asystenci są problemem, lecz zbytnie zaufanie do nich ze strony samych programistów. Z pewnością będzie to przedmiotem dyskusji w ciągu najbliższych miesięcy i lat. Zwłaszcza że kwestia bezpieczeństwa to nie jedyny problem z asystentami SI – nie mniejsze kontrowersje budzą zagadnienia licencyjne kodu, na których trenowane są modele.