DVFaaS - 意図的に脆弱な関数サービス(Damn Vulnerable Functions as a Service)
DHIY(デプロイして自分でハックする)プロジェクト。AWS Lambda 上で、ひどく安全でない関数群をデプロイして実行できます。

目的と対象読者
- we45 では、Serverless Security、クラウド、モダンな Web スタックのセキュリティに関するトレーニングを数多く実施しています。
- 私たちは、開発者、アーキテクト、DevOps、セキュリティ担当者が、これらのモダンなコンポーネントに伴うリスクについて学び理解するためのニーズが非常に高いと強く考えています。
- このプロジェクトは、意図的に脆弱なサーバーレスアプリ(FaaS)を開発するという私たちのトレーニングの成果をまとめたものであり、広くコミュニティに公開することにしました。
このプロジェクトは、以下のような方に最適です。
- サーバーレスアプリ、特に FaaS 実装のセキュリティ上の欠陥について学びたい方。
このプロジェクトは、以下のような方には向いていません。
- 自分自身で関数をデプロイ(および実行)したくない方。ここでの考え方は、実際に手を動かして学ぶことです。
注意事項:
- 関数は AWS Lambda へのデプロイを想定しています。ただし、原理とコンセプトはあらゆる環境に適用されます。
- ほとんどの関数は Python で書かれており、特に
chalice(AWS Lambda 上の Python 向け)というフレームワークを使用しています。これらの関数を Lambda 環境にデプロイするのは比較的簡単です。
- 最終的には、このプロジェクトは こちら にある OWASP Serverless Top 10 に対応していますが、一部の例は異なる場合があります。
- このプロジェクトの運用(デプロイ)は主に Terraform で行われます。ドキュメントは こちら を参照してください。
- 各サンプルには README があり、インストール手順などが記載されています。多くの場合、複数のサンプルのデプロイは ove
必要条件
コード
- Python 3.6
- Pipenv(依存関係管理)
- Chalice
- PyYAML
- HTTPie
- さまざまな AWS コンポーネントのデプロイ/セットアップに必要な root または高い権限を持つ AWS CLI
- jq
AWS リソース
- RDS => MySQL(無料利用枠の対象)
- DynamoDB(無料利用枠の対象)
- Amazon SNS(トピック向け Pub/Sub)
- Amazon Lambda、そう、関数のためのもの....
- Amazon Cloudwatch Logs
免責事項
個人用または非本番環境のアカウントのみで使用してください。
私たちは、これらの関数(DVFaaS)がどのように使用されるかについて一切責任を負いません。このアプリケーションの目的は明確にしてあり、悪意を持って使用されるべきではありません。また、ユーザーが DVFaaS を本番環境のアカウントにインストールしないよう、警告を発し、対策を講じています。このツールを AWS アカウントで実行するために必要な承認(もしあれば)は、利用者自身の責任で行ってください。
インストールとセットアップ
- プロジェクトを git clone します
git clone <URL>
- このプロジェクトの依存関係を管理するために pipenv を使用しています。
pipenv install ですべての依存関係をインストールできます。
- 各ラボには独自のデプロイ仕様があります。ほとんどの場合、各ラボには
ops というデプロイ用ディレクトリがあり、デプロイの管理に使用されます。
- HTTP クライアントとして
httpie を強くお勧めします。コマンドラインで非常に使いやすいためです。
- 一部のデプロイでは、Terraform を使用してデプロイを実行し、AWS IAM ロールなどをセットアップします。
- これらすべてを機能させるには、aws cli で AWS に対する高い権限/root 権限が必要であることに注意してください。
- 現在、すべての演習で Chalice(Python 製の AWS Lambda フレームワーク)を使用しています。
- すべてのラボには
.chalice フォルダがあり、デプロイ時に chalice によって認識されます。
- ほとんどのラボでは、デプロイを設定するために
.chalice/config.json ファイルを設定する必要があります。詳細は各ラボの README を参照してください。
これはデプロイ後に行う必要があります(該当する場合は ops ディレクトリで)。
- 設定が完了すれば、
chalice deploy という簡単なコマンドで Lambda 関数を AWS アカウントにプッシュできるため、デプロイはかなり簡単です。
- これらすべてを機能させるには、aws cli で AWS に対する高い権限/root 権限が必要であることに注意してください。
TODO
- 攻撃のデプロイと実行を解説するビデオシリーズ
- GraphQL の例
- NodeJS の例