亚马逊AWS官方博客
基于生成式 AI 预防非法 Lambda 脚本执行的解决方案
前言
在 Lambda 的实际应用中,开发者通常会将本地代码打包成 tar 文件并上传至 Lambda 环境中执行。
然而,这种便捷的部署方式可能隐藏着潜在的安全隐患:恶意用户可能借此上传并运行非法脚本,对系统安全造成威胁。本文将详细介绍一个专门设计的代码审核解决方案,帮助您有效预防这类安全风险。
场景分析
![]() |
目前,将代码上传至 Amazon Lambda 的标准流程可能存在两类主要安全风险:
- 直接植入型风险:用户上传的代码本身包含恶意代码。
- 间接下载型风险:代码在运行过程中,通过下载方式获取并执行恶意代码。
优化解决方案
为了解决这个问题,一种比较简单的思路是对这个流程本身做一些类审计的修改调整:
![]() |
1. 预防性代码审计
在代码打包阶段:
- 对源代码进行安全审计扫描
- 发现异常行为立即终止流程并告警
- 验证通过后才允许打包上传至Lambda
2. 运行时安全监控
在代码执行阶段:
- 部署流量限制机制
- 实时进行安全行为检测
- 发现异常立即中断执行并向用户报警
这种“事前审计+实时监控”的双重防护机制,能有效预防和控制潜在的安全风险。
优化解决方案
实验组与对照组
安排如下三组代码进行测试,参考代码见:https://github.com/skerava/bedrockDemo
![]() |
实验框架
![]() |
在上传代码打包前,我们采用大模型进行初步的代码审核。具体流程如下:
代码预审核阶段
- 全面扫描代码脚本:利用大模型的 tool use 功能,对用户上传的所有代码文件进行读取与解析。
- 非法代码检测:大模型依据预定义的安全策略与规则,对代码中可能存在的非法行为进行判断。
- 合规性验证:只有通过审核的代码才会进入下一阶段,随后进行打包,并上传至 Amazon Lambda 执行环境。
运行时安全机制
在 Lambda 运行环境中,我们通过添加一层专用的 Lambda Layer —— Security Layer,实现对用户代码运行时的实时安全监控。该机制的核心设计如下:
- 入口控制:Security Layer 的初始化入口被设定为 Lambda Function 的实际启动入口,从而确保整个执行流程均受控于安全层。
- 流量与请求监控:在该层中,可对用户代码的外部流量进行限速控制;同时,通过对常用库(例如 requests)的 GET 请求进行 monkey patch,实现自定义的请求方法,以便在运行时嵌入额外的安全检测逻辑。
- Layer 代码:详情见附录 F
动态安全检测
- 文件下载与预执行扫描:在实验中,通过对用户代码进行 monkey patch,当用户下载文件后,在执行前先将文件内容提交给大模型进行安全扫描。
- 异常处理:若大模型检测到代码中存在非法特征,则立即抛出错误,终止后续执行,确保系统安全。
实验结论与优势
- 上传前检测:在代码打包上传前,即可对脚本进行全面的安全审查,大大降低恶意代码进入生产环境的风险。
- 运行时透明安全防护:在 Lambda 运行时,通过额外的 Security Layer,在完全不修改用户原始代码的情况下,实现以下功能:
- 对下载内容进行实时检测与审查;
- 限速控制,防止异常流量;
- 异常行为告警;
- 利用已知非法特征库的 hashmap 进行快速匹配与拦截。
总的来说,该架构在代码上传前与运行时均实现了全方位的安全防护,为 AWS Lambda 环境提供了一种高效、透明且无缝的安全解决方案。任何安全相关的需求都可在此基础上进一步拓展和定制,从而满足各种复杂的安全策略需求。
附录
附录 A A.py 上传结果
附录 B B.py 上传结果
附录 C C.py 上传结果
附录 D D.py 上传结果
附录 E E.py 上传结果
附录 F
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。