如何防御供应链攻击
1.建立内部软件源或使用足够安全的软件源
建立自己的软件源,软件源限定官方来源、加密同步协议https,并对其进行定期的维护与测试,及时发现问题。每将一款软件加入到自己的软件源的时候都要进行完善的安全审查才可以。如果没有能力自建软件源,则使用其他厂商自建的软件源即可,这里推荐使用腾讯的软件源https://mirrors.cloud.tencent.com。
2.终端安全检测
在每个终端上都安装安全检测系统来检测程序与文件的行为。这种检测主要可以分静态检测与动态检测。
1.静态检测
主要对文件内容进行扫描,看其是否为木马文件,这种方式一般会用到特征码的对比。或者与正常文件的md5进行对比看是否被修改过。还有一种是利用机器学习模型来帮助进行识别。
2.动态监测
动态监测是对程序或者文件的行为进行检测,比如创建文件的行为或者添加用户的行为。
3.主动扫描
针对于脚本型的供应链攻击比如说恶意的python包,我们采用主动扫描的方式进行自我保护,具体行为如下:
1.下载代码静态扫描,类似主机安全检测的静态扫描,静态扫描的优点是:速度快,但误漏报相对较多。
2.系统沙盒动态检测,通过沙箱进行syscall和流量监控,优点是可以准确捕捉程序行为,不受代码混淆的影响。缺点是建设、运营成本高;对于存在对抗的恶意代码,系统沙箱无法正常触发其恶意代码逻辑,脚本类恶意代码,定位成本相对较高,以npm和pypi软件源检测为例,一个软件包一般由多个脚本组成,当沙箱捕获到一个外连请求,无法确认是哪个脚本发出的。
3.软件包信誉评估,根据各大软件交付平台的软件包基础信息进行信誉评估,包括上架时间,访问次数,代码大小,文件名、fork次数等等,建设信誉评估模型,对低信誉的包进行安全报警,优点是场景通用,速度快。
4.应用层沙盒动态检测,针对解释型语言做应用层沙盒动态检测,应用层沙盒的优点是可以轻松定制触发场景、模拟各种用户调用,触发潜藏的恶意行为,覆盖率高;近期我们上线了Python应用沙盒,以函数劫持方式监控pypi包的网络连接,命令执行和文件读写等行为,建立精确行为链模型,而且通过回溯的方式,可以清晰地知道异常行为产生于哪一个包里哪一个脚本的具体哪一行代码。
总结
应用层沙盒的检测成本较高,在使用docker集群作为隔离环境,应用的过程中,docker容器并不是想象中地那么稳定,做好异常监控,状态保存和重试机制很关键,且应用层沙盒属于动态检测,虽然准确精细,但是需要做多语言适配,还是有一定的工作量。 静态检测虽然成本较低,但对于未知的混淆、绕过手法非常容易出现漏报。