DVFaaS - Funções Propositalmente Vulneráveis como um Serviço
Um projeto DHIY (Deploy and Hack It Yourself) no qual você pode implantar e executar um monte de funções 'horrivelmente inseguras no AWS Lambda

Objetivo e Público-alvo
- Nós, da we45, fazemos muito treinamento em torno de Segurança Serverless, Cloud e segurança de stacks web modernas.
- Acreditamos fortemente que há uma grande necessidade de desenvolvedores, arquitetos, profissionais de DevOps e Segurança aprenderem e entenderem os riscos desses componentes modernos.
- Este projeto é o resultado dos nossos esforços de treinamento no desenvolvimento de aplicações Serverless (FaaS) intencionalmente vulneráveis, que decidimos disponibilizar para a comunidade em geral.
Este projeto é ótimo para você, se:
- Você quer aprender sobre falhas de segurança em aplicações serverless, especificamente implementações FaaS.
Este projeto não é para você, se:
- Você não quer implantar (e executar) suas próprias funções. A ideia aqui é que você aprenda fazendo.
Por favor, observe:
- As funções são direcionadas para serem implantadas no AWS Lambda. Mas os princípios e conceitos se aplicam de forma geral.
- A maioria das funções é em Python, especificamente em um framework chamado
chalice (feito para Python no AWS Lambda). A implantação dessas funções no seu ambiente lambda é razoavelmente simples.
- Em última análise, o projeto mapeia o OWASP Serverless Top 10, encontrado aqui, mas alguns exemplos podem variar.
- As operações (implantação) deste projeto são feitas em grande parte com Terraform. Consulte a documentação aqui.
- Cada exemplo tem um README, com instruções de instalação, etc. Em muitos casos, a implantação de vários exemplos ove
Requisitos
Código
- Python 3.6
- Pipenv (gerenciamento de dependências)
- Chalice
- PyYAML
- HTTPie
- AWS CLI com privilégios de root ou elevados, necessários para implantação/configuração de vários componentes AWS.
- jq
Recursos AWS
- RDS => MySQL (elegível ao Free Tier)
- DynamoDB (elegível ao Free Tier)
- Amazon SNS (Pub/Sub para Tópicos)
- Amazon Lambda, você sabe....para funções
- Amazon Cloudwatch Logs
Aviso Legal
Use apenas em contas pessoais/não destinadas à produção
Não nos responsabilizamos pela forma como qualquer pessoa utiliza estas funções (DVFaaS). Deixamos claros os propósitos da aplicação e ela não deve ser usada de forma maliciosa. Demos avisos e tomamos medidas para impedir que usuários instalem DVFaaS em contas de produção.
Você é responsável pelas autorizações necessárias (se houver) para executar isto na sua conta AWS.
Instalação e Configuração
- Clone o projeto com
git clone <URL>
- Estamos usando pipenv para gerenciar as dependências do projeto. Você pode usar
pipenv install para instalar todas as dependências.
- Cada laboratório tem sua própria especificação de implantação. Na maioria dos casos, há um diretório de implantação específico em cada laboratório chamado
ops, usado para gerenciar as implantações.
- Recomendamos fortemente o uso de
httpie como cliente http, pois é de linha de comando e muito fácil de usar.
- Para algumas implantações, usamos Terraform para realizar implantações e configurar AWS IAM Roles e assim por diante.
- Por favor, observe que você precisará ter privilégios elevados/root na AWS com a aws cli para que tudo isso funcione.
- Atualmente, para todos os exercícios, estamos usando Chalice (um framework AWS Lambda em Python).
- Todos os laboratórios têm uma pasta
.chalice que é reconhecida pelo chalice para fins de implantação.
- Para a maioria dos laboratórios, você precisará configurar o arquivo
.chalice/config.json para configurar a implantação. Leia o README de cada laboratório para essas informações.
Isso deverá ser feito após a implantação (que são os diretórios ops, quando aplicável).
- Feito isso, a implantação é razoavelmente fácil, com um simples comando
chalice deploy que enviará sua função Lambda para a sua conta AWS:
- Por favor, observe que você precisará ter privilégios elevados/root na AWS com a aws cli para que tudo isso funcione.
A Fazer
- Série de vídeos explicando implantação e execução de ataques
- Exemplos GraphQL
- Exemplos NodeJS