软件开发人员最常犯的五大安全错误-51CTO.COM

软件开发人员最常犯的五大安全错误

CIOAge
应用开发安全面临严峻挑战,随着云计算、容器和API的普及,安全漏洞日益增多。

为应用开发团队创建和实施最佳安全实践并非易事。软件开发人员在编写代码时并不一定会考虑这些因素,而且随着应用开发环境的日益复杂,确保应用的安全性在处理云计算、容器和API连接方面变得更具挑战性。

Veracode年度软件安全状况报告对应用程序进行了扫描,结果发现80%的应用程序存在安全漏洞,其中大部分是多年来一直是Web应用程序组成部分的已知问题。Akamai最新的《互联网安全状况报告》分析了通过其基础设施的网络流量,发现“2023年第一季度至2024年第一季度期间,针对应用程序和API的网络攻击激增了49%。应用程序和API需求的指数级增长使它们成为威胁行为者寻求利用安全漏洞以非法访问其目标的有价值数据的获利目标。”

几十年来,软件开发人员已经看到了为应对这些趋势而提出的各种安全倡议,如安全设计、深度防御、左移、DevSecOps等高大上的概念,但不安全的应用程序问题仍然存在,这是因为一个制作粗糙的应用程序可能会为企业的整个网络打开大门,并导致大规模的数据泄露。

以下是五个避免可能导致重大企业安全后果的错误决策的出发点,以及关于如何避免这些错误并加强安全防御的建议。

糟糕的输入控制

编写任何代码都要从了解需要什么数据输入开始,这意味着要注意这些输入是如何被应用程序使用的。对这些输入几乎没有或完全没有控制,这就是跨站脚本攻击或SQL注入攻击发生的原因,因为这些(和其他漏洞利用)利用了宽松的输入控制。

Tanya Janca正在撰写关于应用程序安全的第二本书,并多年来一直就此主题提供咨询,她告诉记者:“非常常见的一种做法是缺乏或错误的输入验证。”Snyk也在博客中谈到了这一点,称开发人员需要“确保准确的输入验证,并确保数据在语法和语义上都是正确的。”Stackhawk写道:“始终确保后端输入得到正确验证和清理。”

鉴于这种建议的频繁出现,为什么我们仍然有没有适当输入控制的应用程序?一个原因是开发人员通常为了简化测试而开始编写没有控制的应用程序,并且只是忘记回头审查自己的工作,另一个原因是他们最初或可能永远都不关注安全性——这就是“左移”运动的起源。

CISA最新的最佳实践建议产品系统地执行参数化查询,并将命令输入与命令本身的内容分开。

糟糕的身份验证和宽松的权限管理

第二个常见问题与应用程序中缺乏坚实的身份验证和基于角色的权限管理有关,这并不是什么新鲜事,但往往被急于编写和发布更多代码的appdev团队所忽视。在这里,创建并始终遵守访问规则、实施多因素身份验证(特别是对于管理人员和管理员),以及从任何编码项目或资源中消除默认(或缺失)密码都很重要。

身份验证不严格的一个方面与所谓的“秘密泄露”有关,即在代码中硬编码凭据的错误做法,包括API和加密密钥以及登录密码。Git Guardian跟踪了这个问题,并发现几乎所有暴露此类秘密的漏洞在软件作者被告知后至少五天内仍然处于活动状态。他们发现十分之一的开源作者泄露了秘密,这意味着大约170万名开发者的行为不当。

从个别供应商到CISA自己的文件,许多最佳实践指南中都反复提到了修复这一缺陷的方法,这里的目标是确定谁实际需要访问每个特定资源,并定期监控这种关系,以确保角色仍然有效,这也意味着一旦不再需要数据访问,就要删除任何凭据,并定期对这些凭据和权限进行审计。

糟糕的API保护和枚举

随着API的激增以及应用程序之间的连接日益紧密,开发人员需要保护这条通信路径,并确保其使用安全。Salt Security对400人进行了调查,几乎每个人在2023年都经历了生产API的安全问题,根据他们《2023年第一季度API安全状况报告》,其中17%的人遭遇了与API相关的泄露事件。OPSWAT的Adam Rocker告诉记者:“不幸的是,威胁持续增长,潜在的攻击面也在继续增加。”

看看上个月Internet Archive发生的事情,他们遭遇了三次单独的泄露事件,都涉及保护不善的API密钥。Gartner高级分析师Dale Koeppen告诉记者:“在面向公众的资产上暴露的API增加了攻击面,并成为恶意行为者的优先目标。”“应用程序攻击面呈指数级增长,这导致了代码被仓促编写并推向市场,从而被攻破。”

Janca告诉记者:“很容易找到没有API网关的API。”“如果它们暴露在互联网上,坏人就会找到它们,然后利用它们。”

Upwind.io首席执行官Amiram Shachar表示,开发人员需要不断测试API漏洞并实时监控API流量,以识别威胁并简化响应。“API安全不应该是一个独立的工具,而应该是整体云安全包的一部分。”

