TeamQuest Blog

Githubowy Copilot zawodzi w 40 procentach przypadków

Githubowy Copilot zawodzi w 40 procentach przypadków

Marcin Sarna , 27.08.2021 r.

Jeżeli nie lubisz kodu zbuggowanego albo podatnego na exploity to lepiej nadzoruj tego „automatycznego programistę”.

Zawiedzione nadzieje?

Naukowcy wystawili Copilota od GitHuba na próbę pod względem bezpieczeństwa jakie on zapewnia (albo raczej, jak już wiemy: nie zapewnia). Stwierdzili oni mianowicie, że w około 40% przypadków kod generowany przez tego asystenta programowania jest w najlepszym wypadku błędny a w najgorszym -potencjalnie podatny na atak.

Copilot pojawił się budząc od razu, oprócz szeregu nadziei, także zrozumiałe zastrzeżenia, takie jak jego tendencja do generowania niepoprawnego kodu, skłonność do ujawniania tajemnic (np. haseł) i problemy z oceną licencji oprogramowania. Ale programistyczna sztuczna inteligencja, oparta na sieci neuronowej Codex firmy OpenAI, ma też inną wadę: podobnie jak ludzie, może generować kod, delikatnie mówiąc, daleki od doskonałości.

Nie ma w tym nic dziwnego, biorąc pod uwagę, że Copilot był szkolony na kodzie źródłowym z GitHuba a więc uczył się także na wszystkich zawartych w nim błędach. Mimo to pięciu specjalistów z New York University's Tandon School of Engineering uznało za konieczne zbadanie, w jakim stopniu Copilot spełnia wdzięcznie brzmiącą zasadę garbage in, garbage out.

W pracy opublikowanej w ArXiv Hammond Pearce, Baleegh Ahmad, Benjamin Tan, Brendan Dolan-Gavitt i Ramesh Karri stworzyli 89 scenariuszy, dla których Copilot miał tworzyć kod, w wyniku czego powstały 1692 programy, z których około 40% zawierało błędy lub wady konstrukcyjne, które mogą być wykorzystane przez atakującego.

A miało być tak pięknie

Copilot jest obecnie dostępny w ograniczonych testach beta jako rozszerzenie do Visual Studio Code Microsoftu. Pozwala programistom na opisanie funkcjonalności w linii komentarza, a następnie próbuje wygenerować kod, który zrobi to na co wskazuje ten opis dostarczony przez deweloperów. Na podstawie nazw zmiennych i funkcji oraz innych podpowiedzi potrafi również przewidzieć, co programista napisze w następnej kolejności.

Innymi słowy, jest to krok daleko poza zwykłe autocompletion i w pewnym sensie także krok naprzód w stosunku do „zwykłego” automatycznego programowania - jest to raczej interpretacja. Zamiast kończyć częściowo wpisaną linię na podstawie wąskiego zestawu możliwości, Copilot próbuje skonstruować całe bloki kodu, które działają zgodnie z opisem. Służy do tego model sztucznej inteligencji powiązany z GPT-3 OpenAI i wytrenowany na kodzie źródłowym pobranym z milionów publicznych repozytoriów GitHuba.

Przyczyn porażki jest kilka

Badacze zauważyli, że Copilot cierpi nie tylko z powodu błędów odziedziczonych z danych treningowych ale również dlatego, że uczył się na takich danych wejściowych, które już się zestarzały. Nie jest tajemnicą, że praktyki kodowania zmieniają się z czasem a tymczasem model AI był trenowany nawet na całkiem leciwych kodach źródłowych. Według autorów badania To, co jest najlepszą praktyką w momencie pisania może powoli stać się - w miarę ewolucji spojrzenia na cyberbezpieczeństwo - złym przyzwyczajeniem.

A może łatwiej byłoby po prostu dalej korzystać ze Stack Overflow?

Można też oczywiście uznać, że szklanka jest więcej niż w połowie pełna: fakt, że tylko 40% wygenerowanych przykładów wykazywało problemy związane z bezpieczeństwem oznacza, że większość sugestii Copilota powinna działać wystarczająco dobrze i „wystarczy” poprawiać 40% jego „produkcji” pod kątem bezpieczeństwa.

Jak dogadać się z koderem

Jednocześnie jednak kopiowanie i wklejanie przykładów kodu ze Stack Overflow wygląda na znacznie mniej ryzykowne niż proszenie Copilota o wskazówki. W pracy z 2019 roku analiza 72 483 fragmentów kodu C++ wykorzystanych ponownie w co najmniej jednym projekcie na GitHubie wykazała istnienie tylko 99 podatnych na ataki przykładów reprezentujących 31 różnych typów podatności.

Pomimo wszystkich niedoskonałości Copilota, naukowcy z NYU wydają się być przekonani, że nawet błędne systemy automatyczne mają już teraz swoją wartość.

Nie ma wątpliwości, że narzędzia nowej generacji typu GitHub Copilot zwiększą produktywność programistów. Jednakże programiści powinni pozostać czujni gdy używają Copilota.

Praca w IT, innymi słowy, może stać się łatwiejsza dzięki pomocy AI, ale ich obowiązki również rozszerzą się o pilnowanie tego AI. Mówiąc inaczej, jak to trzeba przypomnieć kierowcom Tesli: trzymaj ręce na kierownicy, gdy autopilot jest aktywny.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej