如何确保开发的安全性,节省时间和神经

向银行,零售,医药和其他重要生产与服务分支机构的数字化过渡引发了许多安全威胁。 如今,在全球范围内,攻击者的活动持续增长,保护用户和公司数据免遭盗窃和故意破坏的问题越来越成为专业人员讨论的话题。

对于企业和IT来说,将安全性集成到开发过程中是如何合适的,什么是最好的工具,这一切都取决于实际的实施实践。 我们分享Rostelecom,M。Video-Eldorado,DD Planet,AGIMA的方法。

Rostelecom太阳能应用程序筛选器开发主管Yaroslav Aleksandrov,介绍如何将SAST集成到开发中


随着公司的发展和开发人员数量的增加,“手动”检查产品的漏洞变得越来越困难。 您必须使用SAST-静态应用程序安全性测试(静态应用程序安全性测试)。 在Solar appScreener中,信息安全性是基于内部产品构建的。 该产品分析源代码。 如今,支持26种编程语言,可以分析其来源的漏洞,并支持所有流行的格式和项目管理系统。

如何选择SAST?


使用原始算法甚至无法找到一个简单的漏洞。 如今,市场上有很多SAST解​​决方案,包括付费和免费的。 其中最受欢迎的是IBM Security的AppScan,Synopsys,Veracode,Application Inspector,Micro Focus,Appercut和Checkmark。

开发过程的有效性取决于工具的选择。 付费解决方案的主要优点:

  • 专注于安全性:特定的算法和大型规则库。
  • 支持多种编程语言。
  • 用户友好的界面。
  • 插件和API的可用性。
  • 该工具的技术支持的可用性。

免费工具和Web界面通常不如付费工具,因为它们包含的算法更简单,规则库也不完整。 他们的主要任务是查找代码中的错误。 这种解决方案的专业化和功能通常非常狭窄。

选择了SAST解​​决方案后,您需要将其集成到开发过程中。 集成选项可能包括:将工具嵌入存储库,开发环境,CI / CD服务器,任务跟踪系统中。 一个好的工具可以成功地集成到所有列出的系统类别中。

注意 :开放的SAST API包括JSON API和CLI,并为额外的集成和自动化提供了充足的机会。

要选择最能满足开发人员目标的工具,您需要进行功能比较和质量比较。

根据几个参数进行功能比较:他们分析了界面的便利性以及与自己工具集成的便利性。 同时,重要的是要对自己的代码进行验证。

下一步是质量比较:他们分析与自己的代码有关的漏洞和误报。

代码分析的细微差别


发现漏洞的时间越早,对于开发人员和客户而言就越便宜。 这意味着必须在开发过程中定期检查产品是否存在漏洞,并在发布之前另外进行控制检查。

速度和资源 :通常期望该工具能够快速运行; 运行每一个变化; 实时显示谁和何时引入了漏洞。 实际上,SAST会分析代码至少8个小时,因此每次更改都很难运行它。 很难确定漏洞的作者; 误报发生。 因此,出现了一个问题:如何配置DevSecOps。

在这里非常重要:

  • 计算时间和资源以分析您的代码。
  • 根据结果​​确定触发扫描的触发器。
  • 请记住,将需要定期重新计算功率。
  • 最好使用增量分析,但应谨慎进行,因为可能会丢失漏洞。



例如,当开发人员将任务提交审查时,您可以使用SAST运行测试。 您也可以在工作日结束时开始扫描。


另一个问题是误报,并在报告中获取有关多个漏洞的信息。 在这种情况下,建议开发人员:按漏洞和文件过滤静态分析器。 您可以排除库,分析关键性,为某些参数添加例外。 只做一次这样的工作就足够了,这样将来关于误报的信息就不会落入报告中。 确保没有新漏洞出现并在后台逐步拆解现有漏洞数据库也很重要。

在将SAST集成到开发过程中的过程中,重要的是逐步实施过程而不会阻止发布。 处理流程可能如下:

  • 工具选择。
  • 过程说明(创建法规)。
  • 技术解决方案的说明。
  • 实施工作。
  • 试运行。

最好从最关键的系统开始:消除新的漏洞,进行设计,实施法规和技术解决方案很重要。

规定必须表明:

  • 检查代码是否存在漏洞的步骤。
  • 负责开始扫描。
  • 作用和结果。
  • 如何建立沟通流程。
  • 服务水平协议。
  • 负责过程控制。
  • 向流程中添加新系统的顺序。

这种方法允许在一个日历年内在开发过程中实施SAST。 考虑所有变化和风险很重要。

最终建议:

  • 在开发的每个阶段都使用SAST。
  • 使集成适应您的代码和流程。
  • 首先修复新漏洞。
  • 逐步消除旧漏洞。
  • 创建基于SAST的过程。
  • 从不影响发行版开始逐步进行部署。

M.Video-Eldorado信息安全事件监视和响应团队负责人Vladimir Sadovsky,介绍如何构建安全的编程过程


安全编程概念背后的基本思想是帮助企业。 加快流程; 将与产品漏洞相关的问题的风险降至最低。

经典的安全性方法可以如下所示:



其主要问题与确保安全所必需的高昂改进成本有关。 另外,重要的是提供数据加密协议,集成总线的传输协议的加密等。

至于电子商务网站,它们受到的攻击比其他许多网站都多。 此类攻击的目的是试图获得一定的经济利益(欺骗该程序并免费购买昂贵的商品),或夺取客户的个人数据。 不幸的是,尽管使用传统的漏洞扫描程序无法解决某些问题。 例如,如果应用程序具有指纹授权扫描程序,则没有一个静态分析将显示该功能在应用程序中的不正确性。 这增加了与入侵者渗透到应用程序的用户帐户有关的事件的风险。 同时,零售商的应用程序与发行版越接近,修复漏洞和漏洞的成本就越高。

用于电子商务平台的代码安全测试工具的方案如下所示:



它清楚地显示了哪个团队参与了特定应用程序功能的实现。 如果检测到错误或漏洞,则该功能旨在最终确定该特定团队。 结果,减少了修复错误和问题的时间,因为直接的开发人员更加了解他们的代码。

接下来,启动最终测试,在此期间,将分析最终产品的整个代码并“清理”残留的错误。

零售安全威胁


零售的主要驱动力是销售-无论是线下商店,互联网,市场营销,客户数据库。 一切目的都是为了尽可能地靠近用户。 另外,现代零售业试图通过全渠道销售产品。 开展各种营销活动和计划。 所有这些不仅对消费者而且对入侵者都很有趣。 此处还会显示其他安全评估-潜在的损坏。 该分析旨在确定站点上的错误,逻辑错误和经典的安全问题,随后真正的消费者将遭受这些问题。

了解潜在的损坏始于测试阶段也很重要。 碰巧生产环境与生产环境紧密集成在一起,因此在测试阶段进行的更改可能会导致事件和问题。 为避免这种情况,在开发开始之前制定流程图并采取适当的措施非常重要。

如果外部承包商参与了开发,则重要的是评估它是否能够满足必要的安全要求。 为此,有必要定期评估开发人员的能力和执行公司的互联网安全水平。 合同应包括开发商认证点; 记录谁对导致损坏的错误负责。 定期培训开发团队并提供全面的知识产权保护非常重要。

提供访问控制,组织受信任的环境以及配置监视和数据泄漏预防工具也非常重要。 我们还必须制定安全编程的详细要求和政策,修复所有版本的开源和外部库。

在设计阶段,在多个阶段使用场景方法,建立威胁模型并进行风险分析是有意义的。 当开发人员面临一项新任务时,重要的是要了解它会影响哪些业务流程,并根据业务需求级别的可能欺诈方案评估计划。 在三种概率的框架内考虑每种风险:乐观评估,平均和悲观。 漫游器将发送到站点或应用程序。 其中十分之一是恶意的。 基于三种情况,计算了对业务的潜在损害。

有各种静态和动态分析器,可让您识别问题并及时解决。 IT部门的任务是从技术要求的角度验证代码链是否正常工作。 安全部门的任务是检查代码中的安全漏洞。

在业务逻辑中搜索安全漏洞可以归结为以下几个方面:

  • 在测试应用程序时实施安全性自测。
  • 参考关键业务流程和集成为静态分析器创建服装规则。
  • 在具有基于风险的高关键性的功能的上下文中,手动分析修改后的代码的各个部分。
  • 在代码中查找书签的过程,对外部库的定期审核。

