AWS - Abusing Lambda Extensions

htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ

HackTricks をサポートする他の方法:

Lambda Extensions

Lambda拡張機能は、さまざまな監視、可観測性、セキュリティ、ガバナンスツールと統合して、関数を強化します。これらの拡張機能は、Lambdaレイヤーを使用して.zipアーカイブを追加するか、コンテナイメージデプロイメントに含まれており、内部モードと外部モードで動作します。

  • 内部拡張機能は、言語固有の環境変数ラッパースクリプトを使用して、ランタイムプロセスにマージし、起動を操作します。このカスタマイズは、Java Correto 8および11、Node.js 10および12、.NET Core 3.1などのランタイムに適用されます。

  • 外部拡張機能は、別々のプロセスとして実行され、Lambda関数のライフサイクルと操作が整合されます。これらは、Node.js 10および12、Python 3.7および3.8、Ruby 2.5および2.7、Java Corretto 8および11、.NET Core 3.1、およびカスタムランタイムと互換性があります。

lambda拡張機能がどのように動作するかについての詳細は、ドキュメントを参照してください

持続性、リクエストの盗み出し、リクエストの変更のための外部拡張機能

これは、この投稿で提案されている技術の要約です: https://www.clearvector.com/blog/lambda-spy/

Lambdaランタイム環境のデフォルトLinuxカーネルは、「process_vm_readv」および「process_vm_writev」システムコールでコンパイルされていることがわかりました。そして、新しいプロセスも含め、すべてのプロセスは同じユーザーIDで実行されます。つまり、外部拡張機能は設計上、Rapidのヒープメモリに完全な読み取りおよび書き込みアクセス権を持っています。

さらに、Lambda拡張機能は呼び出しイベントにサブスクライブする機能を持っていますが、AWSはこれらの拡張機能に生データを公開しません。これにより、HTTPリクエストを介して送信される機密情報にアクセスできないようになっています。

Init(Rapid)プロセスは、Lambda拡張機能が初期化され、実行される前に、すべてのAPIリクエストをhttp://127.0.0.1:9001で監視します。

変数**AWS_LAMBDA_RUNTIME_APIは、子ランタイムプロセスと追加の拡張機能にRapid APIのIPアドレスとポート**番号を示します。

AWS_LAMBDA_RUNTIME_API環境変数をアクセス可能なポートに変更することで、Lambdaランタイム内のすべてのアクションを傍受することが可能です(中間者攻撃)。これは、拡張機能がRapid Initと同じ特権で実行され、システムのカーネルがプロセスメモリの変更を許可しているため可能です。

拡張機能はランタイムコードの実行前に実行されるため、環境変数を変更すると、ランタイムプロセス(例:Python、Java、Node、Ruby)に影響を与えます。さらに、私たちの後にロードされる拡張機能も、この変数に依存するため、私たちの拡張機能を経由してルーティングされます。このセットアップにより、マルウェアがセキュリティ対策やログ拡張機能を完全にバイパスしたり、ランタイム環境内で直接ログ拡張機能を迂回することが可能になります。

lambda-spyツールは、そのメモリ書き込みを実行し、Lambdaリクエストから機密情報を盗み出し、他の拡張機能のリクエストさえも変更するために作成されました。

参考文献

htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ

HackTricks をサポートする他の方法:

最終更新