Androxgh0st нацелен на Laravel приложения?

Источник: «Laravel Security: Androxgh0st Malware Targeting Laravel apps?»
Что это за вредоносная программа, нацеленная на Laravel, и стоит ли вам беспокоиться о своих приложениях?

TL;DR → Ваше приложение уязвимо только в том случае, если ваш файл .env доступен через веб или у вас включён режим отладки, а RCE использует устаревшую версию Laravel.

Оглавление

За последние пару дней появилось множество новостных статей о новом вредоносном ПО "Androxgh0st", которое специально нацелено на Laravel приложения. Чтобы у людей не сложилось неверное представление, что "Laravel небезопасен" или что все Laravel приложения подвергаются атакам. Я решил выпустить специальное уведомление о безопасности Laravel, чтобы объяснить, что именно происходит с этим вредоносным ПО и какие условия должны быть выполнены, чтобы оно скомпрометировало ваш сайт.

Уязвимость

16 января 2024 года Агентство по кибербезопасности и защите инфраструктуры (CISA) выпустило сообщение под названием "Known Indicators of Compromise Associated with Androxgh0st Malware". Если вам интересны подробности, ознакомьтесь с рекомендацией, а здесь мы приведём краткое описание атаки:

  1. Вредоносная программа сканирует Laravel приложения в Интернете.
  2. Найдя Laravel приложение, он проверяет доступные файлы .env, чтобы украсть учётные данные и ключи API.
  3. Он также может отправить POST запрос с переменной 0x[], чтобы вызвать ошибку, и ищет сайты с включённым режимом отладки, который также может раскрыть учётные данные и ключи API.
  4. Если ему удастся получить доступ к ключу приложения, он попытается использовать известную уязвимость Remote Code Execution (RCE) в Laravel v5 с помощью cookie X-XSRF-TOKEN.

Основная цель — украсть учётные данные приложения и API-ключи, что позволит злоумышленникам получить доступ к любым сторонним сервисам, используемым вашим приложением, а вторичный бонус — получить RCE для выполнения вредоносного кода — обычно для запуска командной строки и создания ботнета.

Уязвимо ли ваше приложение

Чтобы стать уязвимым для этой вредоносной атаки, ваше приложение должно содержать одно из двух:

  1. Доступный файл .env. Это возможно только в том случае, если Laravel приложение было неправильно установлено в каталог полностью доступный из интернета (обычно в подкаталог), так что все файлы, включая .env, доступны из интернета, а не только каталог public/, как это предусмотрено по умолчанию.
  2. Включённый режим отладки. т.е. APP_DEBUG=true в вашем файле .env.

На этом этапе ваше приложение взломано, а учётные данные/ключи API украдены.

Затем вредоносная программа пытается использовать известную уязвимость RCE, чтобы получить удалённый доступ/шелл к серверу для дальнейшей компрометации. Они записали его как использующий RCE v5, однако любой другой RCE или слабые места в старых версиях Laravel могут быть также эффективно использованы.

Поэтому ваше приложение не уязвимо, если:

  1. .env недоступен.
  2. Режим отладки отключён.
  3. Laravel обновлён до v9 или v10.

Из того, что я видел, большинство Laravel приложений не уязвимы, особенно те, которые активно поддерживаются. В первую очередь это касается старых и заброшенных приложений, которые никогда не устанавливались и не управлялись должным образом.

Предотвращение уязвимости

Для обеспечения безопасности ваших Laravel приложений необходимо предпринять следующие шаги:

  1. Защитите ваш .env файл. Убедитесь, что ваш файл .env находится вне директории доступной на веб-сайте, или, если вы не можете этого сделать, настройте Nginx/Apache на блокировку доступа к dot-файлам (.*).
  2. Отключите режим отладки в приложениях, доступных в Интернете. Убедитесь, что режим отладки выключен в приложениях, доступных для всего мира, в том числе на отладочных и тестовых сайтах. В режиме отладки происходит утечка всевозможной конфиденциальной информации, а вызвать ошибки довольно просто.
  3. Следите за обновлениями Laravel. Убедитесь, что вы следите за релизами Laravel и всегда используете поддерживаемую версию. На данный момент это v10 для исправления ошибок и v9 для исправления безопасности. Всё, что старше (версии ниже 9), следует считать небезопасным и рискованным.

Если вы сделаете эти три вещи, то ваше приложение будет защищено от Androxgh0st и других вредоносных программ. Это стандартные пункты контрольного списка, но, как мы убедились на примере этой вредоносной программы, нацеленной на Laravel, напоминание всегда полезно!

Дополнительные материалы

Предыдущая Статья

Как убрать за собой в PHP

Следующая Статья

Именовать вещи всё ещё сложно?