Krytyczna luka w GitHub Copilot Chat, nazwana „CamoLeak”, umożliwiła atakującym dyskretną kradzież kodu źródłowego i sekretów z prywatnych repozytoriów przy użyciu wyrafinowanej techniki szybkiego wstrzykiwania. Luka, która uzyskała wynik CVSS na poziomie 9,6, została już załatana przez GitHub.
Jak zadziałał atak CamoLeak
Metoda ataku odkryta przez badacza bezpieczeństwa Omer Mayrazzaczęło się od ukrycia złośliwych instrukcji w opisie żądania ściągnięcia przy użyciu funkcji „niewidocznych komentarzy” GitHuba. Chociaż ta treść nie jest widoczna dla użytkowników w standardowym interfejsie, podczas generowania odpowiedzi Copilot Chat pozyskuje cały kontekst repozytorium i żądania ściągnięcia, w tym ukryte metadane. Luka została wywołana, gdy legalny programista mający dostęp do prywatnych repozytoriów zadał Copilot Chat pytanie dotyczące zhakowanego żądania ściągnięcia. Copilot, który działa z uprawnieniami użytkownika wysyłającego zapytanie, wykona następnie ukryty złośliwy monit. Dzięki temu osoba atakująca mogła wydać asystentowi AI polecenie wyszukania poufnych informacji, takich jak klucze API lub kod źródłowy, w dostępnych prywatnych repozytoriach ofiary. Aby wydobyć skradzione dane, w ataku wykorzystano własną usługę proxy obrazów „Camo” GitHuba. Zwykle polityka bezpieczeństwa treści (CSP) GitHuba zapobiega bezpośredniemu wyciekowi danych do domen zewnętrznych. Serwer proxy Camo został zaprojektowany do bezpiecznego kierowania żądań obrazów zewnętrznych, przepisywania adresów URL do pliku camo.githubusercontent.com adres z podpisem kryptograficznym. Atak CamoLeak ominął te zabezpieczenia, prosząc atakującego o utworzenie słownika wstępnie podpisanych adresów URL Camo. Każdy prawidłowy adres URL wskazywał na łagodny, niewidoczny obraz o wymiarach 1 x 1 piksel przechowywany na serwerze osoby atakującej, przy czym każdy unikalny adres URL reprezentuje pojedynczy znak danych (np. „A”, „B”, „1”, „;”). Wstrzyknięty monit poinstruował następnie Copilot, aby skonstruował odpowiedź, odwołując się do adresów URL wstępnie podpisanych obrazów w określonej kolejności, która kodowała skradzioną zawartość repozytorium. Kiedy przeglądarka ofiary renderowała dane wyjściowe Copilota, wysyłała serię żądań za pośrednictwem zaufanego serwera proxy Camo w celu pobrania każdego niewidocznego piksela. Sekwencja tych żądań otrzymana przez serwer atakującego skutecznie zrekonstruowała skradzione dane znak po znaku, a wszystko to bez wyświetlania użytkownikowi żadnych złośliwych treści ani wywoływania standardowych alertów bezpieczeństwa sieci.





