Projekt Lighthouse zaatakowany: Operacja Purge 2

LBP Union i Project Lighthouse nie są powiązane z Sony Computer Entertainment ani ich filiami. Project Lighthouse to projekt inżynierii odwrotnej, realizowany w czystym pomieszczeniu, dotyczący nieistniejących już funkcji sieciowych LittleBigPlanet z PlayStation 3 i Vita. Nie rozpowszechniamy żadnego kodu zastrzeżonego. W żadnym wypadku nie popieramy ani nie wspieramy piractwa. Musisz posiadać własną kopię gry, aby móc korzystać z niestandardowych funkcji, gdy staną się one dostępne. Korzystając z tych funkcji, zwalniasz Sony Computer Entertainment (Sony), jak również wszystkich pracowników i agentów Sony, z wszelkiej odpowiedzialności, strat korporacyjnych i osobistych spowodowanych przez Ciebie lub inne osoby w wyniku korzystania z niestandardowych serwerów Lighthouse dla LittleBigPlanet.

Projekt Lighthouse, stworzony przez społeczność serwer LittleBigPlanet, jest rozwijany od października 2021 roku. Minęło trochę czasu, a my powoli zbliżamy się do naszego celu: publicznej bety. Chcemy, aby każdy mógł ponownie zagrać w LBP online na konsolach PlayStation 3 i Vita. Jednakże, pomimo tego, że zaimplementowaliśmy prawie wszystkie minimalne wymagane funkcje do publicznej bety, jest jeszcze jedna rzecz, która jest ważna, zanim przystąpimy do niej: testy wytrzymałościowe.

Porozmawiajmy o tym, jak nasz serwer testowy Project Lighthouse został zaatakowany (przez nas samych!) w Operacji Purge 2. Pamiętajcie, że będzie to trochę techniczne!

Union Space Corps (Korpus Kosmiczny Unii)

Wkrótce po tym, jak repozytorium Project Lighthouse zostało po raz pierwszy utworzone w październiku 2021 roku, prywatne beta testy serwera zostały oddane pod opiekę Union Space Corps. Ten oddział LBP Union zajmuje się testowaniem instancji Project Lighthouse, zwanej Beacon, oraz administrowaniem prywatnej społeczności beta.

Emblemat Korpusu Kosmicznego Unii

W związku z tym zespół przywódców USC, zwany Star Command, jest odpowiedzialny za sprowadzanie nowych beta testerów i przeprowadzanie testów oprogramowania serwera w poszukiwaniu błędów. Im więcej błędów znajdzie USC, tym większe możliwości będą mieli programiści w zabezpieczeniu Lighthouse przed awarią i atakiem. Jednym z najlepszych sposobów na to jest atak na własny serwer. Tak więc, dokładnie to zrobiliśmy!

Planowanie Operacji Purge 2

18 stycznia LBPU Lead Protector m88youngling wezwał Star Commandów, aby poprosić ich o rozpoczęcie planów stestów stresowych Beacon. Główny dowódca Gwiezdnego Dowództwa PorkchopGMX zdecydował, że Księżycowy Nowy Rok będzie datą testu wytrzymałościowego, znanego jako Operacja Purge 2. Misja została nazwana po poprzednim stress teście przeprowadzonym w zeszłym roku.

Zapowiedź do Operacji Purge 2

Operacja Purge 2 została zaplanowana jako test stresowy na samym Beaconie przez jego własnych użytkowników, który miał trwać 24 godziny. Każdy uczestnik beta testów został poinformowany o tym wcześniej i poproszony o zaplanowanie swojego ataku na Beacon. Może to być spamowanie poziomów, próba obejścia zabezpieczeń lub atak na sam serwer w ramach ataku DoS

Główny ochroniarz m88youngling przewidywał, że misja nie spowoduje przestoju serwera. Jednak zespół był zaskoczony wynikami.

Wykryto Przestój strony Internetowej

Test wytrzymałościowy rozpoczął się o północy, w niedzielę 22 stycznia. Pięć godzin później witryna została zaatakowana. Pierwszy atak trwał nieco ponad trzy i pół minuty. Później, w tej samej godzinie, strona znowu przestała działać na prawie pięć minut. Przerwy w działaniu stawały się coraz dłuższe. Najdłuższa przerwa miała miejsce o 9:52 PM EST, trwając 25 minut!

