Introdução
Obrigado por usar o OWASP ServerlessGoat!
Esta aplicação serverless demonstra falhas comuns de segurança serverless descritas no guia Serverless Security Top 10 Weaknesses https://github.com/puresec/sas-top-10.
O ServerlessGoat foi criado para os seguintes propósitos educacionais:
- Ensinar desenvolvedores e profissionais de segurança sobre riscos e fraquezas comuns na camada de aplicação serverless
- Educar sobre como as fraquezas da camada de aplicação serverless podem ser exploradas
- Ensinar desenvolvedores e profissionais de segurança sobre as melhores práticas de segurança serverless
Você pode encontrar mais informações sobre o WebGoat em: https://www.owasp.org/index.php/OWASP_Serverless_Goat
AVISO 1: Esta aplicação contém vulnerabilidades. Use-a apenas para fins de treinamento.
AVISO 2: Este programa é apenas para fins educacionais. Não tente estas técnicas sem autorização dos proprietários da aplicação.
NOTA: A aplicação foi desenvolvida de tal forma que não deve colocar sua conta AWS em risco. As vulnerabilidades introduzidas estão contidas dentro dos limites desta aplicação específica. No entanto, os usuários não são incentivados a implantar a aplicação em ambientes de produção.
Implantação
O ServerlessGoat é uma aplicação simples do AWS Lambda que serve como um serviço de conversão de arquivos MS-Word .doc para texto simples. Ela recebe uma URL de um arquivo .doc como entrada e retornará o texto contido no documento ao chamador da API.
A aplicação é empacotada e publicada para implantação através do AWS Serverless Application Repository.
Etapas para implantação:
- Certifique-se de que você está conectado à sua conta AWS
- Clique no seguinte link: AWS Serverless Application Repository
- Clique em 'Implantar'
- Clique em 'Implantar' (novamente)
- Aguarde até ver a mensagem 'Sua aplicação foi implantada'
- Clique em 'Visualizar Pilha CloudFormation'
- Em 'Saídas', você encontrará a URL da aplicação (WebsiteURL)
Folha de Dicas
O passo a passo completo das lições (em desenvolvimento) pode ser encontrado no arquivo LESSONS.md
Os seguintes problemas de segurança existem na aplicação:
- Injeção de dados de evento, levando à injeção de comandos do sistema operacional (SAS-01)
- Os usuários podem invocar a API com um valor de parâmetro
document_url contendo comandos Linux do sistema operacional. Ex.: ; ls -LF
- Tratamento inadequado de exceções e mensagens de erro detalhadas (SAS-10), levando à divulgação de informações confidenciais
- Por exemplo, invocar a API sem o parâmetro obrigatório retornará um stack trace/exceção detalhado
- Configuração de implantação serverless insegura (SAS-03)
- Bucket S3 aberto publicamente (seu nome pode ser descoberto a partir do subdomínio/prefixo da URL)
- O parâmetro
document_url não é definido como um parâmetro 'obrigatório' no API Gateway e pode ser omitido
- Permissões e papéis excessivamente privilegiados da função, levando ao vazamento de informações armazenadas em uma tabela DynamoDB (SAS-04)
- A função tem permissões CRUD na tabela Dynamo, que podem ser abusadas para ler dados confidenciais ou manipular dados
- A função tem política FullAccess no bucket S3, levando à adulteração de dados e vazamento de dados, etc.
- Monitoramento e registro de logs inadequados da função (SAS-05) - a aplicação não registra adequadamente ataques e erros da camada de aplicação (pode ser demonstrado através do CloudWatch/CloudTrail)
- Dependências inseguras de terceiros (SAS-06) - podem ser detectadas ao escanear o projeto com uma ferramenta de varredura OSS
- O pacote vulnerável é
node-uuid
- Negação de Serviço na camada de aplicação (SAS-08), que pode ser facilmente demonstrada
- Um atacante pode invocar a API recursivamente várias vezes, essencialmente gerando instâncias suficientes para atingir o limite de capacidade reservada da função (que é definido como 5). Por exemplo:
https://i92uw6vw73.execute-api.us-east-1.amazonaws.com/Prod/api/convert?document_url=https%3A%2F%2Fi92uw6vw73.execute-api.us-east-1.amazonaws.com%2FProd%2Fapi%2Fconvert%3Fdocument_url...
Agradecimentos
O ServerlessGoat foi inicialmente criado e contribuído para a OWASP por Yuri Shapira e Ory Segal, PureSec.