LBP Union и Проект Lighthouse не связаны с Sony Interactive Entertainment или их дочерними компаниями. Проект Lighthouse это проект обратного проектирования “чистой комнаты” ныне несуществующих онлайн-функций PlayStation 3 и Vita LittleBigPlanet. Проприетарный код не распространяется. Ни при каких обстоятельствах мы не одобряем и не поддерживаем пиратство. У вас должна быть собственная копия игры, чтобы использовать пользовательские функции, как только они станут доступны. При использовании этих функций вы освобождаете Sony Interactive Entertainment (Sony), а также любых сотрудников или агентов Sony от любой ответственности, корпоративных или личных убытков, причинённых вам или другим лицам в результате использования пользовательских серверов Lighthouse для LittleBigPlanet.
Проект Lighthouse, настраиваемый сообществом сервер LittleBigPlanet, находится в разработке с октября 2021 года. Прошло некоторое время, и мы постепенно приближаемся к нашей цели: общедоступной бета-версии. Мы хотим, чтобы все снова могли играть в LBP онлайн на консолях PlayStation 3 и Vita. Однако, несмотря на то, что реализованы почти все минимально необходимые функции для общедоступной бета-версии, есть ещё одна важная вещь, прежде чем мы начнём: стресс-тестирование.
Давайте поговорим о том, как наш тестовый сервер Проект Lighthouse был атакован (нами!) во время Операции Очищения 2. Имейте в виду, что это станет немного техническим!
Космический Корпус Союза
Вскоре после того, как репозиторий Проекта Lighthouse был впервые создан в октябре 2021 года, частное бета-тестирование сервера было поручено Космическому Корпусу Союза. Это подразделение LBP Union занимается тестированием экземпляра Проекта Lighthouse под названием Beacon и администрированием частного бета-сообщества.

Таким образом, руководящая группа ККС под названием Звёздная Команда отвечает за привлечение новых бета-тестеров и проведение тестов серверного программного обеспечения для поиска ошибок. Чем больше ошибок сможет найти ККС, тем больше у разработчиков будет возможностей защитить Lighthouse от сбоев и атак. Один из лучших способов сделать это атаковать собственный сервер. Итак, именно это мы и сделали!
Планирование Операции Очищения 2
18 января Ведущий Защитник LBPU m88youngling обратился к Звёздной Команде с просьбой начать планы стресс-тестирования Beacon. Главный Звёздный Командир PorkchopGMX решил, что Лунный Новый год станет датой стресс-теста, известного как Операция Очищение 2. Миссия была названа в честь предыдущего стресс-теста, проведённого в прошлом году.

Планировалось, что Операция Очищение 2 станет стресс-тестом самого Beacon его собственными пользователями, который продлится 24 часа. Все участники бета-тестирования были заранее проинформированы о том, что это происходит, и их попросили спланировать атаку на Beacon. Это могут быть заспамленные уровни, попытка обойти функции безопасности или атака на сам сервер в виде атаки типа отказ в обслуживании.
Ведущий Защитник m88youngling предсказал, что миссия не приведёт к бездействию сервера. Тем не менее, команда была удивлена результатами.
Обнаружено Бездействие Веб-сайта
Стресс-тест начался в полночь воскресенья 22 января. Через пять часов сайт подвергся атаке. Первая атака длилась чуть более трёх с половиной минут. Позже в тот же час веб-сайт снова отключился почти на пять минут. Отключения продолжали становиться всё дольше и дольше. Самое продолжительное отключение произошло в 21:52 по восточному стандартному времени и продолжалось 25 минут!
*** 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
Приведённые выше данные были предоставлены Техником R&D Koko.
Вскоре о проблеме было впервые сообщено, и злоумышленники объявили об успехе. На самом деле, это был чрезвычайно простой скрипт, созданный Metraberryy, который известен под псевдонимом Catgirlfishing в PSN.
Скрипт, созданный Metraberryy, позволяет пользователю быстро загружать комментарии на сайт снова и снова. Когда несколько пользователей запускают скрипт одновременно, это приводит к тому, что веб-сайт замедляется настолько, что никто не может получить к нему доступ. Это классическая распределённая атака типа отказа в обслуживании (DDoS). Однако, если только один пользователь запускает скрипт, это считается атакой типа отказа в обслуживании, а не распределённой атакой. В следующем видеоролике показано, как выглядит атака в журнале консоли Проекта Lighthouse.
Почему Не Работает Ограничение Трафика?
Для предотвращения подобных атак у Beacon есть серверная программа под названием Fail2Ban, программа ограничения трафика и предотвращения вторжений на основе Python. Если Fail2Ban предназначен для предотвращения DDoS-атак, почему здесь он не сработал?
Ответ заключается в том, как работает Fail2Ban, и в конкретном сбое Проект Lighthouse, который необходимо исправить. Ограничитель трафика работает, отслеживая файлы журнала сервера, созданные Проектом Lighthouse. Эти файлы точно такие же, как в видео выше. Как видите, в журнале на видео создаётся новая строка, чтобы администраторы знали, что делает сервер. В этом случае пользователь отправляет сотни комментариев в быстрой последовательности.

Есть несколько причин, по которым Fail2Ban может не перехватывать эти запросы. Одной из проблем может быть то, что каждая строка журнала не записывает IP-адрес пользователя. Это означает, что Fail2Ban не связывает запросы с конкретным пользователем, не позволяя ему ограничивать их трафик. Другая причина может заключаться в том, что Fail2Ban ищет неудачные запросы. Это означает, что если запрос выполнен успешно, ограничитель трафика может счесть его приемлемым.
Последствия Уязвимости
Из-за этого стресс-теста мы узнали, что очень важно найти решение проблемы до публичного бета-тестирования. В противном случае любой мог бы превратить свой компьютер в машину для уничтожения Lighthouse-ов! Фактически, это именно то, что сделал Разработчик LBP Union R&D Acidiclight, чтобы проверить последствия скриптов созданных Metraberryy и Koko.
Скрипт Acidiclight-а, похожий на скрипт Koko, рассылает спам серверу, пытаясь получить доступ к несуществующим веб-страницам, вместо того, чтобы использовать один и тот же запрос снова и снова. Это ещё больше сбивает с толку ограничитель трафика. Он в шутку называет скрипт ‘Nukehouse’. Фактически, Acidiclight говорит, что “Nukehouse может обрабатывать 4000 одновременных подключений”. Попав в чужие руки на нескольких машинах, подобные скрипты могут вывести веб-сайт Проекта Lighthouse из строя на неопределённое время без надлежащей защиты.
Что Насчёт Игрового Сервера и API?
Веб-сайт не единственное, о чём нужно беспокоиться. Проект Lighthouse раздёлен на три компонента: веб-сайт, игровой сервер и API. Игровой сервер это то, что обрабатывает запросы пользователей в игре. API обеспечивает различные соединения с сервером и с него, что позволяет определённым функциям работать должным образом.
Похоже, что игровой сервер и API не пострадали от атак во время Операции Очищения 2. Бездействовал только веб-сайт. На данный момент это хорошо, но в будущем потребуется больше стресс-тестов для обнаружения уязвимостей в Проекте Lighthouse.
Отслеживание Бездействия
Благодаря усердным усилиям Техника R&D Koko, мы смогли отслеживать время бездействия сервера Beacon с помощью её нового инструмента состояния. Вы можете сами ознакомиться с отчётами об инцидентах на нашей странице статуса!
Koko написала следующее посмертное объявление для Операции Очищения 2:
Postmortem: 22 января, 2023 г. – мы провели стресс-тестирование Beacon, нашего официального экземпляра Lighthouse. Цель этого стресс-теста состояла в том, чтобы позволить бета-тестерам внести свой вклад в разработку Lighthouse, позволив им взламывать и тестировать Beacon методами, которые им нравятся. Из трёх основных сервисов Beacon наиболее сильно пострадал веб-сайт, который простоял более 2 часов и имел 13 уникальных отключений.
Что Дальше?
Beacon нуждается в дополнительном тестировании, прежде чем он будет готов к общедоступной бета-версии. Руководители серьёзно обсуждали, какие функции необходимы перед публичным тестированием. Как мы узнали, улучшение ограничения трафика является абсолютной необходимостью для сервера. В ближайшем будущем будут проведены дополнительные стресс-тесты, которые будут экспериментировать с блокированием подобных атак.
Внесите Свой Вклад в Проект Lighthouse!
Есть разные способы помочь нам с Проектом Lighthouse. Если вы разработчик, нам нужна ваша помощь! Помогите проложить путь к будущему LittleBigPlanet на PlayStation 3 и Vita, отправив pull request в нашем репозитории Github для Проекта Lighthouse!
Нам также нужна помощь в тестировании сервера! Вы можете подписаться на закрытый список ожидания бета-тестирования, присоединившись в наш Discord сервер. Вам нужно будет перейти на канал настроек, чтобы включить список ожидания. Каждые выходные мы выбираем новых бета-тестеров из этого списка ожидания.
Спасибо за поддержку! Нам не терпится представить вам новые новости о Проекте Lighthouse!