DVFaaS - 매우 취약한 함수 서비스
AWS Lambda에서 수많은 매우 불안전한 함수를 배포하고 실행할 수 있는 DHIY(직접 배포하고 해킹해보세요) 프로젝트입니다.

목표 및 대상
- we45에서는 서버리스 보안, 클라우드, 그리고 현대 웹 스택의 보안에 관한 많은 교육을 진행합니다.
- 우리는 개발자, 아키텍트, DevOps 및 보안 담당자가 이러한 현대적 구성 요소의 위험을 배우고 이해해야 할 필요성이 크다고 굳게 믿습니다.
- 이 프로젝트는 의도적으로 취약하게 만든 서버리스 앱(FaaS)을 개발하는 교육 노력의 결정체이며, 이를 더 넓은 커뮤니티에 공개하기로 결정했습니다.
이 프로젝트는 다음과 같은 경우에 적합합니다:
- 서버리스 앱, 특히 FaaS 구현의 보안 결함에 대해 배우고 싶은 경우.
이 프로젝트는 다음과 같은 경우에는 적합하지 않습니다:
- 자신만의 함수를 배포(및 실행)하고 싶지 않은 경우. 여기서의 아이디어는 직접 해보면서 배우는 것입니다.
참고 사항:
- 함수는 AWS Lambda에 배포되는 것을 목표로 합니다. 그러나 원리와 개념은 전반적으로 적용됩니다.
- 대부분의 함수는 Python, 특히
chalice라는 프레임워크(AWS Lambda에서 Python용)로 작성되었습니다. 이러한 함수를 Lambda 환경에 배포하는 것은 비교적 간단합니다.
- 궁극적으로 이 프로젝트는 여기에서 찾을 수 있는 OWASP Serverless Top 10에 매핑되지만, 일부 예제는 다를 수 있습니다.
- 이 프로젝트의 ops(배포)는 주로 Terraform으로 수행됩니다. 문서는 여기에서 확인하세요.
- 각 예제에는 설치 지침 등이 포함된 README가 있습니다. 여러 경우에, 여러 예제의 배포가 ove
요구 사항
코드
- Python 3.6
- Pipenv (의존성 관리)
- Chalice
- PyYAML
- HTTPie
- 다양한 AWS 구성 요소의 배포/설정에 필요한 루트 또는 높은 권한을 가진 AWS CLI
- jq
AWS 리소스
- RDS => MySQL (Free Tier 자격 대상)
- DynamoDB (Free Tier 자격 대상)
- Amazon SNS (토픽용 Pub/Sub)
- Amazon Lambda, 알다시피....함수용입니다.
- Amazon Cloudwatch Logs
면책 조항
개인/비프로덕션 계정에서만 사용하십시오
우리는 누구든지 이러한 함수(DVFaaS)를 사용하는 방식에 대해 책임을 지지 않습니다. 우리는 애플리케이션의 목적을 분명히 밝혔으며 악의적으로 사용되어서는 안 됩니다. 우리는 사용자가 DVFaaS를 프로덕션 계정에 설치하지 못하도록 경고하고 조치를 취했습니다.
AWS 계정에서 이를 실행하는 데 필요한 필수 권한(있는 경우)은 사용자 본인에게 책임이 있습니다.
설치 및 설정
- 프로젝트를 Git 클론하세요
git clone <URL>
- 우리는 프로젝트의 의존성 관리를 위해 pipenv를 사용합니다.
pipenv install을 사용하여 모든 의존성을 설치할 수 있습니다
- 각 랩에는 자체 배포 사양이 있습니다. 대부분의 경우 각 랩에는 배포를 관리하는 데 사용되는
ops라는 특정 배포 디렉터리가 있습니다
- 우리는 http 클라이언트로
httpie를 강력히 권장합니다. 명령줄에서 매우 사용하기 쉽기 때문입니다
- 일부 배포의 경우 Terraform을 사용하여 배포를 수행하고 AWS IAM Roles 등을 설정합니다.
- 이 모든 것이 작동하려면 aws cli로 AWS에 대한 높은/루트 권한이 있어야 합니다.
- 현재 모든 실습에 Chalice(AWS Lambda용 Python 프레임워크)를 사용하고 있습니다.
- 모든 랩에는 배포 목적으로 chalice가 인식하는
.chalice 폴더가 있습니다.
- 대부분의 랩에서는 배포를 설정하기 위해
.chalice/config.json 파일을 구성해야 합니다. 이 정보는 각 랩의 README를 읽으십시오.
이는 배포 후에 수행해야 합니다(해당되는 경우 ops 디렉터리).
- 완료되면 단순한
chalice deploy 명령 하나로 배포가 상당히 쉬워집니다. 이 명령은 Lambda 함수를 AWS 계정으로 푸시합니다:
- 이 모든 것이 작동하려면 aws cli로 AWS에 대한 높은/루트 권한이 있어야 합니다.
TODO
- 배포 및 공격 실행을 설명하는 비디오 시리즈
- GraphQL 예제
- NodeJS 예제