Предупреждение по безопасности SlickStack

На этой странице изложены проблемы безопасности SlickStack и объясняется, почему его стандартный дизайн может подвергать серверы риску выполнения удалённого кода и атак типа "человек посередине". Также приведены шаги по снижению рисков и более безопасные альтернативы.

Краткое изложение

  • Частые удалённые загрузки, запланированные как root через cron
  • Проверка SSL пропускается с помощью --no-check-certificate
  • Отсутствие контрольных сумм/подписей у загружаемых скриптов
  • Владение root и права доступа, применённые к загруженным скриптам

Доказательства: cron и права доступа

Загрузки через cron (каждые 3 часа и 47 минут)

47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/08-cron-half-daily https://slick.fyi/crons/08-cron-half-daily.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/09-cron-daily https://slick.fyi/crons/09-cron-daily.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/10-cron-half-weekly https://slick.fyi/crons/10-cron-half-weekly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/11-cron-weekly https://slick.fyi/crons/11-cron-weekly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/12-cron-half-monthly https://slick.fyi/crons/12-cron-half-monthly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/13-cron-monthly https://slick.fyi/crons/13-cron-monthly.txt' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'wget --no-check-certificate -q -4 -t 3 -T 30 -O /var/www/crons/14-cron-sometimes https://slick.fyi/crons/14-cron-sometimes.txt' > /dev/null 2>&1

Владение root и ограничительные права доступа (применялись неоднократно)

47 */3 * * * /bin/bash -c 'chown root:root /var/www/crons/*cron*' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'chown root:root /var/www/crons/custom/*cron*' > /dev/null 2>&1
47 */3 * * * /bin/bash -c 'chmod 0700 /var/www/crons/*cron*' > /dev/null 2>&1

Эта схема позволяет выполнять произвольный код с удалённого домена и увеличивает риск MITM-атак за счёт пропуска проверки сертификатов.

См. также коммит, в котором URL cron были переключены с CDN GitHub на slick.fyi: diff коммита.

Рекомендации по смягчению последствий

  1. Отключите cron-задания SlickStack и удалите загруженные скрипты из директорий cron.
  2. Аудит на предмет оставшихся ссылок на slick.fyi и подгрузок удаленных скриптов; заменить на версионированные артефакты с контрольной суммой или полностью удалить.
  3. Смените учётные данные и ключи, если SlickStack запускался с привилегиями root на ваших системах.
  4. Пересоздайте затронутые серверы при возможности, чтобы обеспечить чистое состояние.

Более безопасные альтернативы

Рассмотрите WordOps или другие инструменты, которые избегают удалённого выполнения от root и обеспечивают проверяемые, версионированные релизы с контрольными суммами/подписями.

Ссылки