关于minimize attack surface
BY:刺
最近看到又有老外讲到这一点,先扯扯我的体会。
minimize attack surface就是要尽量减少可能被攻击的点。
从战略上来讲,就是解决或者隐藏自己的弱点。
要做到这点,首先需要的就是一个好的架构。
好的架构,可以节省很多事情,从服务器部署方式,网络拓跋结构,使用什么语言,使用什么平台框架,使用什么DB,ACL如何做,如果统一发布、升级、回滚、监控。
在设计一个系统之初,如果能够考虑到这些因素,对minimize attack surface是非常有帮助的,能够起到最佳的效果。
简单来说,比如流程上的逻辑漏洞(就是类似那种step1直接跳到step3的),可能就涉及到了页面控制、webflow等,如果采用spring框架,用配置文件来管理页面流程,就有了一个可控的途径。
虽然框架是死的,不能说用了spring就能完全杜绝这种漏洞;但人是活的,如果有良好的制度保证每个流程都是规范的,都有人review,那么就能把这种漏洞杜绝掉。
再比如说注射,如果数据持久层设计的好,那么注射的风险是可以在人的控制下杜绝掉的。比如使用ibatis,使用sqlmap等,有人来review是否有做变量绑定。
好的架构是缩小攻击面的第一步,那么有的系统已经设计好了,你很难去改变架构,这时候该怎么办呢?
失去最有效率的方法后,只能从别的方面补救。
我们需要尽可能利用科学的方法,做到没有遗漏攻击途径。
首先,要明确需要保护的是什么,什么才是最重要的东西。
这个最重要的东西不一定是BOSS说的,因为很多时候BOSS对于安全的嗅觉不够敏感,这时候就需要安全人员去引导,去访谈。
确定好要保护好的东西后,再分析数据流图。
可能很多人会觉得这样太麻烦了,但我这里讲的是一套科学的方法,而不是拍拍脑袋就能够得出结论的“经验流”,这样得出的结论才有信服力。所以,如果你想让你的老板觉得你足够严谨,那么还是老老实实的分析下数据流图吧!
根据数据流图,你就可以看到正常的、非正常的可以接触到你需要保护的资产的途径了。
你保护的资产可能是一个db,可能是一个vlan,也可能是你BOSS电脑里的小电影。根据不同的资产种类,和到达资产的途径,你就可以开始设计你的安全体系了。
首先根据你的分析结果,看看结合现在的架构,有什么是可以做到彻底杜绝的,有什么是可以慢慢控制收敛的。
比如你担心“员工电脑被木马控制“,那么是否可以让员工只拥有user权限,是否可以升级办公PC到vista,是否可以要求只能使用内部代理上网,是否可以限制办公环境的PC只能上指定网站,是否需要把客服部门单独孤立出来。
这些,就是可以让”员工电脑被木马控制“这一个威胁得到收敛的有效措施。
可以根据你设计的深度防御体系,从各个层面来加以保护。如果要我起个名字,我可以把这种多层次防护叫做: Defense-Stack
Defense-Stack 和 Attack-Surface 是可以正交的,正交的那些点,就是以后工作的焦点和重点。
最后需要注意的是,制度是需要有人维护的,加入了人的因素,才能真正做到minimize attack surface,让你的防御体系转起来。
想法都比较零碎,还没系统的整理过,先讲到这里,以后再补充。
送你几个字:日志超人