今天下午,友商的同学突然发了个确认信息过来,让我们确认一下服务器的归属。然后就抛出了个大新闻:我司服务器存在问题,所有文件都可以任意访问。根据对方反映的信息,确认是之前玩票性质的一个项目:avalon 出了问题。https://github.com/ejoy/avalon/blob/master/lualib/staticfile.lua#L12-L17 这里没有做输入检查,就直接使用 io.open 了。

另外一个地方,是因为这个项目的玩票性质,所以 SA 同学随便找台空的服务器丢上去了,而且还用了根用户,于是所有文件都泄露了。。。本来这个也问题不大,avalon 的代码本来就是开源的,但是这台空闲服务器是测试服务器之一,于是上面还有几个私钥。。。简直是墨菲定律的绝佳例子!友商的原话:遍历了 ssh 私钥、hosts 文件、passwd 文件、shadow 文件、crontab 文件、iptables 文件、bash_history 文件等。触目惊心 =_=    

经过这次事件后,希望能够对 docker 的推广起到推动作用。通过虚拟化实现应用间隔离,web 应用输入检查要做好,外网服务器不存放私钥。还有相应的一套管控体系,包括用户登录行为检测,登录 ip 异常告警(非内网 ip 登录)等等。。另外就是,其实没必要自己撸代码啊,撸也只要撸业务层就好,静态文件交给 nginx 啊喂