一、背景
汤青松,北京趣加科技有限公司安全工程师,实体书《PHPWEB安全开发实战》作者,擅长企业安全建设,SDL安全建设。PHPCon第八届PHP开发者大会分享《PHP安全编码规范与审查》,NSC第七届中国网络安全大会分享《PHP反序列化漏洞分析实践》看雪安全开发者峰会担任Web安全训练营讲师
大家好,非常高兴给大家分享《代码安全体系建设》议题,我是汤青松,目前在SDL方面做的比较多的。今天讲的这个话题其实和SDL有很大关系的。我这次分享这个话题的其实就是SDL当中的一部分。很多同学如果在甲方也会去做SDL当中的一些工作,所以我希望我这次分享的内容对大家有所帮助。
这次分享的话题是SDL当中的一部分,但是它不完全是SDL因为我主要还是聚焦于在安全向左移的这样一个概念当中。所以今天分享的话题主要是聚焦于这个代码风险管理。那在这个代码安全当中可能有哪些风险点了?那它可能会包含技术方面的工作和非技术方面的工作,比如说管理工作以及这个学习方面的一些事情都会有讲解到。
1.1内容概要
我今天讲的这个话题,主要还是在于意识、技术、监督和学习四个方面怎么去开展我们的安全工作?这里我做了一张脑图,那在脑图当中,我觉得从这个淡淡安全体系当中,我们有四个层面了可以去做的,比如说这个安全培训。
在安全培训当中,我们第一点要告诉他有哪些风险点,第二个就是我们得教他怎么去避坑,那么教他避坑了,我们就可以直接拿到他这个仓库的代码,然后我们自己先去分析一遍,分析完之后,然后在培训的时候我们就可以告诉他你这个代码了哪里会存在一些风险点,把这个问题告诉他。
第三个就是我们告诉你了,你不能怎么去写,你应该怎么去写。那么我们制定完这一套规则了,我们不可能说其实人工去盯着您得有一套监督机制。这里我也会给大家去讲一下,怎么去结合semgrep和GitLab做一个钩子事件,实时检测这个代码当中的一些风险点。
那么第四个就是我们在上线前肯定会有安全测试。在安全测试当中可能会有哪些疑难点?那今天我大致会提到这样几个问题点。那首先我们来说一下安全培训我们怎么去做。那安全培训我相信很多做技术的同学,他可能就是自己的技术了是比较好的,但是让他去给别人讲怎么去踩坑以及一些案例,她不一定是他擅长的。
我们先来说一下我是如何理解保障整个应用安全的,我认为它不是由某一个维度是否做得足够好来衡量,它是一个综合的方面。也是多个团队配合起来的一个工作,我们作为安全人员在这里要负主要责任。
我们要想尽一切办法去和开发和测试一起保障保证应用安全。我们首先给这些开发人员建立这样一个安全意识,那告诉他了互联网当中会有很多的一些漏洞,那这些漏洞了有哪些危害?那首先在他开发的时候,他就会想到不能让这个应用有漏洞。
第二个让他有意识之后,要教他怎么去避开这些坑,不要让他知道有这些安全风险起来,他不知道怎么去处理,然后还是踩坑了。那么这个时候我们安全人员自己在这个技术方面了,要有一定的这个能力。
第三个在监督层面。如果说你告诉开发人员互联网当中有很多漏洞,也教他去避坑了。但是没有监督很多人了他可能并不一定按照你的要求去做,所以这个时候您得有一定的监督机制。
第四点是是通过事件驱动,我相信作为甲方,你肯定还会遇到一些安全事件去驱动。比如说我们公司是做游戏的,还时不时会有一些拖机挂或者等等一些外挂这些方面的问题。那么我们会把这些事情给整理起来,整理成案例,再给这些开发人员去学习。
二、安全培训
所以这里我讲几个非技术性的一个话题,就是我们怎么去给这些开发做培训。那首先我觉得做培训有这几个方面,我可以给大家一些参考意见。比如说首次的这个培训我们讲什么话题?怎么避免一次性把这个话讲了,那么我下个季度还讲不讲?是不是我一次性了就把话讲完了我觉得都是有一些技巧的,就是你第一次该讲什么东西。
第二个说我们培训了是,一次培训了,我们就把所有的这个开发组成员了都叫上。那么比如说几十号人,上百人都叫上,然后我们自己在一个舞台上去讲还是这个小组去讲了。那这里头我是推荐大家小组讲,那一会我会讲到为什么去小组讲。
第三个就是案例就地取材案例了,我们一定要在每次培训之前把他那个代码打开去看一下,拿着他的代码给她们做一完培训。然后接着了我们就开展我们这次要培训的一个话题,那这样的一个形式。
2.1首次基础培训
首次基础培训了我们可以给他讲哪些东西了?我觉得你首先可以给他讲一下你在这个甲方安全当中了,你是怎么去给他们做代码审计的,你是怎么去做安全的?这个其实是她比较关心的,让他了解你的工作。那你平时会