并非在代码和开发级别上都能消除所有安全问题。 安全部门的任务是建立并建立有效的过程来管理漏洞和事件。 为此,您需要不断分析用户行为,对其进行概要分析,监视行为。 如果它偏离通常的业务模式,则需要将其视为事件并立即做出响应。
分析用户行为有助于:

  • 处理大数据并建立异常行为和异常的模型。
  • 监视和审核JS脚本的过程。 没有JS脚本,现代网站将无法运行。 通常,它们是从外部资源加载的。 因此,重要的是要了解它们的功能,以及对站点有什么样的威胁JS脚本。
  • 根据Google和Yandex的分析服务和指标搜索漏洞。
  • 整个项目的定期安全测试。
  • 使用漏洞赏金来识别新漏洞。
  • WAF集成可保护应用程序并有效地解决问题。

不断收集和分析数据以识别新的异常情况非常重要。

DD Planet的Dmitry Nikulchev-关于如何保护Web和移动服务用户的数据


DD Planet中的安全编程基于几个原则。 首先是可靠性。 产品性能应可预测,正确且无故障。 即使初始数据输入有误(作为产品攻击的一部分,有意或无意)。

第二是安全性。 防止和消除外部威胁,攻击并保持可操作性的能力。

第三是隐私。 确保安全正确地处理个人数据。 这在开发企业和自定义应用程序时至关重要。

例如,由DD Planet开发和支持的Zhivu.RF服务是面向邻居的私人社交网络,其中包含大量个人数据。 用户资料在公共服务的帮助下得到确认,并且属于特定的地址(邻居)-从Rosreestra中提取USRN。 这给开发人员带来了与保护个人信息有关的严重义务。

用户数据的存储和处理


我们将所有个人数据存储在ISPDn(个人数据信息系统)中。 它们包含在具有安全IT基础结构的隔离虚拟网络中。 入侵检测工具,安全分析和漏洞搜索服务器以及备份服务器已集成到虚拟网络中。

为了确定漏洞,我们使用“手动方法”并依靠专家分析。 该原则并不意味着使用任何自动化工具:研究是由经验丰富的专家进行的,在识别漏洞时,他专注于自己的知识。 显然,这种技术需要大量时间,并且需要公司中高素质的专家的参与。 但是,就验证期间的数据覆盖范围的准确性和完整性而言,它被认为是最有效的。

追求完美产品的严谨性


在客户端开发中,按时发布版本很重要,而应用程序应该没有错误,并确保用户安全。 遵循此原则,在产品测试期间,我们使用按优先级评估任务的原则-严重性。 即,根据对缺陷产品的负面影响程度,我们对消除缺陷的所有任务进行排名。

解决DD Planet中的错误的优先级如下:

  1. 首先,我们确定并消除用户没有机会执行目标操作的阻止程序或错误。 例如,访客无法在网站或应用程序中注册; 登录到您的帐户; 访问目标数据或应用程序的各个部分。
  2. 接下来,我们跟踪并消除关键错误-安全问题,系统冻结,业务流程出现故障以及应用程序定期崩溃。
  3. 然后,我们分析中级问题-我们发现仅在某些特定情况下才会出现的错误。
  4. 最后一步是较小的更改-我们消除了较小的错误,在界面上制定了注释,等等。

此序列可帮助我们快速消除错误,专注于用户的关键方面。

产品的释放分为多个阶段。 首先,将其发布在测试环境中以识别错误。 然后有一个错误修复,优先级为1和2。优先级为2。此后,我们发布了正式版。 发布后的一段时间内,团队的一部分成员致力于修复优先级为3和4的错误。几天后,修复了其余问题后,产品中又进行了一次更新。

为确保最大的产品安全性:

  • 使用对数据库的参数化查询。
  • 摆脱应用程序内部的查询构造,以避免sql注入。
  • 仅使用具有最少必要权限集的特殊有线帐户连接到数据库。
  • 定期保存安全日志。

