01 JAN

聊一聊应用安全那点事

从我最开始学习安全接触的就是 web 安全相关,当时的自己完全不明白学习的意义是什么,只知道学习了 web 安全可以去网络上寻找存在漏洞的应用,拿到 webshell、然后提升权限到系统最高权限,这一个流程下来基本就达到了顶峰,在突破的时候是最有成就感的,我相信有非常多的同行是在这样的情况下入行的。web 安全就是应用安全中的一部分。

说到应用,什么是应用?百度百科上说的一句 适应需要,以供使用 ,在现在的互联网时代,所有的软件都可以叫应用,他们的产生是为了满足我们的日常需求,方便我们的衣食住行,多年前是 PC 互联网的时代,近几年进入了移动互联网时代,未来会是物联网时代、人工智能的时代 等等,随着科技的进步,安全的需求也在不断发生着变化,近几年做渗透的朋友越来越感觉到难做,web 的安全漏洞越来越少,这可以说是时代的进步、安全意识的提升、代码安全性增加、应用主战场的变化 等等一系列因素的结果,这对于安全行业来说是好事,整体安全性在不断提升,侧面说明我们安全从业人员的价值体现。

对于应用产生的整个生命周期来讲,考虑安全越早越好,早期的应用主要是为了实现功能、快速上线,互联网行业迭代更新非常快,时间就是竞争力,只有在业务因为安全问题而出现重大损失的时候才专门去招人或者购买安全服务进行及时止损,在上线之前没有考虑安全,带洞上线,从而导致大量的用户隐私泄漏,最终的受害者还是使用应用的用户,经过多年安全人员的努力,企业对于安全也慢慢重视起来,那么如何做好应用安全呢?

SDLC 大家都听过,翻译过来就是软件开发生命周期,是为了规范开发的流程、提升开发效率、增强代码质量,做到闭环,SDLC 包含五个阶段:需求分析、设计、编码、测试、发布,如图:

但这里并没有把安全考虑进去,我们是否可以将安全贯穿到整个软件开发的生命周期呢?如何做?请看下图:

在需求阶段做风险评估,提前将风险识别出来,作为安全的需求提交给研发,不只是功能上的,还包括一些架构不合理的地方,这对安全人员对能力要求是非常高的;

在设计阶段做威胁建模、安全参与进行设计 review,指出设计存在的安全威胁,共同完成安全的设计方案;

在开发阶段,要进行代码 review,提前做代码审计通过人工或者自动化的方式,这里对安全专业人才的需求也很高;

在测试阶段进行安全评估,也就是安全测试或者渗透测试,通过黑盒的方式找出安全 bug,在上线之前解决掉,可以用功能测试的小伙伴进行合作或者其他的方式;

在发布阶段要对主机进行安全检查,升级最新补丁、关闭无用端口等,将攻击面降到最低;

上线之后,通过开始 SRC 平台接收来自白帽子的漏洞提交,补充安全测试不足,做到闭环;

经过上面的一系列操作之后,可以将大部分的安全问题扼杀在上线之前,从而大大降低应用的安全风险,但是完全这么做是需要大量的人力和时间的,对于大部分企业来说是不可能完全做到的,因为可能因为流程的复杂度或者人员的能力问题,造成项目的延期、错事商机,具体做不做以及怎么做,需要上层领导的支持,不同公司的情况不同,需要制定的流程也不一样,落地情况也不同。

理想的情况下是完全按照上面的流程做每一个项目,这是多少安全负责人的理想,可是往往投入产出比不那么好看,得不到领导的支持,参与流程的同事也很抵触这么做,毕竟增加工作量多事,不是所有人都愿意做的,所以作为安全人员并不能强迫大家都按照你的要求来做,就需要平衡我们与开发人员之间的关系,在不增加别人工作量的同时,提升软件安全性,在规范流程的同时,提升自动化能力,将研发当作我们的用户,我们是为业务服务的,而不是监管机构。

相互指责的文化加剧了安全问题

将人视为一个薄弱环节,创造一个员工害怕因安全问题而受到惩罚的环境,不是一个经营公司的好方法。然而,一些组织机构采取极端措施来惩罚诈骗受害者。苏格兰一家媒体公司解雇并起诉了该公司的一名员工,原因是她卷入了一场网络钓鱼事件,并向冒充该公司总经理要求其进行付款的骗子支付了近 20 万英镑 (合 25 万美元) 。Brian Krebs 最近发布了员工因未能通过网络钓鱼模拟测试而被解雇的例子。

这种相互指责的文化只会让员工在出现问题时不愿意站出来…… 而这将数据置于风险之中。

毕马威英国 (KPMG UK) 首席信息官Mark Parr表示:


处理信息的人不可能是薄弱环节。我希望人们感到放松,如果他们犯了错误,他们可以告诉我。这一切都是为了建立信任,让我的同事们感到我是真的在支持他们,而不是在事情出错的时候指责他们的人。



为了帮助建立这种安全与员工之间的信任,毕马威启动了一项计划,表彰那些提出公司内部安全问题的员工。Parr 表示,自己希望发展这种文化,如果出现问题或发生了什么事,人们乐意告诉他们或向服务台报告。毕马威有一个内部系统可以识别员工,其他员工也能看到。如果有人找到自己说,‘我注意到了这个,这有点问题,’那么 Parr 就会通知他们的直属领导让他站出来。

英国电商 The Hut Group (THG) 全球安全业务主管Graeme Park警告说,由于企业和个人系统,应用程序和设备之间的联系——无论是否通过自带设备 (Bring Your Own Device, BYOD),人们通过工作电脑查看个人邮件或者相反,或是出于商业目的使用个人 SaaS 账户——糟糕的个人安全意识是导致组织机构被攻击的另一个因素。这取决于企业将控制与教育相结合,而不是诉诸于恐吓策略。这是再教育的一部分,让安全平易近人,而不是对员工暴跳如雷。

Park 举了一个例子,他认为网络代理经常被 “大器小用”,一个更好的方法是记录一切包括警告,如果用户访问了违反政策的网站,应该要求他们提供为什么需要访问该页面的理由。


你在向他们传授安全知识的同时,也在进行控制,让他们思考并让他们证明这一点。如果人们这样做了,他们会有意识地思考他们所做的是否正确,是否安全,是否符合政策。他们也知道在那个阶段是被审核的,所以这实际上会让他们考虑的更多。这赋予了他们更多的权力。



良好的安全文化是什么样的

如果互相指责的文化不好,那么良好的安全文化应该是什么样的呢?毕马威的 Parr 表示:良好的安全文化应该是,人们本能地理解与日常活动相关的风险,知道并有信心能够减轻或处理这种风险。我们必须摒弃 “一切都很好,CISO会为我们处理好一切” 的想法。

以下是 Parr 和 Park 认为首席信息安全官们为建立一个强大的安全文化需要努力的四个关键方面。

1. 让安全易于理解

自从 Parr 成为首席信息安全官一年多前,毕马威英国一直在改变其公司内部安全文化和教育方法的进程中,确保该公司在 27 个不同地方的 16000 名英国员工能够达到一致的安全意识水平。Parr 表示:良好的(文化)是指人们对信息安全感到自信和舒适,而不觉得这是一门科学或一个魔法。

建立安全意识文化的一个关键是使其与受众产生共鸣,因此毕马威的安全教育内容已被尽可能用通俗易懂的语言来表达,并精心设计了适用于员工的场景。Parr表示,他想让人们像对待工作上的信息安全一样对待家庭信息安全,通过设定真实的场景,给人们明确的方向是关键。


无论你是引导客户走到会议室的前台员工,或者你负责提供审计,或者你在一个技术团队正在帮助客户解决一个技术问题,语言是相通的,他们都能以同样的方式理解信息安全。



让人们了解这些基础知识会让终端用户更容易理解,反过来他们也会更认真地对待企业的信息安全,因为他们想象得出犯错的后果。Parr 表示,责任感是成功的关键。如果人们觉得自己明白为什么要对数据的处理和管理负责,那么事情就成功了一半。

2. 提供持续的意识训练

