はじめに
AWS Lambda はサーバレスの代表格で、多くの現場では ZIP 形式でデプロイされています。一方で、セキュリティの文脈ではこんな疑問をよく耳にします。
「Lambda の脆弱性ってどこまで見えるの?」
「コンテナイメージじゃない ZIP Lambda も、本当にスキャンされるの?」
特に Sysdig のようなコンテナセキュリティ製品では、「コンテナじゃないと無理なのでは?」という先入観を持たれがちです。
この記事では、その疑問に対して 机上の説明ではなく、実環境の検証結果で答えを出します。
結論(先に要点)
今回の検証で確認できた結論は以下のとおりです。
- ZIP 形式でデプロイした AWS Lambda は Sysdig Agentless Workload Scanning の対象になる
- Lambda は Sysdig Inventory に Asset として表示される
- ZIP Lambda から SBOM(Packages)が抽出される
- ZIP Lambda に対して 脆弱性(CVE)が実際に検出される
つまり、
「ZIP Lambda でもスキャンされる」
ことを、画面ベースで証明できました。
検証の目的とゴール
目的
-
Sysdig Agentless Workload Scanning が、ZIP 形式の AWS Lambda に対して
- 発見(Discover)
- SBOM 抽出(Packages)
- 脆弱性検出(Vulnerabilities)
まで実行できるかを確認する。
ゴール
- ZIP 形式の Lambda を作成し、
invokeで正常動作する - Sysdig Inventory に Lambda が表示される
- Sysdig で Packages(SBOM)が確認できる
- Sysdig で Vulnerabilities(CVE)が 1 件以上表示される
前提と検証環境
ローカル環境
- OS: macOS
- AWS CLI: aws-cli/2.7.35
- Python: 3.12.x(依存ライブラリ同梱のため)
AWS 環境
- Region: ap-northeast-1(東京)
- Lambda 実行ロール作成が可能な権限を持つアカウント
Sysdig 側前提
- 対象 AWS アカウントが Sysdig に接続済み
- Workload Scanning が Connected
- Lambda Functions scanning enabled が有効
全体の流れ
今回の作業は、重複なく次の 5 ステップで整理できます。
- AWS 側の前提確認(CLI / 認証 / リージョン)
- Lambda 実行用 IAM Role の作成
- ZIP Lambda 作成と動作確認(invoke)
- Sysdig Inventory で ZIP Lambda が検出されることを確認
- 依存ライブラリを同梱し、Sysdig で脆弱性が検出されることを確認
実際にやったこと(つまずきポイント込み)
1. AWS アカウント確認でいきなり詰む
最初に aws sts get-caller-identity で作業中アカウントを確認しました。
すると次の IAM Role 作成ステップで AccessDenied。
原因は、使用していた Permission Set に iam:CreateRole が含まれていなかったことでした。
ここでの学びは次のとおりです。
- 「PowerUser だから大丈夫」と思い込まない
- Lambda の検証でも IAM 権限がボトルネックになる
権限のあるアカウントに切り替えて検証を継続しました。
2. Lambda 実行ロール(IAM Role)の作成
Lambda が sts:AssumeRole できる trust policy を作成し、実行ロールを用意しました。
あわせて CloudWatch Logs 出力用に AWSLambdaBasicExecutionRole をアタッチします。
このロール ARN は、後続の create-function で必須になります。
3. ZIP Lambda を作成して動作確認
検証が目的なので、Lambda のコードは最小構成にしました。
- handler が
statusCode: 200を返す - 入力イベントをそのまま返す
ZIP を作成する際の重要ポイントは、
- ZIP のトップ階層に
lambda_function.pyが存在すること
これを守らないと、Lambda 実行時にハンドラー未検出で失敗します。
invoke 時の落とし穴
aws lambda invoke 実行時に Invalid base64 エラーが発生しました。
これは AWS CLI の挙動により --payload が base64 前提で解釈されるケースがあるためです。
対処として、以下のオプションを付与しました。
--cli-binary-format raw-in-base64-out
これで正常に 200 を返すことを確認できました。
4. Sysdig Inventory に ZIP Lambda が表示される
Workload Scanning を有効化した後、Sysdig Inventory を確認すると、
lambda-zip-sysdig-verify:$LATEST
が AWS Lambda Asset として表示されました。
この時点では「Looks good」と表示され、脆弱性は 0 件でした。
最小コード・依存なしであれば、これは自然な結果です。
脆弱性を出すための工夫
あえて依存ライブラリを ZIP に同梱する
次に、「本当にスキャンしている」ことを明確にするため、
ZIP に依存ライブラリを同梱しました。
目的は 検出確認であり、攻撃や悪用ではありません。
同梱した例:
- requests
- urllib3
- PyYAML
- それらの依存(chardet / idna / certifi など)
手順は以下です。
-
pip install -t buildで依存を build ディレクトリに配置 -
zip -r function.zip .で ZIP を作り直す -
aws lambda update-function-codeで Lambda を更新 - 再度
invokeして 200 を返すことを確認
このとき、Lambda の CodeSize が 数百バイト → 約 1.3MB に増加し、
依存同梱が反映されたことを確認できました。
Sysdig 側の結果
Vulnerabilities(脆弱性)
Sysdig の Vulnerabilities 画面で、以下が確認できました。
- 脆弱性件数: 1(Medium)
- CVE: CVE-2025-8869
- 該当パッケージ: pip
これにより、ZIP Lambda に対して 脆弱性評価が実際に実行されていることが確定しました。
Packages(SBOM 相当)
Packages タブでは 114 件のパッケージが表示されました。
内容を見ると、次の 2 系統が混在していました。
-
/var/lang/lib/python3.12/site-packages/...- ZIP に同梱した Python 依存や Python ランタイム周辺
-
rpmdb.sqlite,bash,curl-minimalなど- AWS-managed base image(Lambda 実行環境)由来
これは、Sysdig が ZIP 内のコードだけでなく、
AWS が管理する Lambda 実行環境も含めて SBOM を構築していることを示しています。
つまずきポイントまとめ
-
IAM Role 作成で AccessDenied
- PowerUser でも
iam:CreateRoleが無い環境がある
- PowerUser でも
-
invoke 時の Invalid base64
-
--cli-binary-format raw-in-base64-outを付ける
-
-
最小構成では脆弱性が出ない
- 依存ライブラリを同梱して検出材料を増やす
-
Sysdig 反映に時間差がある
- Last seen / Packages 更新時刻を確認
この検証で得られた価値
-
ZIP Lambda でも 可視性の穴が空かない
-
SBOM が生成され、
- 「Lambda に何が入っているか」を説明できる
-
脆弱性が CVE として検出され、
- 既存の運用フロー(優先度付け・対応)に乗せられる
コンテナ Lambda だけでなく、
ZIP Lambda が多い組織ほど効果が大きいと感じました。
後片付け(検証後)
検証用に依存を入れた Lambda は、本番では使わないため削除します。
削除順序は以下です。
- Lambda 関数削除
- IAM ロールのポリシーデタッチ
- IAM ロール削除
まとめ
今回の検証で、次を実環境で確認できました。
- ZIP 形式 AWS Lambda が Sysdig Inventory に表示される
- ZIP Lambda から SBOM(Packages)が抽出される
- ZIP Lambda に対して脆弱性(CVE)が検出される
- 依存だけでなく、AWS-managed 実行環境も解析対象になる可能性がある
「ZIP Lambda はスキャンされないのでは?」という疑問に対して、
Yes を証拠付きで示せたのが最大の成果です。
次にやるなら、
- ZIP Lambda とコンテナ Lambda の比較
- 脆弱性修正後に Sysdig 上でどう変わるか(Remediation)
あたりが面白そうです。




