1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コンテナじゃない Lambda はスキャンできない?」を疑って、ZIP Lambda を Sysdig Agentless でスキャンして SBOM と CVE を出すまで

Posted at

はじめに

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 が有効

sysdig-workload-scanning-connected.png


全体の流れ

今回の作業は、重複なく次の 5 ステップで整理できます。

  1. AWS 側の前提確認(CLI / 認証 / リージョン)
  2. Lambda 実行用 IAM Role の作成
  3. ZIP Lambda 作成と動作確認(invoke)
  4. Sysdig Inventory で ZIP Lambda が検出されることを確認
  5. 依存ライブラリを同梱し、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 を返すことを確認できました。

aws-lambda-console-zip-function.png


4. Sysdig Inventory に ZIP Lambda が表示される

Workload Scanning を有効化した後、Sysdig Inventory を確認すると、

  • lambda-zip-sysdig-verify:$LATEST

が AWS Lambda Asset として表示されました。

この時点では「Looks good」と表示され、脆弱性は 0 件でした。
最小コード・依存なしであれば、これは自然な結果です。

sysdig-inventory-lambda-looks-good.png


脆弱性を出すための工夫

あえて依存ライブラリを ZIP に同梱する

次に、「本当にスキャンしている」ことを明確にするため、
ZIP に依存ライブラリを同梱しました。

目的は 検出確認であり、攻撃や悪用ではありません。

同梱した例:

  • requests
  • urllib3
  • PyYAML
  • それらの依存(chardet / idna / certifi など)

手順は以下です。

  1. pip install -t build で依存を build ディレクトリに配置
  2. zip -r function.zip . で ZIP を作り直す
  3. aws lambda update-function-code で Lambda を更新
  4. 再度 invoke して 200 を返すことを確認

このとき、Lambda の CodeSize数百バイト → 約 1.3MB に増加し、
依存同梱が反映されたことを確認できました。


Sysdig 側の結果

Vulnerabilities(脆弱性)

Sysdig の Vulnerabilities 画面で、以下が確認できました。

  • 脆弱性件数: 1(Medium)
  • CVE: CVE-2025-8869
  • 該当パッケージ: pip

これにより、ZIP Lambda に対して 脆弱性評価が実際に実行されていることが確定しました。

sysdig-vulnerability-detected.png


Packages(SBOM 相当)

Packages タブでは 114 件のパッケージが表示されました。

内容を見ると、次の 2 系統が混在していました。

  1. /var/lang/lib/python3.12/site-packages/...

    • ZIP に同梱した Python 依存や Python ランタイム周辺
  2. rpmdb.sqlite, bash, curl-minimal など

    • AWS-managed base image(Lambda 実行環境)由来

これは、Sysdig が ZIP 内のコードだけでなく、
AWS が管理する Lambda 実行環境も含めて SBOM を構築していることを示しています。

sysdig-packages-sbom.png


つまずきポイントまとめ

  • IAM Role 作成で AccessDenied

    • PowerUser でも iam:CreateRole が無い環境がある
  • invoke 時の Invalid base64

    • --cli-binary-format raw-in-base64-out を付ける
  • 最小構成では脆弱性が出ない

    • 依存ライブラリを同梱して検出材料を増やす
  • Sysdig 反映に時間差がある

    • Last seen / Packages 更新時刻を確認

この検証で得られた価値

  • ZIP Lambda でも 可視性の穴が空かない

  • SBOM が生成され、

    • 「Lambda に何が入っているか」を説明できる
  • 脆弱性が CVE として検出され、

    • 既存の運用フロー(優先度付け・対応)に乗せられる

コンテナ Lambda だけでなく、
ZIP Lambda が多い組織ほど効果が大きいと感じました。


後片付け(検証後)

検証用に依存を入れた Lambda は、本番では使わないため削除します。

削除順序は以下です。

  1. Lambda 関数削除
  2. IAM ロールのポリシーデタッチ
  3. IAM ロール削除

まとめ

今回の検証で、次を実環境で確認できました。

  • ZIP 形式 AWS Lambda が Sysdig Inventory に表示される
  • ZIP Lambda から SBOM(Packages)が抽出される
  • ZIP Lambda に対して脆弱性(CVE)が検出される
  • 依存だけでなく、AWS-managed 実行環境も解析対象になる可能性がある

「ZIP Lambda はスキャンされないのでは?」という疑問に対して、
Yes を証拠付きで示せたのが最大の成果です。


次にやるなら、

  • ZIP Lambda とコンテナ Lambda の比較
  • 脆弱性修正後に Sysdig 上でどう変わるか(Remediation)

あたりが面白そうです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?