作为这种文化变革的一部分,毕马威已经从实时演示和评估转向为 Parr 所描述的通过活动、培训、视频和播客的 “一种持续的意识训练”。 看着 PPT 上的幻灯片,尽可能快地浏览一遍,最后回答20个问题并希望你能通过考试,这并不能向我证明什么。这只是显示了你从幻灯片中获取信息的能力。让人们明白有一些规则和指导是可用的,知道他们能做什么,不能做什么,以及他们应该扮演什么角色。

Parr 首先发布了一份非常简单易懂的政策文件。这份文件被浓缩成一页纸的标题,以便在人们有时间阅读的时候抓住他们的注意力。然后发展成一个他们在上班的火车上可能会看的三分钟短视频。这是为了保持活动的节奏,这样人们就会一直被提醒。

虽然评估这种文化带来的影响可能很困难,但 Parr 与公司的学习和发展团队合作,围绕公司有多少名员工在收听播客、观看视频和参与到团队正在制作的其他安全教育中,创建了参与度指标。这些指标可以用来衡量安全教育材料是否能引起员工的共鸣。


我还需要不断思考与员工互动的新方式。不仅要让他们认清安全现实,还要让他们更多地参与到我想实现的目标中来。



为了让更多的人参与到安全教育中,组织机构的领导层会定期发送信息鼓励人们观看、阅读和聆听安全材料。“业务信息安全人员” 作为信息安全主题方面的专家,负责生产活动。他们鼓励员工更直接地参与其中。

3. 在影子IT问题上与员工合作

指责员工使用未经批准的应用程序 (称为影子 IT),与因安全问题而解雇他们一样,都是不明智的行为。影子IT问题长期以来一直存在。 它背后的驱动因素实际上是IT系统的广泛存在;无论是软件还是硬件,无论是在家里还是在其他任何地方。

Park 认为,人们并不坏,他们没有试图利用影子 IT 来故意规避公司政策或公司安全措施。一般情况下,他们只是想更好,更快,更轻松地完成工作做。这对 IT 和安全工作来说是一种失败;IT 和安全部门可以从拦路虎变成推动者,确保人们拥有完成工作所需的工具。

Park 表示,影子 IT 可以是 SaaS 服务或未经批准的桌面应用程序,到他所说的 “更小但有同样影响力的影子IT们”,比如集成到 Slack 或 JIRA、浏览器扩展,甚至是公司网络上类似亚马逊 ALEXA 的设备。无论影子 IT 以何种形式出现,IT 和安全部门都需要更开放地接受它。因为如果人们担心违反公司政策会受到惩罚,他们永远不会告诉你他们在做什么。


我们需要更明智地对待这个问题。不管怎样,它总会发生。如果使用这些外部工具带来风险是有限的——比方说,有人想用一个设计工具来做品牌和图形,而这些内容并非特别机密——那么在这样的情况下风险很小。你需要给人们一定程度的灵活性。



4. 展示什么是好的

改变公司内部的安全文化也意味着安全团队思维方式的改变。正如员工希望 CSO 成为一个优秀的沟通者和领导者一样,安全团队也需要跟进,既要引人注目,又要平易近人。

Park 表示,在过去的十年里,他们并没有做好工作让人们更容易理解安全性。他们很难用通俗易懂的语言来表达,很难在不阐明根本技术问题的情况下解释风险。

相反,他说关于安全问题需要以一种更类似于健康和安全警告的方式传达信息。向别人解释为什么他们不应该在没有个人防护装备的情况下爬梯子是很容易的,因为后果显而易见。向别人解释为什么他们应该使用 SharePoint,而不能使用 Dropbox 不容易是因为在他们看来,SharePoint 不会产生像爬梯子没有防护措施那样的影响。

今天就聊到这里吧,想要落地这个并没有那么容易,也不是每一家公司都能做到,在自身人力不足的情况下还是不要做这个,做好渗透测试,在恶意攻击之前发现安全问题,推动开发尽快修复安全问题,如果业务系统比较多,自身无法覆盖全面的渗透测试,可以开设 SRC 集白帽子之力来帮助企业发现安全问题,然后自研扫描器,将历史安全问题集成到扫描器中,保证历史安全问题不再出现,我们的价值也就能够很好的体现了,安全无止境,共勉!