了解应用程序安全工程师技能
学习目标
完成本单元后,您将能够:
- 解释应用程序安全对业务的影响。
- 列出称为应用程序安全专业人员所需的关键技能。
- 描述应用程序安全的常见场景。
应用程序安全对业务的影响
应用程序安全性不足可能会对组织产生巨大的负面影响。网络入侵者每天都在攻击各种组织,希望通过获取金钱、公司信息和知识产权来丰富自己。攻击者利用被劫持的数据进行未经授权的购买并窃取消费者的身份。
如果您关注新闻,就会知道攻击者已成功破解应用程序,访问存储在零售商、信用报告公司、航空公司、娱乐公司、政府办公室、学校和很多其他组织的计算机系统中的数据。有连锁酒店遭到国外的破坏。还有 SQL 注入攻击,在一家公司的计算机上安装了间谍软件,暴露了客户信用卡信息,我们稍后具体介绍。在很多案例中,入侵者利用薄弱的数据加密系统窃取信用卡数据。这些攻击总计暴露了数亿客户的个人信息。
这些安全漏洞导致欺诈和盗用,会产生直接经济影响,安全漏洞也可能产生间接经济影响,如声誉损失。这种情况下,由于客户流失、股东信任度降低和品牌形象受损,可能会对企业产生额外的经济影响。安全违规还会产生法律和监管方面的后果,导致罚款和制裁。
应用程序安全工程师在确保业务应用程序充分保护客户数据方面发挥着关键作用。因为应用程序安全工程师的作用非常重要,所以他们需要具备广泛的专业知识。我们来进一步深入了解一下,看看应用程序安全工程师需要什么技能。
应用程序安全工程师技能
想象一下,您即将飞往一个遥远的岛屿开始度假。登机前,您必须通过多个机场安检点。安检人员检查您的身份证和登机牌,您穿过金属探测器,您的行李经过 X 光检查,您经过机场安检犬,安全警卫监视电视屏幕,观察是否存在异常活动。这些是机场的层层安全措施,确保您能够安全到达目的地。与机场的安全人员类似,应用程序安全工程师必须了解攻击者的入口点,在应用程序开发和部署的每个阶段提供必要的安全防护。
来自安全协会 (ISC)² 和国际信息系统安全协会 (ISSA) 的报告讨论了多年来不断增长的网络安全技能短缺问题。安全事件的增加导致组织报告迫切需要应用程序安全专业人员来保护应用程序和数据。鉴于这一点以及应用程序安全工程师需要更多培训的事实,应用程序安全工程师通常可以比应用程序开发人员赚到更多的钱。
应用程序安全工程师在应用程序软件开发生命周期 (SDLC) 的不同阶段采用各种技术来发现安全漏洞。要做到这一点,应用程序安全工程师必须很好地掌握许多技术技能,其中包括:
- 威胁建模:思考攻击者如何危害系统,以及需要针对他们采取哪些保护措施
- 安全软件开发生命周期 (SSDLC):通过实施安全编码标准、技术和最佳实践,帮助开发人员编写安全代码,最大限度地减少漏洞。
- 安全代码审查:在将应用程序部署到生产环境之前,找出源代码中的安全漏洞。
- 漏洞测试和分析:部署应用程序后发现漏洞,并建议开发团队采取补救措施
由于应用程序安全工程师与不同的人(应用程序开发人员、测试人员、设计师和其他人)合作,他们应该是良好的合作者和沟通者。他们还应该是优秀的作者,因为他们要编写解释技术发现的文档。在某些情况下,他们需要利用自己的说服力说服管理层,为什么在部署应用程序之前应该安装某个安全功能。他们还必须经常使用批判性思维技能来确定入侵者试图攻击应用程序的各种方式,然后,他们需要找到创造性的解决方案来挫败潜在的攻击。如果发生入侵,他们会调查事件,帮助确定危害的来源,加强应用程序对未来攻击的防御。
除了上面列出的技能外,以下认证可以帮助应用程序安全工程师增加知识储备。
- GIAC Web Application Defender (GWEB)(GIAC Web 应用程序防御者 (GWEB))
- Certified Secure Software Lifecycle Professional (CSSLP)(认证安全软件生命周期专家 (CSSLP))
- Secure Software Practitioner (SSP)(安全软件从业者 (SSP))
- Certified Application Security Engineer (CASE)(认证应用程序安全工程师 (CASE))
- Advanced Web Attacks and Exploitation(高级Web攻击和利用)
如果您考虑从事应用程序安全专业,获得计算机科学的大学学位便是良好的开端。应用程序安全工程师通常从应用程序开发人员开始,然后过渡到网络安全领域。此外,多所大学提供网络安全学位。这绝对是一个令人兴奋的领域,有很多机会。
现在,您已经了解了成为应用程序安全工程师所需的技能,我们来看看应用程序安全工程师遇到的常见安全场景以及如何在这些情况下保护应用程序。
应用程序安全的常见场景
网络犯罪分子寻找最容易、能够提供最大回报的途径来窃取、修改或破坏数据。应用程序越复杂,其包含安全漏洞的概率越高。应用程序,尤其是 Web 应用程序,是网络犯罪分子的目标,因为它们提供了一个较大且相对容易利用的攻击面(用户界面),让入侵者有机会访问存储在计算机上的敏感信息。此外,入侵者不需要任何特殊工具来攻击 Web 应用程序。他们只需要一台电脑和网络。
攻击者试图找出渗透应用程序的方法,而应用程序安全工程师则专注于最大限度地减少应用程序代码中的漏洞,确保安全地配置应用程序组件,以防止未经授权访问客户帐户和数据。在审查应用程序安全风险时,一个值得参考的宝贵资源是 Open Web Application Security Project (OWASP)(开放式 Web 应用程序安全项目 (OWASP))。OWASP 是一个国际组织,提供可以帮助提高软件安全性的免费信息。
那么,应用程序安全工程师可能会遇到哪些常见风险呢?注入攻击就是一个很好的例子,当应用程序输入清理不当时就会发生。在注入攻击中,入侵者将代码而不是预期的输入数据插入应用程序输入处理逻辑(管理最终用户界面和数据库之间通信的代码)。
如果应用程序编写不正确,应用程序将运行攻击者注入的代码。例如,可以将结构化查询语言(通常称为 SQL)输入到网页中的电子邮件地址字段。SQL 是编程中使用的语言,用于管理数据。如果不检查输入字段,攻击者便可能会用 SQL 代码从应用程序数据库中提取信息(如健康记录)。
为了清理用户的输入,应用程序应该确保应用程序将用户输入作为数据而不是命令来处理,并且只包括允许列表中的字符(允许列表 (allowlist) 是被授予系统访问权限的字符列表)。使用允许列表后,所有其他实体将被拒绝访问,允许列表中包含的实体和不超过最大数据字段长度的实体除外。
应用程序安全工程师的其他职责包括在开发过程中审查、测试和验证代码,确保正确清理用户输入,帮助防止上述注入攻击。这在敏捷软件开发环境中尤其重要,相比其他开发方法,敏捷软件开发力求更快地交付应用程序功能,但敏捷方法增加了复杂性,因为它需要不断更新应用程序,来满足最终用户的期望。开发人员需要快速提供新功能并修复发现的错误。应用程序必须经过强化以防止被利用,应用程序安全工程师的工作是为开发团队提供最有效的建议。
弱加密或无加密是另一个普遍存在的应用程序安全缺陷,这样攻击者便能够暴露敏感数据。当应用程序使用 HTTP 等以明文形式传输数据的协议时,便容易受到攻击。应用程序应使用诸如 HTTPS 之类的安全协议来加密数据传输,因此没有适当的解密密钥就无法读取数据。应避免使用旧的、弱的加密算法和内部开发的加密功能。应用程序安全工程师应该依赖安全的、基于标准的加密算法。
应用程序安全工程师帮助开发人员遵循安全的 SDLC 过程。他们采用安全应用程序设计和架构技术(基于众所周知的安全实践),提供强大的身份验证和授权,采用安全会话管理来防止未经授权的访问。
应用程序安全工程师部署应用程序,防止用户使用默认凭据登录,因为这是一种常见的攻击载体。它们清理用户输入以阻止注入攻击。由于加密较弱,一些数据已经泄露,因此应用程序安全工程师使用具有适当加密密钥管理的强大算法来加密数据传输和存储的数据(静止数据)。如果攻击者渗透系统,他们将无法提取任何有用的信息,因为他们不知道如何解密数据。
应用程序安全工程师确保正确处理错误,从而不会向用户发布任何敏感信息。他们还在应用程序开发期间和开发之后执行静态和动态应用程序安全测试,并在部署后监视应用程序的所有异常活动。
总结
在本单元中,我们介绍了应用程序安全漏洞如何影响业务,应用程序安全工程师需要什么技能,并探讨了常见的应用程序安全场景。接下来,我们将讨论每个优秀的应用程序安全工程师采取的第一步:识别其环境中的应用程序及其相关风险。