侧边栏壁纸
博主头像
HHShare 博主等级

行动起来,活在当下

  • 累计撰写 302 篇文章
  • 累计创建 36 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

115 家超市冷柜被远程除霜,有人搭了台假冷柜等下一波

晖晖分享
2026-11-08 / 0 评论 / 0 点赞 / 0 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我删除。

11 月 2 日,星期一,凌晨。

比利时、荷兰、瑞典、卢森堡、爱尔兰、爱沙尼亚,至少 115 家超市的冷柜和冻柜,温度被人从后台调到了 50 度以上。

瑞典 ICA Nära 的店长 Mats Olsson 早上开门,先看到地上一摊水,冻柜停在 55 度。

几个小时后,一个叫 Coldframe 的开源项目在 Hacker News 上被顶到 193 分,40 条评论。

它假扮的就是被端掉的那台设备:丹麦 Danfoss 的 AK-SM 800A,一间门店里所有冷柜的总控。

△两轮攻击:10 月中旬法国数百家门店,11 月 2 日六国 115 家以上

总控台上那个除霜键,被人远程按下了

除霜本身是个正常功能,定时把蒸发器上的冰化掉。

攻击者做的事很简单:夜里把这个动作在每家店都触发一遍,货就全废了。

比利时制冷商 Sabcobel 的负责人 Stephan Moelans 说,这轮用的还是上个月法国那边同一个漏洞。

软件打个补丁只能算兜底,冰箱还得做物理改造。最省事的办法,是让这些设备只走一条安全的连接。

△The Register 11 月 2 日的报道:比利时、爱尔兰、卢森堡、瑞典的门店在周一早上集体解冻

法国那一轮在 10 月中旬,几百家门店中招。

Carrefour、Coopérative U、Intermarché、Monoprix 都在名单上,CERT-FR 在 10 月 12 日发了预警。

漏洞不是新的。

Claroty 的 Team82 在 8 月 9 日就公开了 AK-SM 800A 的一串问题,「当日口令」能直接绕过登录,还有一个命令注入能拿到 shell。

Danfoss 已经在新固件里修掉。当时用 Censys 一扫,2765 台控制台就这么挂在公网上。

修完三个月,10 月照样被端。至少有一部分门店跑的还是旧固件。

第一波之后,论坛里还有人怀疑是某家厂商大范围推固件推岔了,不是被黑。第二波一来,这种说法就站不住了。

这些事的根子在门店这一头。一台冷柜要打补丁、要防火墙、要 VPN,这些活是厂商和安装商的老本行,超市经理不会碰。

Coldframe 假扮的是 Danfoss 那台 800A

整个项目是一个 Python 文件,标准库之外零依赖,MIT 协议。

作者是个匿名账号 hedgerow-dev,11 月 5 日把仓库放上 GitHub,三天挂到 33 星。

它准备了两个身份。

一个是 danfoss,冒充 AK-SM 800A,端出 StoreView 登录页、XML 接口和 HTTPS。

至于 dixell,冒充的是 Copeland 旗下的 XWEB 500,专门接公开利用脚本常打的那几个 CGI 路径。

像不像,拼的是指纹。nginx 的 server 头连同头的顺序照着真机抄,页面标题写 Danfoss StoreView,只开 TLS 1.2。

证书主题 CN=DanfossSM800A,由同名自签机构签发,每次构建重新生成一对密钥。

△两个身份各自假扮谁、能从哪认出来

真机的 favicon 和固件里的 index.html 是厂商的东西,作者没往仓库里放,但留了两个环境变量。

私人部署时用 FAVICON_FILE 和 INDEX_FILE 指过去,页面就能按字节吐出来,连 Last-Modified 和 ETag 都对得上。

弱口令放人进去,进去只有一排假按钮

超市那台设备的出厂口令 Supervisor / 12345,在这套假货里照样能登。

XWEB 那边是 Admin / Admin,连失败次数都照着做:五分钟内五次,账号锁住。

登进去是一间假店,几排标着货名的冷柜,每个上面一个除霜键。

按下去,日志里多一条 control 事件。温度不会动,背后什么都没有。

认路这件事更能说明问题。

公开利用脚本打到跟前,请求会被打上 exploit 标记,README 里列了七个。

Danfoss 那边四个:路径穿越(CVE-2023-25914)、命令注入(CVE-2023-25915)、nginx 头覆写(CVE-2025-41452)、当日口令绕过(CVE-2025-41450)。

Dixell 那边三个:XWEB 500 的上传与命令路径(CVE-2021-45420),XWEB Pro 的 auth_mode 绕过(CVE-2026-25085)。

每个连接落一行 JSON,来源 IP、端口、协议、试过的口令、有没有对上 exploit。

附带一个 summary.py,把一天的日志搓成简报,顺手洗掉攻击者塞进来的终端转义字符。

谁是真冲着除霜键来的,谁只是顺手扫一遍,日志里见真章。

Modbus 那个口默认是关的。真机的 Modbus 只跟自己柜子上的控制器讲话,开着反而露怯。

想钓工业扫描器再单独打开,里面放了假的柜温、设定值和除霜寄存器。

这套逻辑挪到家里也成立:出厂口令没改、管理页直接挂在公网的路由器和 NAS,跟超市这台冷柜是一回事。

挂上去:一行命令,或者一个容器

本地最省事,一行命令就起来。

PERSONA=danfoss HTTP_PORT=8080 python3 -I honeypot.py

想让它真被扫到,就得放到公网。作者给的是一条加满限制的 podman 命令。

只读根文件系统、丢掉全部 capability、no-new-privileges、userns=auto。

内存压到 128m,进程上限 512,日志 10m 滚动,宿主 80 和 443 映射进容器的 8080 和 8443。

这里的关键在 rootful。rootless 的端口转发会把来源地址改写成同一个内网 IP,一晚上几十个攻击者,日志里就成了一个人。

△三种部署方式:本地跑、加固容器、云上一键

再省事的办法是 cloud-init.yaml,开机器时直接贴进 User data,四美元的机器两分钟起一个。

作者提了两句。云厂商防火墙里只放行这台假设备真会开的端口,SSH 只对自己的地址开。

出站全掐掉,它不用往外连。

代价:骗得过扫描器,骗不过读代码的人

README 里自己招了四条。

交互浅,登进去只有一个仪表盘和几条 XML 命令,不是完整的 StoreView。

代码公开,谁都能对着源码认出来,部署时最好改掉页面文案、布局和证书主题。

真机的静态路径和部分 XML 返回在公开资料里查不到,缺的地方用了看着像的值。

还有一条更要命,机房 IP 本身就是破绽,真控制器蹲在门店的宽带后面。

Hacker News 上也有人说,与其搭蜜罐,不如先把冷柜从公网上摘下来。

作者回得不硬:同意,那才是真解,蜜罐只是趁人还在外头转的时候,看清来的是谁。

评论区里还有一段不太上台面的插曲。有人当场指出 Show HN 的文案是 AI 写的,「读起来像呕吐物」。

作者认了,说自己写急了。

△HN 讨论:第一条评论就在质疑,靠 Shodan 数据搭出来的蜜罐未必骗得过真人

项目地址:https://github.com/hedgerow-dev/coldframe

0

评论区