***    Beacon Outage Report: Core/Website    ***
*** Compiled at 11:59 PM EST Sun Jan 22 2023 ***

Filter: Date Ascending

[502 Bad Gateway] Jan 22, 2023 05:07:05 AM EST:  217 seconds
[502 Bad Gateway] Jan 22, 2023 05:53:22 AM EST:  293 seconds
[502 Bad Gateway] Jan 22, 2023 01:21:15 PM EST:  295 seconds
[502 Bad Gateway] Jan 22, 2023 05:36:56 PM EST:   10 minutes
[502 Bad Gateway] Jan 22, 2023 05:58:07 PM EST:   15 minutes
[502 Bad Gateway] Jan 22, 2023 06:23:46 PM EST:   10 minutes
[502 Bad Gateway] Jan 22, 2023 06:39:05 PM EST:   15 minutes
[502 Bad Gateway] Jan 22, 2023 06:59:25 PM EST:  299 seconds
[502 Bad Gateway] Jan 22, 2023 07:25:46 PM EST:   10 minutes
[502 Bad Gateway] Jan 22, 2023 08:18:27 PM EST:   15 minutes
[502 Bad Gateway] Jan 22, 2023 08:38:47 PM EST:  292 seconds
[502 Bad Gateway] Jan 22, 2023 08:49:37 PM EST:   10 minutes
[502 Bad Gateway] Jan 22, 2023 09:52:58 PM EST:   25 minutes

Powyższe dane zostały przekazane przez R&D Technika Koko.

Nie minęło wiele czasu, gdy sprawa została po raz pierwszy zgłoszona, a atakujący ogłosili swój sukces. W rzeczywistości był to niezwykle prosty skrypt stworzony przez Metraberryy, która posługuje się pseudonimem PSN Catgirlfishing.

Skrypt stworzony przez Metraberryy’a pozwala użytkownikowi na szybkie przesyłanie komentarzy na stronę w kółko. Kiedy wielu użytkowników uruchamia skrypt jednocześnie, powoduje on spowolnienie strony do tego stopnia, że nikt nie może uzyskać do niej dostępu. Jest to klasyczny atak typu distributed denial-of-service (DDoS). Jeśli jednak skrypt uruchamia tylko jeden użytkownik, jest on uważany jedynie za atak typu denial-of-service, a nie za atak rozproszony. Poniższy film pokazuje widok dziennika konsoli Project Lighthouse na atak.

Wraz z Hyperfied, Jazzkha11, Ratchet i Despicable_Kee oraz osobnym skryptem napisanym przez R&D Technician Koko, Metraberryy i spółka zdołali zgromadzić ponad dwie godziny przestoju strony pomiędzy 13 unikalnymi przerwami. Metraberryy zasłużyła sobie na awans na Geodetę USC za odkrycie luki!

Dlaczego Ograniczanie Prędkości nie Zadziałało?

Aby zapobiec takim atakom, Beacon posiada program dla całego serwera o nazwie Fail2Ban, oparty na Pythonie ogranicznik stawek i program zapobiegający włamaniom. Jeśli Fail2Ban ma zapobiegać atakom DDoS, dlaczego nie zadziałał w tym przypadku?

Odpowiedź leży w sposobie działania Fail2Ban i konkretnym błędzie Projektu Lighthouse, który należy naprawić. Ogranicznik prędkości działa poprzez monitorowanie plików dziennika serwera generowanych przez Project Lighthouse. Te pliki są takie jak te na powyższym filmie. Jak widać, dziennik na filmie generuje nową linię, aby dać administratorom znać, co robi serwer. W tym przypadku użytkownik przesyła setki komentarzy w szybkim tempie.

Część logów Beacona

Część logów Beacona

Jest kilka powodów dla których Fail2Ban może nie wyłapywać tych żądań. Jednym z nich może być to, że każda linia dziennika nie rejestruje adresu IP użytkownika. Oznacza to, że Fail2Ban nie kojarzy żądań z konkretnym użytkownikiem, co uniemożliwia mu ograniczanie stawek. Innym powodem może być to, że Fail2Ban szuka nieudanych żądań. Oznacza to, że jeśli żądanie wydaje się być udane, ogranicznik może uznać, że jest ono dopuszczalne.