不信任用户输入:应在服务器上检查来自客户端(用户)的任何数据。 这将防止脚本或恶意十六进制代码的通过。 用户数据通常作为参数传递,以调用服务器上的另一个代码,如果不检查,可能会严重损害系统安全性。 因此,严格检查所有输入数据的正确性是如此重要。

AGIMA的Andrey Ryzhkin和Alexey Klinov-关于如何以及为什么在定制开发中控制应用程序安全性


对于企业和用户而言,任何产品的数字体系结构的安全性都是至关重要的属性。这是质量和可靠性的附加指标,必须在应用程序的生产和运行的所有阶段都保持这一指标。

任何组织都有有价值的信息,其中包括:

  • 员工和客户的个人数据。
  • 访问数据到客户银行。
  • 公司客户数据。
  • 生产图纸。
  • 项目文档。
  • 还有其他

此数据位于不同的系统中,其安全性很难控制。而且,此类信息的盗窃或虚假陈述会造成重大的财务损失,组织声誉下降,主要客户和合作伙伴流失以及交易和项目中断。

但是,尽管如此,市场上有很多信息保护手段:



并且有可能组织良好的全面保护-会有一种愿望和手段。

那么应用程序安全性如何?


企业需要具有有效功能的可运行且稳定的应用程序,以带来财务回报。但是,无论应用程序在功能上多么理想,它都可能存在与漏洞相关的工件。通常他们不会考虑,因为这些工件要到某个时刻才会显现出来,直到竞争对手或好奇的黑客需要它。可以利用漏洞来尝试通过网站或应用程序渗透组织的基础结构,或尝试访问此应用程序处理或存储的有价值的数据。结果,该业务可能会受到严重影响。

不幸的是,对于自定义开发来说,安全性分析仍然很少。原因是项目的独特性。它们太不同了,每个都有自己的需求。这会影响分析成本。鉴于业务利润率低,并非总是可能将流程投入定制开发。但是,最好不要忽略该过程。

如何防止数据从应用程序盗窃?


从移动或Web应用程序开发的最开始,就必须对产品代码进行安全性分析。

就保护而言,您不能仅依靠WAF(防火墙):该规则可能无法奏效,可能使用了错误的配置或过时的签名。只有一套措施:在开发过程中使用源代码的静态分析,在战斗环境中进行工具分析,笔测,WAF以及针对DDoS的防护将有助于确保高水平的应用程序安全性。
仪器扫描仪和笔测试将通过在开发过程中分析代码来检测无法识别的漏洞。

如何组织漏洞测试过程?


AGIMA实现了几种分析安全代码的方法:

  • 在CI / CD的开发过程中完全集成。
  • 检查点的安全审核。
  • 情境审核或一次性安全审核。

理想的选择是将安全性分析集成到开发过程中。这种方法对于同一开发者已经开发了很长时间的项目尤其有用。

第二种选择是在检查点进行安全审核。如果产品的发行量很少,则此方法适用,也可以作为集成分析的重要补充。

如果项目非常简单,或者已从其他开发人员转移过来,则进行情况审核或一次性审核是有意义的。在第二种情况下,确定产品的技术债务-现有错误和漏洞的数量很重要。之后,您需要创建一个消除它们的路线图。有时,一切都可以在第一阶段得到解决。如果有很多问题,您将不得不在进一步的开发过程中加以解决。首先,消除关键因素,然后消除危险程度较小的因素。

该方法结合了上面列出的三个版本,可以使您:减少发行版中的潜在漏洞数量,最大程度地降低产品的技术负担,并缩短将应用程序出售给产品所需的时间

在开发的早期阶段进行的安全分析的结果是:

  • , .
  • .
  • .


而不是结论


如今,对于软件产品,移动和Web应用程序中的漏洞的搜索已成为所有主要开发人员的重要活动领域。一些人认为专家漏洞分析是可靠的,并且对内部专家进行了信任测试。其他人则使用笔测试,漏洞扫描程序和代码分析器。还有一些将SAST工具集成到开发过程中。在这种情况下,建议在开始工作之前建立威胁模型并分析与关键数据被盗和失真有关的潜在风险。

不要仅仅依靠防火墙和免费的安全功能。最可靠的方法是使用集成方法,定期并彻底检查代码中的错误和漏洞。

Source: https://habr.com/ru/post/zh-CN460669/


All Articles