Androxgh0st нацелен на Laravel приложения?
TL;DR → Ваше приложение уязвимо только в том случае, если ваш файл .env
доступен через веб или у вас включён режим отладки, а RCE использует устаревшую версию Laravel.
Оглавление
За последние пару дней появилось множество новостных статей о новом вредоносном ПО "Androxgh0st", которое специально нацелено на Laravel приложения. Чтобы у людей не сложилось неверное представление, что "Laravel небезопасен" или что все Laravel приложения подвергаются атакам. Я решил выпустить специальное уведомление о безопасности Laravel, чтобы объяснить, что именно происходит с этим вредоносным ПО и какие условия должны быть выполнены, чтобы оно скомпрометировало ваш сайт.
Уязвимость
16 января 2024 года Агентство по кибербезопасности и защите инфраструктуры (CISA) выпустило сообщение под названием "Known Indicators of Compromise Associated with Androxgh0st Malware". Если вам интересны подробности, ознакомьтесь с рекомендацией, а здесь мы приведём краткое описание атаки:
- Вредоносная программа сканирует Laravel приложения в Интернете.
- Найдя Laravel приложение, он проверяет доступные файлы
.env
, чтобы украсть учётные данные и ключи API. - Он также может отправить
POST
запрос с переменной0x[]
, чтобы вызвать ошибку, и ищет сайты с включённым режимом отладки, который также может раскрыть учётные данные и ключи API. - Если ему удастся получить доступ к ключу приложения, он попытается использовать известную уязвимость Remote Code Execution (RCE) в Laravel v5 с помощью cookie
X-XSRF-TOKEN
.
Основная цель — украсть учётные данные приложения и API-ключи, что позволит злоумышленникам получить доступ к любым сторонним сервисам, используемым вашим приложением, а вторичный бонус — получить RCE для выполнения вредоносного кода — обычно для запуска командной строки и создания ботнета.
Уязвимо ли ваше приложение
Чтобы стать уязвимым для этой вредоносной атаки, ваше приложение должно содержать одно из двух:
- Доступный файл
.env
. Это возможно только в том случае, если Laravel приложение было неправильно установлено в каталог полностью доступный из интернета (обычно в подкаталог), так что все файлы, включая.env
, доступны из интернета, а не только каталогpublic/
, как это предусмотрено по умолчанию. - Включённый режим отладки. т.е.
APP_DEBUG=true
в вашем файле.env
.
На этом этапе ваше приложение взломано, а учётные данные/ключи API украдены.
Затем вредоносная программа пытается использовать известную уязвимость RCE, чтобы получить удалённый доступ/шелл к серверу для дальнейшей компрометации. Они записали его как использующий RCE v5, однако любой другой RCE или слабые места в старых версиях Laravel могут быть также эффективно использованы.
Поэтому ваше приложение не уязвимо, если:
.env
недоступен.- Режим отладки отключён.
- Laravel обновлён до v9 или v10.
Из того, что я видел, большинство Laravel приложений не уязвимы, особенно те, которые активно поддерживаются. В первую очередь это касается старых и заброшенных приложений, которые никогда не устанавливались и не управлялись должным образом.
Предотвращение уязвимости
Для обеспечения безопасности ваших Laravel приложений необходимо предпринять следующие шаги:
- Защитите ваш
.env
файл. Убедитесь, что ваш файл.env
находится вне директории доступной на веб-сайте, или, если вы не можете этого сделать, настройте Nginx/Apache на блокировку доступа к dot-файлам (.*
). - Отключите режим отладки в приложениях, доступных в Интернете. Убедитесь, что режим отладки выключен в приложениях, доступных для всего мира, в том числе на отладочных и тестовых сайтах. В режиме отладки происходит утечка всевозможной конфиденциальной информации, а вызвать ошибки довольно просто.
- Следите за обновлениями Laravel. Убедитесь, что вы следите за релизами Laravel и всегда используете поддерживаемую версию. На данный момент это v10 для исправления ошибок и v9 для исправления безопасности. Всё, что старше (версии ниже 9), следует считать небезопасным и рискованным.
Если вы сделаете эти три вещи, то ваше приложение будет защищено от Androxgh0st и других вредоносных программ. Это стандартные пункты контрольного списка, но, как мы убедились на примере этой вредоносной программы, нацеленной на Laravel, напоминание всегда полезно!