-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Security Application Security Course
Application Security Course Overview
Below you can find the ordered content of the topic, in a linear progression
The linear progression of content aims to cover all content, course by course, workout by workout as follows:
- first course is the only core one, denoted by its manifest
- the next course is denoted by the first item of the next array in each course manifest
- each course has its order of workouts designated by the sections field in the same aforementioned manifest
1. intro
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | what-is-appsec | ✅ | 👶 introduction | ❌ | ✅ | ❌ | ❌ | ❌ |
2 | why-appsec | ✅ | 👶 introduction | ❌ | ❌ | ❌ | ❌ | ❌ |
3 | owasp | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
4 | automated-tools | ✅ | 👶 introduction | ❌ | ✅ | ❌ | ❌ | ❌ |
5 | what-else-do-you-need-to-know | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ❌ | ❌ |
Exercises:
Game:
2. osi-intro
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | introducing-the-osi-model | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ✅ | ❌ |
2 | identifying-the-physical-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
3 | identifying-the-network-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
4 | identifying-the-application-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
Exercises:
Game:
3. osi-ii
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | identifying-the-data-link-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
2 | identifying-the-transport-layer | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ✅ | ❌ |
3 | identifying-the-session-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
4 | identifying-the-presentation-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | securing-the-physical-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
2 | securing-the-data-link-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
3 | securing-the-network-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
4 | securing-the-transport-layer | ✅ | 👶 introduction | ❌ | ✅ | ✅ | ✅ | ❌ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | securing-the-session-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
2 | securing-the-presentation-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
3 | securing-the-application-layer | ✅ | 👶 introduction 💪 workout |
❌ | ✅ | ✅ | ✅ | ❌ |
Exercises:
Game:
6. xss
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | xss-introduction | ✅ | 👶 introduction 💪 workout |
xss.1: 10 | ✅ | ✅ | ❌ | ✅ |
2 | detect-xss | ✅ | 👶 introduction 💪 workout |
xss.0: 10 xss.1: 10 xss.2: 10 xss.5: 10 |
✅ | ✅ | ❌ | ✅ |
3 | mitigate-xss | ✅ | 👶 introduction 💪 workout |
xss.3: 10 xss.4: 10 xss.6: 10 xss.7: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
7. xxe
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | xxe-introduction | ✅ | 👶 introduction 💪 workout |
xxe.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | detect-xxe | ✅ | 👶 introduction 💪 workout |
xxe.0: 10 xxe.1: 10 |
✅ | ✅ | ❌ | ✅ |
3 | xxe-prevention | ✅ | 👶 introduction 💪 workout |
xxe.2: 10 | ✅ | ✅ | ❌ | ✅ |
4 | xxe-security | ✅ | 👶 introduction 💪 workout |
xxe.0: 10 xxe.2: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | sql-injection | ✅ | 👶 introduction 💪 workout |
sql-injection.0: 10 sql-injection.4: 10 |
✅ | ✅ | ❌ | ✅ |
2 | identify-sql-injection | ✅ | 👶 introduction 💪 workout |
sql-injection.0: 10 sql-injection.4: 10 |
✅ | ✅ | ❌ | ✅ |
3 | mitigate-sql-injection-attacks | ✅ | 👶 introduction 💪 workout |
sql-injection.1: 10 sql-injection.2: 10 sql-injection.5: 10 |
✅ | ✅ | ❌ | ✅ |
4 | other-forms-of-injection-attacks | ✅ | 👶 introduction 💪 workout |
sql-injection.3: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | deserialization | ✅ | 👶 introduction 💪 workout |
insecure-deserialization.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | identify-deserialization | ✅ | 👶 introduction 💪 workout |
insecure-deserialization.0: 10 insecure-deserialization.1: 10 |
✅ | ✅ | ❌ | ✅ |
3 | mitigate-deserialization | ✅ | 👶 introduction 💪 workout |
insecure-deserialization.2: 10 | ✅ | ✅ | ❌ | ✅ |
4 | tokens | ✅ | 👶 introduction 💪 workout |
insecure-deserialization.2: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | known-vulnerabilities | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
analyze-dependencies.0: 10 analyze-dependencies.1: 10 |
✅ | ✅ | ❌ | ✅ |
2 | analyze-dependencies | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
analyze-dependencies.1: 10 | ✅ | ✅ | ❌ | ✅ |
3 | scan-dependencies | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
analyze-dependencies.1: 20 | ✅ | ✅ | ❌ | ✅ |
4 | establish-upgrade-process | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
analyze-dependencies.2: 10 security-feed.1: 10 automated-tools.1: 10 |
✅ | ✅ | ❌ | ✅ |
5 | upgrade-process-cadence | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
analyze-dependencies.2: 10 | ✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
11. access-control
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | broken-access-control | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
broken-access-control.3: 10 | ✅ | ✅ | ❌ | ✅ |
2 | identify-broken-access-control | ✅ | 👶 introduction 💪 workout 🦑 deep |
broken-access-control.1: 10 broken-access-control.2: 10 |
✅ | ✅ | ❌ | ✅ |
3 | fix-broken-access-control | ✅ | 👶 introduction 💪 workout 🦑 deep |
broken-access-control.3: 10 | ✅ | ✅ | ❌ | ✅ |
4 | monitor-broken-access-control | ✅ | 👶 introduction 💪 workout 🦑 deep |
broken-access-control.3: 10 broken-access-control.4: 10 |
✅ | ✅ | ❌ | ✅ |
5 | process-control-broken-access-control | ✅ | 👶 introduction 💪 workout 🦑 deep 🔮 obscura |
broken-access-control.0: 10 broken-access-control.1: 10 broken-access-control.3: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
Insights:
no | name | content | aspects | standards | PQ | RQ | Quiz | done |
---|---|---|---|---|---|---|---|---|
1 | security-misconfiguration | ✅ | 👶 introduction 💪 workout |
configure-security.0: 10 | ✅ | ✅ | ❌ | ✅ |
2 | identify-security-misconfiguration | ✅ | 👶 introduction 💪 workout 🦑 deep |
configure-security.0: 10 configure-security.1: 10 configure-security.2: 10 configure-security.3: 10 |
✅ | ✅ | ❌ | ✅ |
3 | check-defaults | ✅ | 👶 introduction | configure-security.1: 10 configure-security.3: 10 |
✅ | ✅ | ❌ | ✅ |
4 | use-automated-scanners | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
configure-security.0: 10 configure-security.5: 10 automated-tools.1: 10 |
✅ | ✅ | ❌ | ✅ |
5 | process-control-security-configuration | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep |
configure-security.4: 10 configure-security.1: 10 configure-security.2: 10 configure-security.5: 10 |
✅ | ✅ | ❌ | ✅ |
6 | cloud-security-configuration | ✅ | 👶 introduction ✨ new 💪 workout 🦑 deep 🔮 obscura |
configure-security.4: 10 configure-security.1: 10 configure-security.2: 10 |
✅ | ✅ | ❌ | ✅ |
Exercises:
Game:
✅ - At least one insight covers this
❌ - Nothing covers this
🛠️ - This standard has no objectives yet
- ❌ Arrange the 7 OSI Layers by level of Abstraction
- ❌ Describe the purpose of the OSI model
- ❌ Identify and Explain the function of the Physical Layer
- ❌ Identify and Explain the function of the Data Link Layer
- ❌ Identify and Explain the function of the Network Layer
- ❌ Identify and Explain the function of the Transport Layer
- ❌ Identify and Explain the function of the Session Layer
- ❌ Identify and Explain the function of the Presentation Layer
- ❌ Identify and Explain the function of the Application Layer
- ❌ Recognize vulnerabilities to the Physical Layer and Apply controls
- ❌ Recognize vulnerabilities to the Data Link Layer and Apply controls
- ❌ Recognize vulnerabilities to the Network Layer and Apply controls
- ❌ Recognize vulnerabilities to the Transport Layer and Apply controls
- ❌ Recognize vulnerabilities to the Session Layer and Apply controls
- ❌ Recognize vulnerabilities to the Presentation Layer and Apply controls
- ❌ Recognize vulnerabilities to the Application Layer and Apply controls
- ✅ Identify SQL injection risks
- ✅ Mitigate SQL injection risks using parameters
- ✅ Mitigate injection risks using whitelists
- ✅ Distinguish between the limitations of SQL Injection mitigation strategies
- ✅ Demonstrate a SQL injection attack using parameter manipulation
- ✅ Recognize SQL injection vulnerabilities in ORMs & other frameworks
- ✅ Identify reflection based XSS vectors
- ✅ Identify DOM based XSS vectors
- ✅ Identify stored XSS vectors
- ✅ Mitigate XSS using encoding & escaping un trusted input
- ✅ Mitigate XSS using sanitization techniques
- ✅ Test for XSS attacks
- ✅ Mitigate XSS attacks using CSP
- ✅ Identify common XSS filter circumvention techniques
- ✅ Evaluate an application for XML-based attacks using automated tools (such as SAST analyzers)
- ✅ Evaluate an application's dependency graph for vulnerable packages and processing methods
- ✅ Facilitate change management by creating recommended upgrade paths for developers
- ✅ Identify instances of insecure deserialization in source code
- ✅ Apply logging and monitoring to deserialization
- ✅ Apply industry-standard best practices to mitigate deserialization attack vectors
- ❌ Distinguish between sensitive and non-sensitive data categories
- ❌ Apply data-specific controls according to regulation or best practices
- ❌ Encrypt all sensitive data
- ❌ Configure caches not to store sensitive data
- ❌ Use up-to-date cryptographic algorithms and techniques
- ❌ Evaluate authentication forms for automated attack vectors
- ❌ Evaluate the credential recovery process for attack vectors
- ❌ Evaluate the credential storage scheme for weaknesses
- ❌ Evaluate the session layer for session-based attack vectors
- ❌ Apply logging and monitoring to authentication schemes
- ✅ Use an automated tool to evaluate an application's currently implemented access control scheme
- ✅ Create a report that lists access points that are not properly access controlled
- ✅ Evaluate an application for inappropriate elevation of privilege attack vectors
- ✅ Apply current industry best practices to mitigate future access control vulnerability
- ✅ Apply logging and monitoring to access-controlled resources
- ✅ Evaluate the application's default configuration across each part of the stack
- ✅ Change all default logins, passwords, and ports
- ✅ Disable verbose error reporting and stack trace leakage
- ✅ Ensure software is updated to the current Most Secure version
- ✅ Review cloud configurations, including service availability, access control and authentication
- ✅ Establish a review cadence that is appropriate to the level of risk
- ✅ Identify the dependencies of an application, including their specific version number
- ✅ Analyze a project's dependencies for security vulnerabilities using an analysis tool
- ✅ Mitigate security vulnerabilities by upgrading vulnerable packages uncovered with an analysis tool
❌ Use community-sourced lists of vulnerability and mitigation techniques to advance your security practice
- ❌ Identify relevant news sources that discuss vulnerabilities and mitigation strategies in detail
- ✅ Identify relevant communities that participate in vulnerability research and mitigation
- ❌ Identify relevant events to participate in the application security industry
- ❌ Use a network monitoring tool to detect vulnerable network devices
- ✅ Use a vulnerability scanner to scan for common application vulnerabilities
- ❌ Use a cracking tool to thwart cryptographic security measures
Given the insights are tagged with aspects, we can filter over the linear content progression and create learning sub-paths.
These sub-path progressions will most likely not cover all content, but they will ensure and enforce an unified learning experience, tailor for the user wish.
For example, a user might be interested in new additions and updates of a language, rather than introduction lessions. Note that these sub-paths don't take games into consideration
If you are being introduced to the topic for the first time
Insights:
- what-is-appsec
- why-appsec
- owasp
- automated-tools
- what-else-do-you-need-to-know
- introducing-the-osi-model
- identifying-the-physical-layer
- identifying-the-network-layer
- identifying-the-application-layer
- identifying-the-data-link-layer
- identifying-the-transport-layer
- identifying-the-session-layer
- identifying-the-presentation-layer
- securing-the-physical-layer
- securing-the-data-link-layer
- securing-the-network-layer
- securing-the-transport-layer
- securing-the-session-layer
- securing-the-presentation-layer
- securing-the-application-layer
- xss-introduction
- detect-xss
- mitigate-xss
- xxe-introduction
- detect-xxe
- xxe-prevention
- xxe-security
- sql-injection
- identify-sql-injection
- mitigate-sql-injection-attacks
- other-forms-of-injection-attacks
- deserialization
- identify-deserialization
- mitigate-deserialization
- tokens
- known-vulnerabilities
- analyze-dependencies
- scan-dependencies
- establish-upgrade-process
- upgrade-process-cadence
- broken-access-control
- identify-broken-access-control
- fix-broken-access-control
- monitor-broken-access-control
- process-control-broken-access-control
- security-misconfiguration
- identify-security-misconfiguration
- check-defaults
- use-automated-scanners
- process-control-security-configuration
- cloud-security-configuration
Theory put into practice/that’s how you achieve X points
Insights:
- identifying-the-physical-layer
- identifying-the-network-layer
- identifying-the-application-layer
- identifying-the-data-link-layer
- identifying-the-session-layer
- identifying-the-presentation-layer
- securing-the-physical-layer
- securing-the-data-link-layer
- securing-the-network-layer
- securing-the-session-layer
- securing-the-presentation-layer
- securing-the-application-layer
- xss-introduction
- detect-xss
- mitigate-xss
- xxe-introduction
- detect-xxe
- xxe-prevention
- xxe-security
- sql-injection
- identify-sql-injection
- mitigate-sql-injection-attacks
- other-forms-of-injection-attacks
- deserialization
- identify-deserialization
- mitigate-deserialization
- tokens
- known-vulnerabilities
- analyze-dependencies
- scan-dependencies
- establish-upgrade-process
- upgrade-process-cadence
- broken-access-control
- identify-broken-access-control
- fix-broken-access-control
- monitor-broken-access-control
- process-control-broken-access-control
- security-misconfiguration
- identify-security-misconfiguration
- use-automated-scanners
- process-control-security-configuration
- cloud-security-configuration
Prerequisite knowledge consisting of 2 or more 👶/💪 workouts
Insights:
- known-vulnerabilities
- analyze-dependencies
- scan-dependencies
- establish-upgrade-process
- upgrade-process-cadence
- broken-access-control
- identify-broken-access-control
- fix-broken-access-control
- monitor-broken-access-control
- process-control-broken-access-control
- identify-security-misconfiguration
- use-automated-scanners
- process-control-security-configuration
- cloud-security-configuration
Recently added/gained traction feature
Insights:
- known-vulnerabilities
- analyze-dependencies
- scan-dependencies
- establish-upgrade-process
- upgrade-process-cadence
- broken-access-control
- use-automated-scanners
- process-control-security-configuration
- cloud-security-configuration
Stories, obscure details that don’t specifically relate to a learning objective
Insights:
✅ All content has been tagged with aspects.
Want to contribute to this wiki? Go right ahead! If it has to do with how the Enki software ecosystem works, or editorial guidelines for how to write, let us handle that. Anything else, edit away!
Curriculum Format:
- Topic Documentation
- Course Documentation
- Workout Documentation
- Insight Documentation
- Glossary Documentation
Contributor Resources:
Curriculum overview:
Topic pages: