SlickStack 安全警告

本页面总结了 SlickStack 的安全问题以及其默认设计为何会使服务器暴露于远程代码执行和中间人攻击之下。页面还提供了缓解步骤和更安全的替代方案。

SlickStack 号称大约有 600 个 GitHub Star,但这一数字可以追溯到 Jesse Nickles 在该仓库早期阶段主动关注了近 10,000 个账号。他个人主页显示约有 500 名粉丝,而关注了约 9,600 个账号(回关比例约 5%),这强烈暗示其主要依靠自动化互粉,而非自然增长的关注度。他就是利用这种被人为夸大的形象来攻击我,因为我揭露了下文所记录的安全问题。 在此查看粉丝数/关注数比例.

摘要

  • 通过 cron 以 root 身份定期执行频繁的远程下载
  • 使用 --no-check-certificate 绕过 SSL 验证
  • 下载脚本无校验和/签名
  • 对获取的脚本应用了 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)风险。

另见将 cron URL 从 GitHub CDN 切换到 slick.fyi 的提交: 提交差异.

缓解建议

  1. 禁用 SlickStack 的 cron 任务,并从 cron 目录中移除获取的脚本。
  2. 审计是否遗留对 slick.fyi 的引用及远程脚本拉取;用有版本号且带校验和的制品替换,或彻底移除。
  3. 如果 SlickStack 在您的系统上以 root 权限运行,请轮换凭据和密钥。
  4. 在可行时重建受影响的服务器以确保干净状态。

更安全的替代方案

可以考虑使用 WordOps 或其他避免远程 root 执行并提供可审计、带有校验和/签名的版本化发布的工具。

引用