为应用开发团队创建并执行最佳安全实践并非易事。软件开发者在编写代码时未必会将这些安全实践考虑在内,而且随着应用开发环境变得愈发复杂,保障应用安全在应对云计算、容器和应用程序编程接口(API)连接方面面临着更大的挑战。
在Veracode年度软件安全状况报告中所扫描的应用程序中,80%都发现了安全漏洞,其中大多数涵盖了多年来一直存在于网络应用程序中的常见问题。Akamai最新的《互联网安全状况报告》分析了通过其基础设施的流量后发现,2023年第一季度至2024年第一季度期间,针对应用程序和API的网络攻击激增了49%。应用程序和API需求的指数级增长已使它们成为威胁行为者眼中有利可图的目标,这些威胁行为者试图利用安全漏洞,未经授权访问那些高价值的数据。
几十年来,软件开发者目睹了为应对这些趋势而提出的各种安全举措,例如“安全设计”“深度防御”“左移”“开发安全运营一体化(DevSecOps)”等冠冕堂皇的概念。但不安全应用程序的问题依然存在。这是因为哪怕一个制作欠佳的应用程序都可能为企业的整个网络大开方便之门,进而导致大规模的数据泄露。
关注并尽量规避以下5个软件开发者常犯的安全错误,有助于防止可能对企业安全产生重大影响的不良决策:
1.不良的输入控制
编写任何代码都始于了解需要哪些数据输入,这意味着要关注应用程序如何使用这些输入。对这些输入几乎没有采取任何控制措施,是跨站脚本或SQL注入攻击发生的原因,因为这些攻击手段利用了宽松的输入控制。
“一种非常常见的做法就是缺乏或不正确的输入验证。”正在撰写第二本应用程序安全相关书籍、且就此主题提供多年咨询服务的Tanya Janca表示。
为何仍有应用程序没有适当的输入控制呢?其中一个原因是,开发者通常在编写应用程序时为简化测试而未设置控制措施,而后又忘了回头检查自己的工作;另一个原因是,很多开发者开始并没有把重点放在安全方面,而这正是安全“左移”运动兴起的根源所在。
专家认为,要确保准确的输入验证,确保数据在语法和语义上都是正确的,以及后端输入得到正确的验证和清理。
美国网络安全与基础设施安全局(CISA)最新的最佳实践建议产品应系统性地强制执行参数化查询,并将命令输入与命令本身的内容分离开来。
2.糟糕的身份验证和宽松的权限管理
应用程序中缺乏可靠的身份验证和基于角色的权限管理并非新问题,但应用开发团队在急于开发并发布更多代码时,常常会忽视这一点。包括CISA文件在内的众多最佳实践文档都反复强调要解决这一问题。
宽松身份验证可能导致所谓的“密钥泄露蔓延”问题,即在代码中使用硬编码凭据(包括API和加密密钥以及登录密码)的错误做法。Git Guardian追踪了这一问题,发现几乎每一次暴露此类密钥的泄露事件在软件开发者收到通知后,至少还会持续活跃五天。他们发现十分之一的开源开发者泄露过密钥,这相当于约170万开发者有此类不良行为。
创建并时刻掌握访问规则、实施多因素认证(尤其是针对管理人员和管理员),以及从任何编码项目或资源中消除默认(或缺失)密码等基本操作都很重要。
需要明确到底谁真正需要访问各特定资源,并定期监控这种关系,以确保角色依然有效。与此同时,当用户不再需要数据访问权限时要删除相应凭据,并定期对这些凭据和权限进行审计。
3.不良的API保护和列举
随着API数量的激增,以及应用程序之间的相互关联性越来越强,开发者需要保护这条通信路径,确保其使用安全。
根据Salt Security的《2023年第一季度API安全状况报告》显示,接受调查的400家公司几乎每家在生产环境中的API都遇到过安全问题,其中17%遭遇了与API相关的安全漏洞。
在上个月发生互联网档案馆(Internet Archive)数据泄露事件中,他们遭遇了三次不同的安全漏洞,都涉及保护不力的API密钥。
“面向公众的资产上暴露的API增加了攻击面,成为恶意行为者的重点攻击目标,” Gartner高级分析师Dale Koeppen表示,“应用程序的攻击面呈指数级增长,这导致匆忙编写并推向市场的代码存在安全隐患。”
Upwind.io首席执行官Amiram Shachar表示,开发者需要持续测试API漏洞,并实时监控API流量以识别威胁并简化响应流程;“而且API安全不应是一个独立的工具,而应是整个云安全方案的一部分。”
根据F5公司的《2024年应用策略状况报告》,41%的受访组织管理的API数量至少与他们拥有的单个应用程序数量一样多。他们预计,随着人工智能应用的推进以及更复杂应用程序的构建,API的占比将继续增加。
但拥有API网关只是整体API治理策略的一部分,互联网档案馆的开发者们已经不幸地发现了这一点。各组织需要在整个API基础设施中连贯且全面地应用安全政策,并能够适应新出现的威胁和异常行为。
4.不良的工具选择
在维持高应用程序安全(AppSec)水平方面,工具使用面临挑战。开发团队要收集合适的工具集来帮助发现并解决问题,因为不存在单一的通用安全工具。这意味着选择工具时需要仔细研究,以确保尽可能减少覆盖漏洞。
Gartner建议从以下三种不同类型的工具入手:
- API网关。它们承担两项主要任务:一是维护所有API的总体清单,以便更轻松地排查问题;二是对第三方供应商进行测试、协助调查,并监控所有API的可疑活动。
- 代码扫描和测试工具,帮助开发者发现编码错误,识别并解决漏洞。这些工具在编写代码时有助于保障软件供应链安全,防止出现诸如2020年SolarWinds、Orion漏洞利用之类的灾难。
- 网络应用防火墙(WAF),以保护所有应用程序免受诸如SQL注入等攻击。它们通常在较高协议层运行,但也可用于阻止诸如分布式拒绝服务(DDoS)或僵尸网络等较低层级的网络攻击。
此外,要做出正确的工具选择,还要理解安全文化,确保这些工具能真正被开发者采用,并融入日常流程中。有专家建议,要从小处着手,不要一次性购买所有工具,以免用大量漏洞清单让工程团队不堪重负。同时,要审视这些漏洞,了解并确定要保护数据的优先级。
Veracode建议,要经常扫描应用程序,而且要使用多种技术进行扫描,并了解应用程序构建和修改的整体情况,以便进行持续修复。
5.不当使用自动化
即便有了最好的工具,警报也可能堆积如山,需要花费时间去分析。在这方面,生成式人工智能可以提供帮助,因为它能够快速识别误报,将需要立即关注的警报关联起来,并提供快速修复方案,从而提升整个企业的安全性。
自动化对于现代应用程序安全(AppSec)环境至关重要,尤其是在辅助进行定期渗透测试和漏洞测试方面。
但是 Indusface总裁Venky Sundar指出,安全软件面临一个最大的问题,就是误报频发,特别是网站和API保护方面。有效利用人工智能有助于将误报消除或减少到最低限度,并鼓励更多企业使用网络应用防火墙(WAF)来拦截它们。
人工智能还可用于过滤并减轻警报疲劳。安全供应商们行动迅速,如今许多工具都配备了生成式人工智能增强功能和利用机器学习模型的方法,以便更灵敏地发现恶意软件并识别恶意趋势。
值得庆幸的是,尽管存在这些问题,但整体形势仍显示出一些希望的迹象。Veracode在其报告中指出,当前最高严重级别的编码漏洞占比是2016年时的一半。此外,新开发人员往往比很久以前接受过培训的开发人员更注重安全。
参考链接:https://www.csoonline.com/article/3599778/top-5-security-mistakes-software-developers-make.html