Nowości

Badacze łamią zabezpieczenia GitHub Copilot rozkładając szkodliwe polecenia na etapy

ProgramowaniePatryk Raba
Spis treści
  1. Jak działa atak
  2. Skala różnicy
  3. Znaczenie dla branży

Zespół badaczy z Alan Turing Institute w Londynie opisał technikę, która pozwala obejść zabezpieczenia GitHub Copilot bez ani jednego bezpośredniego szkodliwego pytania. Wystarczy poprosić asystenta o zbudowanie pozornie niewinnego narzędzia programistycznego krok po kroku, a na końcu ten sam model, który w czacie odmawia niemal zawsze, generuje szkodliwą treść za każdym razem.

Autorzy badania, Abhishek Kumar i Carsten Maple, nazwali technikę workflow-level jailbreak construction, czyli łamaniem zabezpieczeń na poziomie całego przepływu pracy. W przeciwieństwie do typowych jailbreaków nikt nie prosi modelu wprost o nic zabronionego i nikt nie podsuwa mu cudzego złośliwego kodu do wykonania. Model sam pisze zakazaną treść jako efekt uboczny zadania programistycznego, o którego usprawnienie go poproszono.

Jak działa atak

Operator zaczyna od poproszenia Copilota o zbudowanie potoku oceniającego, jak często inny model językowy, w tym wypadku Llama 3.1-8B, opiera się próbom złamania zabezpieczeń. Następnie prosi o poprawienie zbyt niskiego wyniku poprzez dodanie tak zwanych teaching shots, czyli przykładowych par pytanie-odpowiedź wpisanych bezpośrednio w kod jako dane treningowe. Pierwsze przykłady są niegroźne, kolejne stopniowo przechodzą w treści szkodliwe.

Gdy operator poprosi wprost o dodanie szkodliwych przykładów do zbioru, Copilot pisze niebezpieczne odpowiedzi samodzielnie, jako zwykły tekst umieszczony wewnątrz kodu. Model nie rozpoznaje tego jako odpowiedzi na szkodliwe pytanie, tylko jako fragment danych potrzebnych do działania programu, który sam wcześniej zaakceptował jako neutralne zadanie techniczne.

Wszystkie cztery testowane modele wygenerowały 816 z 816 niebezpiecznych odpowiedzi typu teaching shot, każde polecenie zakończyło się sukcesem, bez żadnej odmowy - z ustaleń badania Alan Turing Institute

Skala różnicy

Kontrast między pytaniem wprost a tą samą prośbą rozłożoną na etapy jest, według badaczy, bezprecedensowy. Zapytane bezpośrednio w czacie modele odmawiały niemal zawsze, tylko 8 razy na 816 prób udało się wymusić szkodliwą odpowiedź. W pełnym scenariuszu warsztatowym każda z 816 prób zakończyła się sukcesem atakującego, bez ani jednej odmowy.

To pokazuje, że filtry bezpieczeństwa obecnych asystentów kodujących analizują pojedyncze polecenia, a nie intencję stojącą za całą sekwencją działań w danej sesji. Wystarczyło rozbić jedno zakazane żądanie na kilka neutralnie wyglądających kroków, by całkowicie ominąć mechanizmy, które w prostym teście działały niemal bezbłędnie.

Znaczenie dla branży

Odkrycie dotyczy nie tylko GitHub Copilot, ale całej klasy asystentów kodujących opartych na modelach Anthropic i Google, ponieważ to właśnie te modele stoją za usługą Microsoftu. Badacze przekazali wyniki dostawcom modeli i środowisk programistycznych przed publikacją, zgodnie ze standardową procedurą odpowiedzialnego ujawniania luk.

Dla firm korzystających z asystentów kodujących w codziennej pracy oznacza to, że sama obecność filtra odmawiającego szkodliwych próśb w oknie czatu nie gwarantuje bezpieczeństwa całego środowiska. Ochrona musi obejmować analizę całej sesji roboczej, nie tylko pojedynczych wiadomości, co dziś nie jest standardem w większości narzędzi tego typu.

Odkrycie pojawia się kilka dni po opisaniu luki GhostApproval, która pozwalała asystentom kodującym wychodzić poza piaskownicę projektu przez symlinki. Oba przypadki pokazują, że bezpieczeństwo agentów programistycznych opartych na dużych modelach językowych wciąż opiera się na założeniach, które łatwo obejść przy odrobinie kreatywności w konstruowaniu poleceń.

Źródła: Your coding agent says no in chat and yes in the code (helpnetsecurity.com), GitHub Copilot Backends Produce Unsafe Code Outputs Through Workflow Jailbreaks (cyberpress.org)

Udostępnij: