Współprogramiści AI być może nie spowodują tak wielu błędów, jak obawiano się PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Współprogramiści AI być może nie zgłoszą tylu błędów, ile się obawiali

Modele uczenia maszynowego, które zasilają narzędzia nowej generacji do uzupełniania kodu, takie jak GitHub Copilot, mogą pomóc programistom w pisaniu bardziej funkcjonalnego kodu bez zmniejszania jego bezpieczeństwa.

To wstępny wynik, choć niewielkiej, 58-osobowej ankiety przeprowadzonej przez grupę informatyków z Uniwersytetu Nowojorskiego.

In papier dystrybuowane za pośrednictwem ArXiv, Gustavo Sandoval, Hammond Pearce, Teo Nys, Ramesh Karri, Brendan Dolan-Gavitt i Siddharth Garg opowiadają, jak przetestowali bezpieczeństwo kodu źródłowego stworzonego za pomocą dużych modeli językowych (LLM).

LLM, takie jak rodzina OpenAI GPT, zostały przeszkolone na ogromnych ilościach publicznych danych tekstowych lub publicznym kodzie źródłowym w przypadku Codexu OpenAI, potomka GPT i fundamentu GitHub's Copilot. Jako takie, mogą powielać błędy popełnione w przeszłości przez ludzkich programistów, ilustrując maksymę „śmieci na zewnątrz, śmieci na zewnątrz”. Istniała obawa, że ​​narzędzia te będą zwracać uwagę i sugerować zły kod programistom, którzy wstawią go do swoich projektów.

Co więcej, bezpieczeństwo kodu może być kontekstowe: kod, który jest bezpieczny w izolacji, może być niepewny, gdy jest wykonywany w określonej kolejności za pomocą innego oprogramowania. Tak więc te narzędzia do autouzupełniania mogą oferować sugestie kodu, które same w sobie są w porządku, ale połączone z innym kodem, są teraz podatne na ataki lub po prostu zepsute. To powiedziawszy, okazuje się, że te narzędzia mogą w rzeczywistości nie pogorszyć ludzi w programowaniu.

W pewnym sensie badacze sami gasili ogień. Mniej więcej rok temu dwóch tych samych informatyków napisało artykuł zatytułowany „Śpiąc przy klawiaturze? Ocena bezpieczeństwa wkładów kodu GitHub Copilot.” Ta praca została znaleziona o procent 40 Dane wyjściowe z Copilot zawierały potencjalnie możliwe do wykorzystania słabości (CWE).

„Różnica między tymi dwoma artykułami polega na tym, że „Śpiąc przy klawiaturze” dotyczyło w pełni zautomatyzowanego generowania kodu (brak człowieka w pętli) i nie mieliśmy ludzkich użytkowników, z którymi moglibyśmy się porównywać, więc nie mogliśmy nic powiedzieć o tym, jak bezpieczeństwo Copilot w porównaniu z bezpieczeństwem kodu napisanego przez człowieka” – powiedział Brendan Dolan-Gavitt, współautor obu artykułów i adiunkt na wydziale informatyki i inżynierii na NYU Tandon, w e-mailu do Rejestr.

„Artykuł dotyczący badania użytkowników próbuje bezpośrednio rozwiązać te brakujące elementy, zapewniając połowie użytkowników pomoc od Codexu (modelu, który obsługuje Copilot), a drugiej połowie samodzielne napisanie kodu. Jest jednak również węższy niż „Śpiąc przy klawiaturze”: przyjrzeliśmy się tylko jednemu zadaniu i jednemu językowi (pisanie połączonej listy w C).”

W najnowszym raporcie „Implikacje bezpieczeństwa dla asystentów kodu dużego języka: badanie użytkowników” nieco zróżnicowana grupa badaczy z NYU przyznaje, że poprzednie prace nie przedstawiają realistycznego modelowania użycia narzędzi opartych na LLM, takich jak Copilot.

„Po pierwsze, te badania zakładają, że cały kod jest automatycznie generowany przez LLM (nazwiemy to trybem autopilota)” – wyjaśniają w swoim artykule głupcy.

„W praktyce LLM do uzupełniania kodu pomaga programistom w zgłaszaniu sugestii, które zdecydują się zaakceptować, edytować lub odrzucić. Oznacza to, że podczas gdy programiści podatni na automatyzację mogą naiwnie akceptować uzupełnianie błędów, inni programiści mogą tworzyć mniej wadliwy kod, wykorzystując zaoszczędzony czas na naprawę błędów”.

Po drugie, zauważają, że chociaż wykazano, że LLM generują błędny kod, ludzie też to robią. Błędy w danych treningowych LLM pochodziły od ludzi.

Dlatego zamiast oceniać sam w sobie błąd kodu generowanego przez LLM, postanowili porównać, w jaki sposób kod stworzony przez programistów wspomaganych przez modele uczenia maszynowego różni się od kodu stworzonego przez programowanie pracujące samodzielnie.

Informatycy z NYU zrekrutowali 58 uczestników ankiety – studentów studiów licencjackich i magisterskich na kursach tworzenia oprogramowania – i podzielili ich na grupę kontrolną, która pracowała bez sugestii, oraz grupę z asystą, która miała dostęp do niestandardowego systemu sugestii zbudowanego przy użyciu OpenAI Kodeks API. Wykorzystali również model Codex do stworzenia 30 rozwiązań dla danych problemów programistycznych jako punktu porównawczego. Ta grupa Autopilotów funkcjonowała głównie jako druga grupa kontrolna.

Zarówno grupy Assisted, jak i Control mogły korzystać z zasobów internetowych, takich jak Google i Stack Overflow, ale nie prosić innych o pomoc. Praca została wykonana w Visual Studio Code w kontenerze internetowym zbudowanym z open source Anubis.

Uczestnicy zostali poproszeni o wypełnienie programu listy zakupów przy użyciu języka programowania C, ponieważ „programistom jest łatwo nieumyślnie wyrazić podatne wzorce projektowe w C” i ponieważ użyty łańcuch narzędzi kompilatora C nie sprawdza błędów w tym samym stopniu współczesne języki, takie jak Go i Rust, robią.

Kiedy badacze ręcznie przeanalizowali kod stworzony przez grupy Kontroli i Asystenta, odkryli, że w przeciwieństwie do wcześniejszych prac, sugestie dotyczące kodu AI nie pogorszyły sytuacji.

Wygląda przejrzyście, ale są szczegóły

„[Nie] znaleźliśmy żadnych dowodów sugerujących, że pomoc Codexu zwiększa częstość występowania błędów bezpieczeństwa”, stwierdza artykuł, jednocześnie zauważając, że niewielka wielkość próby w badaniu oznacza, że ​​dalsze badania są uzasadnione. „Wręcz przeciwnie, istnieją dowody sugerujące, że CWE/LoC [linie kodu] zmniejszają się przy pomocy Codexu”.

„Trudno podsumować to z dużą statystyczną pewnością” – powiedział Siddharth Garg, badacz cyberbezpieczeństwa i profesor nadzwyczajny na wydziale inżynierii na NYU Tandon, w rozmowie telefonicznej z Rejestr.

Trudno to stwierdzić z dużą statystyczną pewnością

Niemniej jednak, powiedział: „Dane sugerują, że użytkownicy Copilot nie byli w gorszej sytuacji”.

Dolan-Gavitt jest podobnie ostrożny w stosunku do wyników.

„Obecna analiza wyników naszych badań użytkowników nie wykazała żadnych statystycznie istotnych różnic – wciąż to analizujemy, w tym jakościowo, więc nie wyciągałbym z tego mocnych wniosków, zwłaszcza że było to małe badanie (łącznie 58 użytkowników) i wszyscy użytkownicy byli studentami, a nie profesjonalnymi programistami” – powiedział.

„Mimo to możemy powiedzieć, że w przypadku tych użytkowników w tym zadaniu wpływ na bezpieczeństwo korzystania z pomocy AI prawdopodobnie nie był duży: gdyby miał bardzo duży wpływ, zauważylibyśmy większą różnicę między tymi dwiema grupami. Przeprowadzamy teraz trochę więcej analizy statystycznej, aby to precyzyjnie określić”.

Poza tym pojawiły się inne spostrzeżenia. Jednym z nich jest to, że uczestnicy grupy Asystentów byli bardziej produktywni, generując więcej linijek kodu i wykonując większą część funkcji w zadaniu.

„Użytkownicy z grupy Assisted przeszli więcej testów funkcjonalnych i stworzyli bardziej funkcjonalny kod” – powiedział Garg, dodając, że tego rodzaju wyniki mogą pomóc firmom poszukującym narzędzi do kodowania wspomagającego zdecydować, czy je wdrożyć.

Innym jest to, że naukowcy byli w stanie odróżnić dane wyjściowe wytwarzane przez grupy Control, Assisted i Autopilot, co może pomóc dotyczy o oszustwach związanych ze sztuczną inteligencją w środowisku edukacyjnym.

Cwaniacy odkryli również, że narzędzia AI należy rozpatrywać w kontekście błędu użytkownika. „Użytkownicy dostarczają monity, które mogą zawierać błędy, akceptują monity zawierające błędy, które trafiają do 'ukończonych' programów, a także akceptują błędy, które są później usuwane” — czytamy w artykule. „W niektórych przypadkach użytkownicy otrzymują więcej błędów, niż sugerował model!”

Spodziewaj się dalszych prac w tym kierunku. ®

Znak czasu:

Więcej z Rejestr