微信扫码
添加专属顾问
我要投稿
知名程序员也中招AI编程陷阱,啄木鸟团队深度解析XSS漏洞风险。 核心内容: 1. 知名程序员Simon Willison遭遇AI编程安全问题 2. AI助手生成代码隐藏XSS漏洞的过程解析 3. XSS漏洞如何引发公司数据泄露灾难
在程序员的世界里,Simon Willison是一个知名人物。
他不仅是Django框架的联合创始人,几乎每一位开发者,都用过他写的Django Web框架(全球超过60%的Python Web应用基于此框架开发),还是创造了开源工具Datasette,在github上拿下9.9k star的优秀开源者。
就是这样一位堪比“程序员启蒙”式的地表最强开源者,也没逃过AI的谎言。
他用AI助手生成的代码中,竟藏着经典的XSS漏洞。
附:关于AI编程其中的风险及漏洞原理,我们的AI安全系列文章有详细介绍过—最新AI叛变!除了祈祷,程序员还能做什么?
Simon的遭遇是个典型的技术蒙太奇,整个过程仅仅用了三步,并且他无意间在博客里记录下了自己的“受害”过程(tools.simonwillison.net | tools)。
第一步
他决定开发一个支持HTML富文本的幻灯片工具,允许用户上传自定义内容,可以用于处理演示文稿,有创建幻灯片,处理图片,生成 HTML 代码等一系列能力。
第二步
他调用了AI助手进行编程,向AI助手描述了详细的功能需求,要求AI助手输出一段代码。
第三步
AI助手根据他的需求,生成了一段符合需求的代码。
可惜的是这段代码并未做安全过滤,而且经啄木鸟AI编程安全团队验证,这段代码存在XSS安全漏洞。如果黑客利用了这个漏洞,可以把作恶触手伸到每一个用了这段开源代码的公司。
注:我们已在尝试与该作者取得联系,告知我们的风险扫描结果,并期待协助解决。
——假设用AI写的这个有xss漏洞的项目,流入市场,被黑客利用后,将会面临什么?
你是一位开发,有一天接到需求,要开发一个活动公告板,用来发布公司的活动通知(如培训日程、年会安排)。产品经理说,公告板需要支持上传富文本内容,因为要用html来美化内容排版。
你在github上进行一番搜索,发现了一个这个开源项目刚好符合你们的需求,于是你复用了其中的代码,交付了需求,活动公告板顺利上线。
但同时黑客发现了这段代码里存在XSS漏洞,并且利用了它,往公告功能里插了一段恶意脚本,且这段脚本会获取企微聊天记录、系统密码等。
之后每一位点开公告查看的同事,都会被窃取聊天记录和账号密码,恶意脚本渗透到全公司员工的电脑中,黑客就这样轻而易举获取你们公司的全部系统权限和机密文件。
(啄木鸟团队验证该漏洞属实)
先说说漏洞原理和特征
XSS的本质是浏览器误将用户输入当作代码执行 。比如用户提交<script>窃取cookie的代码</script>,未过滤的网站会直接执行该脚本,导致所有网站访问者信息泄露。
举个简单的栗子?,你是个超市老板(网站发布者/编写者),进货的时候,黑客在货物中偷偷做了手脚(利用漏洞),每一个顾客来买东西,只要靠近这批货,都会被伤害。
这里的“伤害”,可能就是用户的个人信息、账号密码、信用卡密码等信息被黑客窃取。
为什么漏洞会流入市场?
(1)隐蔽性:恶意脚本通常被巧妙地隐藏,看似只是普通的HTML标签或格式化内容,开发者和用户往往难以察觉其潜在的危险。而黑客可能将恶意脚本藏在公告、广告、评论或任何可以输入的地方,外观上没有任何异常。
(2)开发者疏忽:在开发过程中,许多开发者可能忽视了对用户输入的过滤和安全检查,尤其是在时间紧张或重视功能实现、界面美化的情况下。由于缺乏安全性意识,恶意脚本得以执行。
(3)第三方库和开源项目的风险:开发者常使用开源项目来加速开发,但有些开源代码可能存在安全漏洞。如果这些项目没有经过充分审查,漏洞便可能被引入到实际应用中。
如何对抗XSS漏洞?
(1) 输入过滤:所有用户输入的数据都应该经过严格的检查和清理,尤其是针对HTML、JavaScript等敏感代码。通过对特殊字符(如 <、>、& 等)进行编码或替换,以确保不同类型的输入都能得到妥善处理。
(2) 输出转义:即便对用户输入进行了过滤,也不能掉以轻心。当将用户输入的数据插入到HTML、JavaScript或CSS等内容中时,必须确保这些数据不会被浏览器当作代码执行。通过对输出数据进行转义(例如将 < 转换为 <),可以有效防止潜在的XSS攻击。
(3) 内容安全策略(CSP):CSP是一种浏览器端的安全机制,通过指定允许加载的资源和执行的脚本来源,来减少XSS攻击的风险。即便攻击者成功注入了恶意脚本,也无法从不受信任的源加载或执行这些脚本。通过配置严格的CSP规则,开发者可以进一步减少XSS漏洞带来的影响。
(4) 漏洞狩猎:AI虽然容易被坏人利用,用来生成漏洞。但我们也可以利用AI来识别和修复漏洞。随着AI技术的发展,越来越多的安全团队用AI做漏洞检出和修复,我们啄木鸟AI编程安全团队也在对此场景做对应能力建设。
✧ 静态扫描 :针对多种语言、不限框架项目代码,通过大模型针对项目函数进行依次识别,精准分析出与web入口点相关的代码(即处理用户输出信息的入口函数),通过大模型的精准语义和代码逻辑理解能力,识别未经安全过滤的输入点,转换成后续检测逻辑可使用的信息,帮助提升xss漏洞的检测效果。
✧ 动态测试 :自动化工具模拟攻击者注入<svg onload=alert(1)>等500种XSS变体,验证防护是否生效。
Simon的案例揭示了一个悖论:AI既可以是安全守护者,也可以是漏洞制造者。2025年某企业通过AI模型自动修复了83%的XSS漏洞,但同期由AI生成的漏洞数量也增长了55%。
在使用AI进行编程时,需要注意以下问题:
1. 零信任原则:永远怀疑AI的“完美答案”
● 在Prompt中强调安全要求:在向AI提出编程请求时,务必明确要求生成的代码符合安全标准。例如,提示AI“请生成防XSS的Python代码,使用Django自动转义机制”以确保AI生成的代码具备基本的安全防护。
● 对AI生成代码进行“红队测试”:即模拟攻击者利用漏洞进行渗透测试。通过人工验证输入处理代码的逻辑,确保其能够有效防止XSS攻击。
2. 建立安全协作流水线
AI编程带来的安全问题始终存在,开发团队不应忽视。建议建立自有的安全协作流水线,把安全测试和代码审计贯穿始终。
● 每一次AI生成的代码都应该经过严格的安全审查和自动化测试,确保 AI 遵循了企业的安全编码规范。
● 自动化工具应与人工审核相结合,确保AI生成的代码不会成为攻击的源头。持续监督AI的行为并调整,确保其不断适应新的安全威胁。
3. 警惕供应链污染
● 优先选择经过安全审计的开源项目:优先使用那些已经经过严格安全审计的项目,这样至少能保证代码源是可信的。
● 使用SBOM(软件物料清单):SBOM常用于跟踪软件组件及其依赖关系的工具。通过SBOM,开发者能够清晰地了解所有依赖项的来源和版本,从而减少潜在的安全风险。如果发现某个依赖项存在安全漏洞,可以迅速采取措施进行替换或修复。
我们作为专注AI编程安全的研究团队,也在不断改进和推出针对这一类场景的定向防护解决方案。例如,啄木鸟3.0系统,专注于自动识别和修复AI生成代码中的潜在安全漏洞,帮助开发者更好地管理和应对AI编程带来的安全挑战。
通过这些措施,我们可以在享受AI带来的开发效率提升的同时,确保代码的安全性和可靠性。
在这个技术与风险赛跑的时代,唯有将安全意识植入开发基因,方能避免“用AI挖坑,再用AI填坑”的无限循环。
借用一位大佬说的话:“AI的‘成长烦恼’需要技术界与安全界共同应对——既要享受技术红利,也要筑牢防护根基。”
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-16
OneFileLLM:一键整合海量数据源
2025-04-16
强强联合!LangChain与CrewAI构建基于RAG的智能查询解答系统
2025-04-16
向量嵌入四种实现方式
2025-04-15
Cloudflare AutoRAG:把RAG应用变得和安装微信一样简单
2025-04-15
RAG优化策略总结
2025-04-15
其实RAG也是智商税,聊聊他与AI知识库的关系
2025-04-15
Dify+RAGFLow:基于占位符的图片问答升级方案(最佳实践)
2025-04-14
Open WebUI中调用RAGFlow的聊天机器人——适合构建个人和企业级知识问答助手
2024-10-27
2024-09-04
2024-07-18
2024-05-05
2024-06-20
2024-06-13
2024-07-09
2024-07-09
2024-05-19
2024-07-07