Nasza strona używa cookies. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

Kod źródłowy GitHuba rzekomo wyciekł i pojawił się… na GitHubie

Pewien użytkownik opublikował wiadomość o tym, jakoby z GitHuba wyciekł jego kod źródłowy, który potem się z resztą tam pojawił. Nat Friedman, CEO GitHuba, rzuca jednak inne światło na sprawę.
Kod źródłowy GitHuba rzekomo wyciekł i pojawił się… na GitHubie

Użytkownik Resynth1943, developer i twórca tekstów o prywatności, ogłosił, że z GitHuba wyciekł kod źródłowy portalu, który pojawił się następnie… na GitHubie — a dokładniej w repozytorium DMCA. Nie wszystko wygląda jednak tak źle, jak mogłoby się wydawać, ponieważ incydent ten nie do końca jest źródłem wycieku / ataku hakerskiego. 

Dla wyjaśnienia: repozytorium DMCA zawiera kod, który został usunięty/ukryty ze względu na skargę wskazującą na łamanie Digital Millennium Copyright Act. Pojawiło się tam m.in. youtube-dl, o którym jakiś czas temu było głośno


Wyjaśnienie

Niedługo po tym obwieszczeniu (które stało się dosyć dużym newsem) do akcji wkroczył Nat Friedman, CEO GitHuba i wyjaśnił kilka rzeczy. Według niego to co pojawiło się w repo DMCA to kod należący do GitHub Enterprise Server, a to nie to samo, co strona internetowa. Mają one co prawda trochę wspólnego kodu, ale różnica między nimi jest dosyć spora. Najważniejszą częścią jest tutaj jednak to, że GitHuba nikt nie zaatakował.

Zarówno kod GitHuba, jak i GitHub Enterprise Server nie jest otwarty, dlatego jest on regularnie dostarczany do klientów w okrojonej i zamaskowanej wersji. Friedman twierdzi, że GitHub kilka miesięcy temu przez przypadek dostarczył pewnym klientom pełną wersję kodu GHES — i to jest właśnie kod, który pojawił się w repozytorium DMCA. Żeby tego jeszcze było mało to ktoś stworzył commita, podszywając się pod Friedmana. Na to jednak też istnieje wyjaśnienie… 


Tak było.png


Podróbka commita

Friedman twierdzi w swoim oświadczeniu, że Git pozwala na bardzo łatwe udawanie commitów, ale nie zdradza szczegółów tego, w jaki sposób ktoś dodał niezweryfikowany commit z jego konta. CEO GitHuba jest jednak świadomy podrobionego commita i mówi, że powód jest bardziej oczywisty, niż wszystkim się wydaje. Zobaczmy, jak mogło to wyglądać.

Sam commit został dokonany przez użytkownika Nat. Nie został on jednak określony jako „verified”, czyli nie było autoryzacji kluczem GPG Friedmana. Tak naprawdę jakikolwiek użytkownik mógł się nazwać Nat, bo w user.name przy commitach można wpisać dosłownie wszystko. Rodzi to pewien problem — jak jakiś przypadkowy użytkownik mógł dokonać commita z ważnym kodem źródłowym w oficjalnym repozytorium? Odpowiedź też nie jest tutaj jednak taka zła. 

Robiąc commita, każdy użytkownik dostaje hash, który danego commita reprezentuje, dzięki czemu można go potem zlokalizować w drzewie. GitHub, którego częścią jest aplikacja webowa zapewniająca wgląd w fundamentalną strukturę Gita w przeglądarce, przechowuje wszystkie forki repozytorium Git w jednym repo, chociaż wygląda to inaczej w URL. 

Aby więc stworzyć iluzję tego, że Nat Friedman dokonał commita z kodem GitHuba, jakiś użytkownik musiał najpierw sklonować repo DMCA i po stworzeniu jego forka mógł zacommitować „wyciek”, imitując dane Nata Friedmana. Sprawiłoby to, że dostalibyśmy forka z podrobionym commitem.

Nadal nie wyglądałoby to jednak dobrze — w końcu adres URL nadal wskazywałby zarówno na fork, jak i na prawdziwą nazwę użytkownika i konto GitHub „atakującego”. Ale pod maską zarówno parent, jak i fork są częścią tego samego repozytorium na podstawowym poziomie Gita.

Dlatego wszystkie commity, stworzone w forkach, są też dostępne z poziomu głównego repozytorium. Wystarczy w URL zastąpić użytkownika, do którego należy repo, a commit istniejący tylko w forku nadal będzie prezentowany przez nowy URL.

Na koniec ktoś musiał rozpocząć od https://github.com/github/dmca, a następnie dodać tree/$hash na końcu, gdzie $hash był hashem commitu dokonanego na ich własnym forku. W rezultacie powstał adres URL, który wyglądał na commit Nat Friedmana do własnego oficjalnego repozytorium DMCA GitHuba.

Pomyłka, czy celowe działanie? Tego nie wiadomo, ale Friedman obiecuje, że wszystko się wyjaśni.


Podsumowanie

Plusem jest tutaj to, że nie było ataku hakerskiego. Jeżeli chodzi o podrobiony commit to jest to spora luka, która otwiera drzwi dla potencjalnych atakujących. Należałoby tutaj zatem coś poprawić.

Nie wszystko jest zatem w porządku, w przeciwieństwie do tego, co mówi Friedman.

Rozpocznij dyskusję

Lubisz dzielić się wiedzą i chcesz zostać autorem?

Podziel się wiedzą z 160 tysiącami naszych czytelników

Dowiedz się więcej