Skutki Podatności na Zagrożenia

Dzięki temu testowi stresu dowiedzieliśmy się, że kluczowe jest znalezienie rozwiązania tego problemu przed publiczną wersją beta. W przeciwnym razie każdy mógłby zamienić swój komputer w maszynę do zabijania Latarni! W rzeczywistości, to właśnie zrobił Acidiclight, programista R&D LBP Union, aby sprawdzić działanie skryptów stworzonych przez Metraberryy’a i Koko.

Skrypt Acidiclighta, podobnie jak skrypt Koko, spamuje serwer, próbując uzyskać dostęp do nieistniejących stron internetowych, zamiast używać w kółko tego samego żądania. To dodatkowo dezorientuje ogranicznik prędkości. Żartobliwie określa ten skrypt jako „Nukehouse”. W rzeczywistości Acidiclight mówi, że „Nukehouse może obsłużyć 4000 jednoczesnych połączeń”. W nieodpowiednich rękach na wielu maszynach, skrypty takie jak ten mogą sprawić, że strona Project Lighthouse będzie nieczynna przez nieokreślony czas bez odpowiedniego zabezpieczenia.

Co z serwerem gier i API?

Strona internetowa nie jest jedyną rzeczą, o którą należy się martwić. Projekt Lighthouse składa się z trzech elementów: strony internetowej, serwera gier oraz API. Serwer gier obsługuje żądania użytkowników w grze. API zapewnia różne połączenia z i do serwera, które umożliwiają prawidłowe działanie niektórych funkcji.

Serwer gier i API wydają się być nienaruszone przez ataki podczas Operacji Purge 2. Tylko strona internetowa ucierpiała. Na razie to dobrze, ale w przyszłości konieczne będzie przeprowadzenie większej ilości testów wytrzymałościowych, aby odkryć luki w Project Lighthouse.

Śledzenie czasu przestoju

Dzięki sumiennym wysiłkom technika R&D Koko, byliśmy w stanie śledzić przestoje serwera Beacon za pomocą jej nowego narzędzia statusu. Możecie sami sprawdzić raporty z incydentów na naszej stronie statusu!

Koko napisał następującą zapowiedź pośmiertną dla Operacji Purge 2:

Postmortem: 22 stycznia 2023 roku – Przeprowadziliśmy test stresu na Beaconie, naszej oficjalnej instancji Lighthouse. Celem tego testu było umożliwienie beta testerom przyczynienia się do rozwoju Lighthouse poprzez umożliwienie im złamania i pen-testowania Beacon za pomocą metod, które im się podobają. Z trzech podstawowych usług Beacon najbardziej ucierpiała strona internetowa, która ucierpiała z powodu ponad 2 godzin przestoju i 13 unikalnych przestojów.

Co dalej?

Beacon potrzebuje więcej testów zanim będzie gotowy do publicznej bety. Odbyły się poważne dyskusje w kierownictwie na temat tego, jakie funkcje są potrzebne przed publicznymi testami. Jak się dowiedzieliśmy, poprawa ograniczania prędkości jest absolutną koniecznością dla serwera. W najbliższej przyszłości odbędą się kolejne testy wytrzymałościowe, w których będziemy eksperymentować z blokowaniem ataków takich jak ten.

Przyczyń się do Projektu Lighthouse!

Są różne sposoby, aby pomóc nam w Projekcie Lighthouse. Jeśli jesteś deweloperem, potrzebujemy twojej pomocy! Pomóż utorować drogę dla przyszłości LittleBigPlanet na PlayStation 3 i Vita, składając pull requesta w naszym repozytorium Github dla Projektu Lighthouse!

Potrzebujemy również pomocy w testowaniu serwera! Możesz zapisać się na listę oczekujących na prywatną betę, dołączając do naszego serwera Discord. Będziesz musiał przejść do kanału ustawień, aby zapisać się na listę oczekujących. W każdy weekend wybieramy nowych beta testerów z tej listy.

Dziękujemy za wsparcie! Nie możemy się doczekać kolejnych aktualizacji dotyczących Projektu Lighthouse!