Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Is Serverless Safe? ~Hacking AWS Lambda~

Is Serverless Safe? ~Hacking AWS Lambda~

I spoke this content at Cyber-sec+ vol.2 Dec.5 2023.

Yutaka Hiroyama

December 05, 2023
Tweet

More Decks by Yutaka Hiroyama

Other Decks in Technology

Transcript

  1. 自己紹介 •氏名:廣山 豊 •所属:アイレット株式会社 クラウドインテグレーション事業部副事業部長 兼 内部統制推進室室長 •役割:情報管理責任者 兼 PCI DSS管理責任者

    兼 AWS Well Architected Lead 兼 品質管理責任者 •AWS Top Engineers - 2019 ~ <初回から継続中> •AWS, 情報処理安全確保支援士、 その他多数の認定資格を保有
  2. このLambdaファンクションで、他の人のデータを盗める? import json
 import yaml
 
 def Handler(event, context): 


    data = yaml.load(event[“body”]["Data"]) 
 store_data(data)
 
 return {
 "statusCode" : 200, 
 "body" : “OK!!”
 }
 import json
 import yaml
 
 def Handler(event, context): 
 data = yaml.load(event[“body”]["Data"]) 
 # store_data(data)
 
 return {
 "statusCode" : 200, 
 "body" : “OK!!”
 }

  3. AWS Lambda の仕組み 以下の3点が、今回のお話の肝となります。 • コールドスタート時に、コンテナが生成される • bootstrap (ランタイム)はユーザーが記載するコード(ハンドラ)と同じコンテナ環境に存在する •

    ランタイム はハンドラの呼び出しとレスポンスの返却をループ処理で繰り返す 引用) https://aws.amazon.com/jp/blogs/compute/the-serverless-lamp-stack-part-3-replacing-the-web-server/ https://medium.com/build-succeeded/deconstructing-aws-lambda-functions-d1597dd054cd
  4. bootstrap の改ざん手順 ざっくりとした手順は以下。 1. 正規の bootstrap をベースに加工した bootstrap を用意する 2.

    加工した bootstrap を、既存の bootstrap と差し替えるスクリプトを用意する 3. 攻撃対象の Lambda に対し、1, 2 のスクリプトを展開させるような YAML データを 付属の上、呼び出す 正規の bootstrap の振る舞いも続けるため、利用者および Lambda の保守担当者は 気づきにくい。 成功すれば、そのコンテナ環境に次回以降くるリクエストに付随するデータを搾取可能。
  5. 問題箇所のコード import json
 import yaml
 
 def Handler(event, context): 


    data = yaml.load(event[“body”]["Data"]) 
 # store_data(data)
 
 return {
 "statusCode" : 200, 
 "body" : “OK!!”
 }