This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Difference between revisions of "OWASP Serverless Goat"

From OWASP
Jump to: navigation, search
(Created page with "<div style="width:100%;height:160px;border:0,margin:0;overflow: hidden;">link=</div> {| style="padding: 0;margin:0;margin-top:10px;text-alig...")
 
(initial release)
Line 2: Line 2:
  
 
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
 
{| style="padding: 0;margin:0;margin-top:10px;text-align:left;" |-
| valign="top" style="border-right: 1px dotted gray;padding-right:25px;" |
+
| valign="top" style="border-right: 1px dotted gray;padding-right:25px;" |
  
<span style="color:#ff0000">
+
== Introduction==
Instructions are in RED text and should be removed from your document by deleting the text with the span tags. This document is intended to serve as an example of what is required of an OWASP project wiki page. The text in red serves as instructions, while the text in black serves as an example. Text in black is expected to be replaced entirely with information specific to your OWASP project.
+
OWASP ServerlessGoat is a deliberately insecure realistic AWS Lambda serverless application, maintained by OWASP. You can install WebGoat, learn about the vulnerabilities, how to exploit them, and how to remediate each issue. The project also includes documentation explaining the issues and how they should be remediated with best-practices.
</span>
 
==Project About==
 
<span style="color:#ff0000">
 
{{:Projects/OWASP_Example_Project_About_Page}}
 
  
 +
As serverless adoption is expected to continue growing and reach new audiences, we see the importance of education on topics such as how to build robust, secure and reliable AWS Lambda serverless applications. This project will expose developers and security practitioners to basic serverless security concepts, risks, attacks and mitigation best-practices.
 +
 +
There were a few key principles that we wanted to follow when designing this demo vulnerable application:
 +
* Make the project open source and free for everyone to use
 +
* Simple and straightforward deployment
 +
* Demonstrate as many serverless security bad practices as possible (we will keep adding more issues, but also hope to see community contributions)
 +
* Design the application to be realistic, and include common 'bad-practices', rather than forcing it to be vulnerable artificially
  
==OWASP Tool Project Template==
+
Given these key principles, we chose to develop and package the application an AWS SAM application that's available for deployment through the [https://aws.amazon.com/serverless/serverlessrepo/ AWS Serverless Application Repository] - however, this meant that we had to use the supported SAM policy templates. While this decision imposes some limitations on what capabilities were available for us, it presented two important benefits:
<span style="color:#ff0000">
+
* The application uses "default" serverless application repository permissions, making it more realistic
This section should include an overview of what the project is, why the project was started, and what security issue is being addressed by the project deliverable. Some readers may be discouraged from looking further at the project if they do not understand the significance of the security concern that is being addressed, so provide enough context so the average reader will continue on with reading the description. You shouldn't assume the reader will understand the objective by providing security terminology, e.g. this project builds cryptographic algorithms, but should also endeavor to explain what they are used for.
+
* The deployment doesn't create custom IAM roles or resource policies
</span>
 
  
The OWASP Tool Template Project is a template designed to help Project Leaders create suitable project pages for OWASP Projects. By following the instructional text in red (and then deleting it) it should be easier to understand what information OWASP and the project users are looking for.  And it's easy to get started by simply creating a new project from the appropriate project template.
+
==  Details==
 +
The application is a service which receives a URL to a Word document (with a .doc extension - Office 97-2004), and will reply with an HTML page containing the extracted text.
  
==Description==
+
=== The vulnerabilities that are included are (* spoiler alert! *)===
<span style="color:#ff0000">
+
* Event-data injection, leading to OS command injection (SAS-01)
This is where you need to add your more robust project description. A project description should outline the purpose of the project, how it is used, and the value it provides to application security. Ideally, project descriptions should be written in such a way that there is no question what value the project provides to the software security community. This section will be seen and used in various places within the Projects Portal. Poorly written project descriptions therefore detract from a project’s visibility, so project leaders should ensure that the description is meaningful. 
+
* Improper exception handling and verbose error messages (SAS-10), leading to sensitive information disclosure
</span>
+
* Insecure Serverless Deployment Configuration, leading to S3 bucket data exposure (SAS-03)
 
+
* Over-privileged function permissions & roles, leading to data leakage of information stored in a DynamoDB table (SAS-04)
The Tool Project Template is simply a sample project that was developed for instructional purposes that can be used to create default project pages for a Tool project.  After copying this template to your new project, all you have to do is follow the instructions in red, replace the sample text with text suited for your project, and then delete the sections in red.  Doing so should make it clearer to both consumers of this project, as well as OWASP reviewers who are trying to determine if the project can be promoted to the next category.  The information requested is also intended to help Project Leaders think about the roadmap and feature priorities, and give guidance to the reviews as a result of that effort.
+
* Inadequate function monitoring and logging (SAS-05) - the application doesn't properly log application layer attacks and errors (can be demonstrated through CloudWatch/CloudTrail)
 
+
* Insecure 3rd Party Dependencies (SAS-06) - can be detected by scanning the project with an OSS scanning tool
Creating a new set of project pages from scratch can be a challenging task.  By providing a sample layout, with instructional text and examples, the OWASP Tool Project Template makes it easier for Project Leaders to create effective security projects and hence helps promote security.
+
* Application layer Denial of Service (SAS-08), which can be easily demonstrated
 
+
* An undisclosed *critical* issue, as a bonus!
Contextual custom dictionary builder with character substitution and word variations for pen-testers
 
  
 
==Licensing==
 
==Licensing==
<span style="color:#ff0000">
 
A project must be licensed under a community friendly or open source license.  For more information on OWASP recommended licenses, please see [https://www.owasp.org/index.php/OWASP_Licenses OWASP Licenses]. While OWASP does not promote any particular license over another, the vast majority of projects have chosen a Creative Commons license variant for documentation projects, or a GNU General Public License variant for tools and code projects.  This example assumes that you want to use the AGPL 3.0 license.
 
</span>
 
  
This program is free software: you can redistribute it and/or modify it under the terms of the [http://www.gnu.org/licenses/agpl-3.0.html link GNU Affero General Public License 3.0] as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.  OWASP XXX and any contributions are Copyright &copy; by {the Project Leader(s) or OWASP} {Year(s)}.
+
The OWASP ServerlessGoat project is free for use. It is licensed under the MIT license.  
  
==Roadmap==
+
== Roadmap ==
<span style="color:#ff0000">
+
* 18-December-2018: Initial version / Alpha release. Collect feedback from the public
As of <strong>November, 2013, the highest priorities for the next 6 months</strong> are:
+
* 1-January-2019: Beta release with additional features.
<strong>
+
* 15-January: v1.0 official launch
* Complete the first draft of the Tool Project Template
 
* Get other people to review the Tool Project Template and provide feedback
 
* Incorporate feedback into changes in the Tool Project Template
 
* Finalize the Tool Project template and have it reviewed to be promoted from an Incubator Project to a Lab Project
 
</strong>
 
  
Subsequent Releases will add
+
== Project Sponsors ==
<strong>
+
The project is sponsored by:
* Internationalization Support
 
* Additional Unit Tests
 
* Automated Regression tests
 
</strong>
 
  
 +
[[File:PureSec-Logo.png|frameless|link=https://www.puresec.io/]]
 
==Getting Involved==
 
==Getting Involved==
<span style="color:#ff0000">
+
You do not have to be a security expert or a programmer to contribute. Contact the Project Leader(s) to get involved, we welcome any type of suggestions and comments.
Involvement in the development and promotion of <strong>Tool Project Template</strong> is actively encouraged!
 
You do not have to be a security expert or a programmer to contribute.
 
Some of the ways you can help are as follows:
 
  
| valign="top" style="padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;" |
+
 
 +
| valign="top" style="padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;" |
  
 
== Project Resources ==
 
== Project Resources ==
<span style="color:#ff0000">
+
TBD
This is where you can link to the key locations for project files, including setup programs, the source code repository, online documentation, a Wiki Home Page, threaded discussions about the project, and Issue Tracking system, etc.
 
</span>
 
 
 
[https://github.com/SamanthaGroves Installation Package]
 
 
 
[https://github.com/SamanthaGroves Source Code]
 
 
 
[https://github.com/SamanthaGroves What's New (Revision History)]
 
 
 
[https://github.com/SamanthaGroves Documentation]
 
 
 
[https://github.com/SamanthaGroves Wiki Home Page]
 
 
 
[https://github.com/SamanthaGroves Issue Tracker]
 
 
 
[https://github.com/SamanthaGroves Slide Presentation]
 
 
 
[https://github.com/SamanthaGroves Video]
 
  
 
== Project Leader ==
 
== Project Leader ==
<span style="color:#ff0000">
+
[[User:Orysegal|Ory Segal]] ([mailto:ory.segal@owasp.org email])
A project leader is the individual who decides to lead the project throughout its lifecycle. The project leader is responsible for communicating the project’s progress to the OWASP Foundation, and he/she is ultimately responsible for the project’s deliverables. The project leader must provide OWASP with his/her real name and contact e-mail address for his/her project application to be accepted, as OWASP prides itself on the openness of its products, operations, and members.
 
</span>
 
 
 
Ory Segal
 
  
== Related Projects ==
+
== Project Mailing List ==
<span style="color:#ff0000">
+
TBD
This is where you can link to other OWASP Projects that are similar to yours.
+
== Github Repo ==
</span>
+
[https://github.com/OWASP/Serverless-Goat Project GitHub]
* [[OWASP_Code_Project_Template]]
 
* [[OWASP_Documentation_Project_Template]]
 
  
 
==Classifications==
 
==Classifications==
Line 108: Line 73:
 
   | align="center" valign="top" width="50%"| [[File:Owasp-defenders-small.png|link=Defenders]]
 
   | align="center" valign="top" width="50%"| [[File:Owasp-defenders-small.png|link=Defenders]]
 
   |-
 
   |-
  | colspan="2" align="center"  | [[File:Agplv3-155x51.png|link=http://www.gnu.org/licenses/agpl-3.0.html|Affero General Public License 3.0]]
 
 
   |}
 
   |}
 
|}
 
|}

Revision as of 17:51, 17 December 2018

OWASP Project Header.jpg

Introduction

OWASP ServerlessGoat is a deliberately insecure realistic AWS Lambda serverless application, maintained by OWASP. You can install WebGoat, learn about the vulnerabilities, how to exploit them, and how to remediate each issue. The project also includes documentation explaining the issues and how they should be remediated with best-practices.

As serverless adoption is expected to continue growing and reach new audiences, we see the importance of education on topics such as how to build robust, secure and reliable AWS Lambda serverless applications. This project will expose developers and security practitioners to basic serverless security concepts, risks, attacks and mitigation best-practices.

There were a few key principles that we wanted to follow when designing this demo vulnerable application:

  • Make the project open source and free for everyone to use
  • Simple and straightforward deployment
  • Demonstrate as many serverless security bad practices as possible (we will keep adding more issues, but also hope to see community contributions)
  • Design the application to be realistic, and include common 'bad-practices', rather than forcing it to be vulnerable artificially

Given these key principles, we chose to develop and package the application an AWS SAM application that's available for deployment through the AWS Serverless Application Repository - however, this meant that we had to use the supported SAM policy templates. While this decision imposes some limitations on what capabilities were available for us, it presented two important benefits:

  • The application uses "default" serverless application repository permissions, making it more realistic
  • The deployment doesn't create custom IAM roles or resource policies

Details

The application is a service which receives a URL to a Word document (with a .doc extension - Office 97-2004), and will reply with an HTML page containing the extracted text.

The vulnerabilities that are included are (* spoiler alert! *)

  • Event-data injection, leading to OS command injection (SAS-01)
  • Improper exception handling and verbose error messages (SAS-10), leading to sensitive information disclosure
  • Insecure Serverless Deployment Configuration, leading to S3 bucket data exposure (SAS-03)
  • Over-privileged function permissions & roles, leading to data leakage of information stored in a DynamoDB table (SAS-04)
  • Inadequate function monitoring and logging (SAS-05) - the application doesn't properly log application layer attacks and errors (can be demonstrated through CloudWatch/CloudTrail)
  • Insecure 3rd Party Dependencies (SAS-06) - can be detected by scanning the project with an OSS scanning tool
  • Application layer Denial of Service (SAS-08), which can be easily demonstrated
  • An undisclosed *critical* issue, as a bonus!

Licensing

The OWASP ServerlessGoat project is free for use. It is licensed under the MIT license.

Roadmap

  • 18-December-2018: Initial version / Alpha release. Collect feedback from the public
  • 1-January-2019: Beta release with additional features.
  • 15-January: v1.0 official launch

Project Sponsors

The project is sponsored by:

PureSec-Logo.png

Getting Involved

You do not have to be a security expert or a programmer to contribute. Contact the Project Leader(s) to get involved, we welcome any type of suggestions and comments.


Project Resources

TBD

Project Leader

Ory Segal (email)

Project Mailing List

TBD

Github Repo

Project GitHub

Classifications

Project Type Files TOOL.jpg
Incubator Project Owasp-builders-small.png
Owasp-defenders-small.png