根据F5《2024年应用程序战略状况报告》,41%的受访企业管理的API数量至少与单个应用程序的数量一样多,他们预测,随着AI实施的推进和更复杂的应用程序的构建,API的比例将继续增加。

但拥有一个API网关只是整体API治理策略的一部分,正如Internet Archive的开发人员不幸发现的那样。企业需要在其整个API基础设施上一致且全面地应用安全策略,并能够适应新出现的威胁和异常行为。

糟糕的工具

接下来我们谈谈工具。在维护高级应用安全(appsec)方面,工具挑战有两个方面,首先是收集正确的工具集来帮助发现和解决问题,这是一个挑战的原因是,没有一种通用的安全工具,这意味着你的工具选择需要仔细研究,以确保尽可能少的覆盖漏洞。

Gartner建议从以下三种不同的工具开始:

• API网关。它们执行两项主要任务:维护所有API的总体清单,以便更容易地进行故障排除;测试和帮助调查第三方供应商,并监控所有API的可疑活动。

• 代码扫描和测试工具,帮助开发人员发现编码错误,识别和解决漏洞,这些工具在编写代码时保护软件供应链,防止诸如2020年SolarWinds Orion漏洞利用之类的灾难发生。

• 所谓的Web应用防火墙实际上可以保护所有应用程序免受SQL注入等攻击,这些通常在更高的协议级别上运行,但它们也可以用于阻止较低级别的基于网络的攻击,如DDoS或僵尸网络。

但还有第二个问题,即理解安全文化,以便你可以选择正确的工具,这些工具实际上会被你的开发人员部署。Jeevan Singh在一篇博客中谈到了这个问题,提到你必须从小处着手,不要一次性购买所有东西,“以免用大量的漏洞列表压垮你的工程企业。你必须查看这些漏洞,了解并优先考虑你想要保护的数据。”Singh发现,许多企业选择了不符合其业务需求的工具。“他们没有将工具投入运营,这意味着它们没有集成到任何日常流程中。”

Veracode的信息很简单:经常扫描你的应用程序,使用各种技术进行扫描,并了解应用程序是如何构建和修改的更大图景,以便进行持续修复。

有一些应用程序安全产品结合了多个类别——Koeppen称之为流量处理引擎——例如来自Barracuda、Imperva和F5的产品,这种整合可以帮助消除工具和警报疲劳,这最终会导致花费大量时间追逐误报。“最大的挑战是妥善处理整体风险管理,”他告诉记者,“我们需要简化这一流程,并尽可能整合多种工具。”

自动化使用不当

这给我们带来了最后一个问题,即不经常使用自动化或自动化使用效果不佳。即使有了最好的工具,警报也会堆积如山,并且需要时间来分析,这就是GenAI可以帮助的地方,因为它可以快速识别误报,将在需要立即注意的警报之间建立联系,并提供快速修复,从而提高整个企业的安全性。Indusface总裁Venky Sundar告诉记者:“安全软件,尤其是网站和API保护方面存在的最大问题是误报的普遍性。”

自动化对于现代应用安全环境至关重要,尤其是作为执行定期渗透和漏洞测试的辅助手段,包括开放Web应用程序安全项目(OWASP)和CISA在内的许多安全专家都提出了这一建议。

Sundar表示:“有效利用AI可以帮助消除或减少误报至最低限度,并鼓励更多企业使用WAF来阻止它们。”

AI还可以用于过滤和减少警报疲劳。安全供应商正在快速行动,许多工具现在都配备了生成式AI增强功能和使用机器学习模型以更快地发现恶意软件和识别恶意趋势的方法。

尽管存在这些问题,但整体情况还是显示出一些希望的迹象。Veracode在其报告中指出,最严重编码缺陷的比例现在是2016年的一半,但严重的编码错误仍然存在,平均而言,每个典型的应用程序每兆字节的编写代码中就有42个漏洞,这个数字仍然太高。

Janca提供了一些希望:“总体来说,情况正在好转,新开发人员往往比很久以前接受培训的开发人员更具安全意识。”

责任编辑:庞桂玉 来源: 企业网D1Net
相关推荐

2010-03-20 20:35:33

2015-09-21 09:34:57

2024-08-09 13:44:06

2022-09-12 15:51:38

JavaScrip开发编程语言

2011-07-28 09:42:14

IT安全虚拟化数据泄漏

2020-09-23 22:40:31

Python 开发编程语言

2015-03-10 10:35:41

2019-08-22 10:24:04

物联网物联网安全IoT

2015-01-14 09:29:35

2022-07-12 18:36:52

软件开发企业开发人员

2016-12-01 15:25:37

2010-10-27 09:33:18

MVC开发

2012-06-13 01:37:40

JSPJava

2015-03-11 09:55:12

2022-04-30 08:58:00

SpringJava开发

2012-02-15 09:17:02

Python编程

2012-02-06 15:39:05

2013-01-10 10:30:36

云开发

2023-02-02 08:00:00

SQLJava开发

2009-07-22 09:25:19

程序员非技术

51CTO技术栈公众号