在人工智能(AI)在各个领域中日益重要的背景下,关于其对网络安全就业市场的影响问题变得越来越重要。一方面,自动化和智能系统可以大大加快和优化与数据和IT基础设施保护相关的过程。另一方面,人们担心AI可能会在某些职能中取代人类,导致可用工作岗位的减少。但根据我的观察,情况恰恰相反(至少对于安全人员而言)!
AI在网络安全中的潜力
AI能够在短时间内分析大量数据,这在网络安全中至关重要,因为对威胁的快速反应往往是决定性的。机器学习算法可以基于行为模式和历史数据检测以前未知的威胁。这样可以更快速、更精确地识别和应对安全事件。虽然自动化过程的分析和威胁响应可能导致低级别安全分析师的岗位减少,这些分析师主要负责常规监控和报警响应,但另一方面,出现了诸如网络安全中的机器学习工程、智能防御系统管理以及利用AI进行高级威胁分析等新兴专业领域。专家不仅需要理解现代AI工具的工作原理,还必须能够开发和调整这些工具以满足特定的安全需求。
代码生成的自动化=更多的安全漏洞+新类型的漏洞
自动化工具引入的漏洞
从未有过像现在这样,创建应用程序变得如此简单、易于非技术人员使用和快速。这导致了大量新应用程序的涌现。同时,也出现了在现有软件中引入AI元素的热潮。然而,自动化,尤其是代码生成器或开发框架的形式,可能会导致意外的错误和安全漏洞。这些工具基于既定模式和算法运行,可能无法考虑到经验丰富的程序员理解和应用的特定安全条件或细节。例如,如果工具未能正确配置以考虑这些威胁,自动生成的代码可能无法有效防范如SQL注入或跨站脚本攻击(XSS)等攻击。
Zoomin Zdocs 中的 XSS
一个例子是我在Zoomin Zdocs应用程序中发现的简单“反射型跨站脚本”(XSS)漏洞。将AI助手引入应用程序文档处理似乎是个好主意,可以通过向助手提问来了解如何使用特定软件。然而,必须记住,AI的回答可能是不可预测的,并可能导致安全漏洞。在Zoomin应用中,只需询问助手对以下内容的看法:
<img src=1 href=1 onerror="javascript:alert(document.domain)"></img>?
助手就会回答无法找到问题的答案,并引用问题内容:
I'm sorry, but I couldn't find a definitive answer to: <img src=1 href=1 onerror="javascript:alert(document.domain)"></img>?. Please provide more context or clarify your query.
整个请求如下所示:
POST /api/aisearch/stream HTTP/1.1 |
服务器响应:
HTTP/2 200 OK |
如您所见,输入数据未正确验证和清理,导致注入的JavaScript代码被执行:
不安全的响应显示示例伪代码:
function displayResponse(userInput):
# 读取用户输入
query = userInput
# 显示未经处理的响应
# 这是不安全的,因为它允许执行userInput中的脚本
print("Odpowiedź na Twoje pytanie: " + query)
安全的响应显示示例伪代码:
function sanitize(input):
# 删除或编码输入中的特殊HTML字符,如<, >, ", '等
return input.replace("<", "<").replace(">", ">").replace("\"", """).replace("'", "'")
function displayResponse(userInput):
# 读取用户输入
query = userInput
# 清理输入数据
safeQuery = sanitize(query)
# 安全地显示响应
# 清理防止执行恶意代码
print("Odpowiedź na Twoje pytanie: " + safeQuery)
该漏洞(以及一系列其他漏洞)已向制造商报告并修复。
漏洞复制
自动化的一个主要缺点是同一代码在多个地方的重复,这可能导致大规模的错误或漏洞传播。当漏洞存在于生成代码的组件中时(AI可能基于有错误的代码进行训练),每个使用该代码的应用程序或系统都可能面临风险。这种现象扩大了安全问题,使其难以管理和修复。
审计和代码审查的困难
自动生成的代码通常较为复杂,或以“人类”程序员不直观的方式生成。这可能会使手动代码审查变得困难,而手动代码审查对于识别微妙的逻辑错误或安全漏洞至关重要。缺乏生成代码的透明性和可理解性可能导致在安全测试过程中遗漏重要问题。
新类型的漏洞
自动化可能引入以前手动代码编写不太可能出现的新类型漏洞。例如,自动生成模块之间的依赖关系可能未被开发人员完全理解或控制,这为依赖性和应用逻辑相关的攻击打开了大门。也会出现如“提示注入”等新类型的漏洞。
LLM应用的OWASP Top 10
OWASP一年前开始了旨在识别和发布LLMA使用中最大威胁防护建议的工作 – LLM应用的OWASP Top 10。列表如下:
LLM01:提示注入
通过适当的数据输入操纵大语言模型(LLM)以导致LLM执行意外操作。直接注入覆盖系统提示,而间接注入则操纵外部来源的数据。
LLM02:不安全的输出处理
当LLM的输出未经检查就被接受时会出现漏洞,可能会使后台系统面临风险。滥用可能导致严重后果,如XSS、CSRF、SSRF、权限提升或远程代码执行。
LLM03:训练数据中毒
发生在LLM的训练数据被操纵时,导致安全漏洞或错误影响其安全性、有效性或伦理行为。来源包括Common Crawl、WebText、OpenWebText和书籍。
LLM04:模型委托
攻击者在LLM上引发资源密集型操作,导致服务退化或高成本。由于LLM的资源密集性和用户输入的不确定性,该漏洞被放大。
LLM05:供应链漏洞
LLM应用程序的生命周期可能受到易受攻击的组件或服务的影响,导致安全攻击。使用外部数据集、预训练模型和插件可能增加漏洞数量。
LLM06:机密信息泄露
LLM可能在其响应中无意透露机密数据,导致未经授权的数据访问、隐私泄露和安全漏洞。实施数据清理和严格的使用策略以防止这种情况至关重要。
LLM07:插件设计不安全
LLM插件可能存在不安全的输入数据和不足的访问控制。缺乏应用控制易于被利用,可能导致远程代码执行等后果。
LLM08:过度自主性
基于LLM的系统可能会采取导致意外结果的操作。问题源于过度功能、过多权限或授予LLM系统的自主性。
LLM09:过度依赖
系统或人员过度依赖LLM而缺乏监督,可能面临错误信息、沟通错误、法律问题和安全错误,因为LLM生成的内容不正确或不适当。
LLM10:模型盗窃
涉及未经授权的访问、复制或窃取专有LLM模型。影响包括经济损失、竞争优势丧失和潜在的机密信息访问。
怎么办?如何生活?
OWASP与LLLM Top 10列表一起发布了一系列关于在组织中实施LLM的安全方法的建议 – LLM AI网络安全和治理检查清单。以下是编程方面的建议:
- 为LLM组件建模威胁并设置架构信任边界。
- 数据安全:检查数据根据敏感度分类 和保护的方式,包括个人和公司数据。(如何管理用户权限,实施了哪些保护机制?)
- 访问控制:实施最小权限原则的访问控制,并采用多层防御措施。
- 培训过程安全:严格控制培训数据、过程、模型和算法的管理。
- 输入和输出安全:评估输入验证方法以及过滤、清理和批准输出的方式。
- 监控和响应:映射工作流、监控和响应以理解自动化,确保日志记录和审计。确认审计记录的安全性。
- 在产品开发过程中纳入应用测试、源代码审查、漏洞评估和渗透测试。
- 检查LLM模型或供应链中的现有漏洞。
- 考虑威胁和攻击对LLM解决方案的影响,例如提示注入、机密信息泄露和模型操纵。
- 研究威胁和攻击对LLM模型的影响,包括模型中毒、不安全数据处理、供应链攻击和模型盗窃。
- 供应链安全:要求第三方审计、渗透测试和代码审查(不仅在开始时,还要定期进行)。
- 基础设施安全:询问供应商多久进行一次抵抗性测试?他们在可用性、可扩展性和性能方面的服务级别协议是什么?
- 更新应急响应手册,并将LLM相关事件纳入持续的安全演练情景中。
- 确定或扩展度量指标,以将生成性AI在网络安全中的效果与其他方法进行比较,以衡量预期的性能改进。