<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE FL_Course SYSTEM "https://www.flane.de/dtd/fl_course095.dtd"><?xml-stylesheet type="text/xsl" href="https://portal.flane.ch/css/xml-course.xsl"?><course productid="26251" language="de" source="https://portal.flane.ch/swisscom/xml-course/cydrill-wasec-pcidss" lastchanged="2026-01-12T11:32:39+01:00" parent="https://portal.flane.ch/swisscom/xml-courses"><title>Web Application Security for PCI DSS</title><productcode>WASEC-PCIDSS</productcode><vendorcode>CY</vendorcode><vendorname>Cydrill</vendorname><fullproductcode>CY-WASEC-PCIDSS</fullproductcode><version>1.0</version><objective>&lt;ul&gt;
&lt;li&gt;Getting familiar with essential cyber security concepts&lt;/li&gt;&lt;li&gt;Learning about security specialties of the finance sector&lt;/li&gt;&lt;li&gt;Having essential understanding of PCI DSS requirements&lt;/li&gt;&lt;li&gt;Managing vulnerabilities in third party components&lt;/li&gt;&lt;li&gt;Understanding Web application security issues&lt;/li&gt;&lt;li&gt;Detailed analysis of the OWASP Top Ten elements&lt;/li&gt;&lt;li&gt;Putting Web application security in the context of any programming language&lt;/li&gt;&lt;li&gt;Going beyond the low hanging fruits&lt;/li&gt;&lt;li&gt;Understanding how cryptography supports security&lt;/li&gt;&lt;li&gt;Getting familiar with security testing techniques and tools&lt;/li&gt;&lt;/ul&gt;</objective><essentials>&lt;p&gt;None for plenary, general Web development for secure coding&lt;/p&gt;</essentials><audience>&lt;p&gt;Managers and developers working on Web applications in finance&lt;/p&gt;</audience><contents>&lt;ul&gt;
&lt;li&gt;Cyber security basics&lt;/li&gt;&lt;li&gt;The OWASP Top Ten 2021&lt;/li&gt;&lt;li&gt;Security testing&lt;/li&gt;&lt;li&gt;Wrap up&lt;/li&gt;&lt;/ul&gt;</contents><outline>&lt;p&gt;&lt;strong&gt;DAY 1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cyber security basics&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is security?&lt;/li&gt;&lt;li&gt;Threat and risk&lt;/li&gt;&lt;li&gt;Cyber security threat types &amp;ndash; the CIA triad&lt;/li&gt;&lt;li&gt;Cyber security threat types &amp;ndash; the STRIDE model&lt;/li&gt;&lt;li&gt;Consequences of insecure software&lt;/li&gt;&lt;li&gt;Constraints and the market&lt;/li&gt;&lt;li&gt;The dark side&lt;/li&gt;&lt;li&gt;Categorization of bugs
&lt;ul&gt;
&lt;li&gt;The Seven Pernicious Kingdoms&lt;/li&gt;&lt;li&gt;Common Weakness Enumeration (CWE)&lt;/li&gt;&lt;li&gt;CWE Top 25 Most Dangerous Software Weaknesses&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Cyber security in the finance sector
&lt;ul&gt;
&lt;li&gt;Threats and trends in fintech&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;PCI DSS
&lt;ul&gt;
&lt;li&gt;Overview&lt;/li&gt;&lt;li&gt;Requirements and secure coding (Requirements 1-5)&lt;/li&gt;&lt;li&gt;Req. 6 &amp;ndash; Develop and maintain secure systems and applications&lt;/li&gt;&lt;li&gt;Requirement 6.5 &amp;ndash; Address common coding vulnerabilities&lt;/li&gt;&lt;li&gt;Requirements and secure coding (Requirements 7-12)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;The OWASP Top Ten 2021&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A04 &amp;ndash; Insecure Design
&lt;ul&gt;
&lt;li&gt;The STRIDE model of threats&lt;/li&gt;&lt;li&gt;Secure design principles of Saltzer and Schroeder&lt;/li&gt;&lt;li&gt;Client-side security
&lt;ul&gt;
&lt;li&gt;Frame sandboxing
&lt;ul&gt;
&lt;li&gt;Cross-Frame Scripting (XFS) attacks&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Clickjacking&lt;/li&gt;&lt;li&gt;Clickjacking beyond hijacking a click&lt;/li&gt;&lt;li&gt;Clickjacking protection best practices&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Using CSP to prevent clickjacking&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;A05 &amp;ndash; Security Misconfiguration
&lt;ul&gt;
&lt;li&gt;Configuration principles&lt;/li&gt;&lt;li&gt;Server misconfiguration&lt;/li&gt;&lt;li&gt;Cookie security
&lt;ul&gt;
&lt;li&gt;Cookie security best practices&lt;/li&gt;&lt;li&gt;Cookie attributes&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;XML entities
&lt;ul&gt;
&lt;li&gt;DTD and the entities&lt;/li&gt;&lt;li&gt;Attribute blowup&lt;/li&gt;&lt;li&gt;Entity expansion&lt;/li&gt;&lt;li&gt;External Entity Attack (XXE)
&lt;ul&gt;
&lt;li&gt;File inclusion with external entities&lt;/li&gt;&lt;li&gt;Server-Side Request Forgery with external entities&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; External entity attack&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; XXE vulnerability in SAP Store&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Prohibiting DTD expansion&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;A06 &amp;ndash; Vulnerable and Outdated Components
&lt;ul&gt;
&lt;li&gt;Using vulnerable components&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; The Equifax data breach&lt;/li&gt;&lt;li&gt;Assessing the environment&lt;/li&gt;&lt;li&gt;Hardening&lt;/li&gt;&lt;li&gt;Untrusted functionality import&lt;/li&gt;&lt;li&gt;Vulnerability management
&lt;ul&gt;
&lt;li&gt;Patch management&lt;/li&gt;&lt;li&gt;Vulnerability databases&lt;/li&gt;&lt;li&gt;Vulnerability rating &amp;ndash; CVSS&lt;/li&gt;&lt;li&gt;Bug bounty programs&lt;/li&gt;&lt;li&gt;DevOps, the build process and CI / CD&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;A09 &amp;ndash; Security Logging and Monitoring Failures
&lt;ul&gt;
&lt;li&gt;Logging and monitoring principles&lt;/li&gt;&lt;li&gt;Insufficient logging&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; Plaintext passwords at Facebook&lt;/li&gt;&lt;li&gt;Logging best practices&lt;/li&gt;&lt;li&gt;Monitoring best practices&lt;/li&gt;&lt;li&gt;Firewalls and Web Application Firewalls (WAF)&lt;/li&gt;&lt;li&gt;Intrusion detection and prevention&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; The Marriott Starwood data breach&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;DAY 2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The OWASP Top Ten 2021&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A01 &amp;ndash; Broken Access Control
&lt;ul&gt;
&lt;li&gt;Access control basics&lt;/li&gt;&lt;li&gt;Failure to restrict URL access&lt;/li&gt;&lt;li&gt;Confused deputy
&lt;ul&gt;
&lt;li&gt;Insecure direct object reference (IDOR)&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Insecure Direct Object Reference&lt;/li&gt;&lt;li&gt;Authorization bypass through user-controlled keys&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; Authorization bypass on Facebook&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Horizontal authorization&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;File upload
&lt;ul&gt;
&lt;li&gt;Unrestricted file upload&lt;/li&gt;&lt;li&gt;Good practices&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Unrestricted file upload&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Cross-site Request Forgery (CSRF)
&lt;ul&gt;
&lt;li&gt;Lab &amp;ndash; Cross-site Request Forgery&lt;/li&gt;&lt;li&gt;CSRF best practices&lt;/li&gt;&lt;li&gt;CSRF defense in depth&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; CSRF protection with tokens&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;A02 &amp;ndash; Cryptographic Failures
&lt;ul&gt;
&lt;li&gt;Information exposure
&lt;ul&gt;
&lt;li&gt;Exposure through extracted data and aggregation&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; Strava data exposure&lt;/li&gt;&lt;li&gt;System information leakage
&lt;ul&gt;
&lt;li&gt;Leaking system information&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Information exposure best practices&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Cryptography for developers
&lt;ul&gt;
&lt;li&gt;Cryptography basics&lt;/li&gt;&lt;li&gt;Elementary algorithms
&lt;ul&gt;
&lt;li&gt;Random number generation
&lt;ul&gt;
&lt;li&gt;Pseudo random number generators (PRNGs)&lt;/li&gt;&lt;li&gt;Cryptographically strong PRNGs&lt;/li&gt;&lt;li&gt;Using virtual random streams&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Using random numbers&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; Equifax credit account freeze&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Confidentiality protection
&lt;ul&gt;
&lt;li&gt;Symmetric encryption
&lt;ul&gt;
&lt;li&gt;Block ciphers&lt;/li&gt;&lt;li&gt;Modes of operation&lt;/li&gt;&lt;li&gt;Modes of operation and IV &amp;ndash; best practices&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Symmetric encryption&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Asymmetric encryption&lt;/li&gt;&lt;li&gt;Combining symmetric and asymmetric algorithms&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;The OWASP Top Ten 2021&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A03 &amp;ndash; Injection
&lt;ul&gt;
&lt;li&gt;Injection principles&lt;/li&gt;&lt;li&gt;Injection attacks&lt;/li&gt;&lt;li&gt;SQL injection
&lt;ul&gt;
&lt;li&gt;SQL injection basics&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; SQL injection&lt;/li&gt;&lt;li&gt;Attack techniques&lt;/li&gt;&lt;li&gt;Content-based blind SQL injection&lt;/li&gt;&lt;li&gt;Time-based blind SQL injection&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;SQL injection best practices
&lt;ul&gt;
&lt;li&gt;Input validation&lt;/li&gt;&lt;li&gt;Parameterized queries&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Using prepared statements&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; Hacking Fortnite accounts&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Code injection
&lt;ul&gt;
&lt;li&gt;OS command injection
&lt;ul&gt;
&lt;li&gt;OS command injection best practices&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; Shellshock&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Shellshock&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;DAY 3&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The OWASP Top Ten 2021&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A03 &amp;ndash; Injection
&lt;ul&gt;
&lt;li&gt;HTML injection &amp;ndash; Cross-site scripting (XSS)
&lt;ul&gt;
&lt;li&gt;Cross-site scripting basics&lt;/li&gt;&lt;li&gt;Cross-site scripting types
&lt;ul&gt;
&lt;li&gt;Persistent cross-site scripting&lt;/li&gt;&lt;li&gt;Reflected cross-site scripting&lt;/li&gt;&lt;li&gt;Client-side (DOM-based) cross-site scripting&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Stored XSS&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Reflected XSS&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; XSS in Fortnite accounts&lt;/li&gt;&lt;li&gt;XSS protection best practices
&lt;ul&gt;
&lt;li&gt;Protection principles &amp;ndash; escaping&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; XSS fix / stored&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; XSS fix / reflected&lt;/li&gt;&lt;li&gt;Additional protection layers &amp;ndash; defense in depth&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;The OWASP Top Ten 2021&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A07 &amp;ndash; Identification and Authentication Failures
&lt;ul&gt;
&lt;li&gt;Authentication
&lt;ul&gt;
&lt;li&gt;Authentication basics&lt;/li&gt;&lt;li&gt;Multi-factor authentication&lt;/li&gt;&lt;li&gt;Time-based One Time Passwords (TOTP)&lt;/li&gt;&lt;li&gt;Authentication weaknesses&lt;/li&gt;&lt;li&gt;Spoofing on the Web&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; PayPal 2FA bypass&lt;/li&gt;&lt;li&gt;User interface best practices&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; Information disclosure in Simple Banking for Android&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; On-line password brute forcing&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Password management
&lt;ul&gt;
&lt;li&gt;Inbound password management
&lt;ul&gt;
&lt;li&gt;Storing account passwords&lt;/li&gt;&lt;li&gt;Password in transit&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Is just hashing passwords enough?&lt;/li&gt;&lt;li&gt;Dictionary attacks and brute forcing&lt;/li&gt;&lt;li&gt;Salting&lt;/li&gt;&lt;li&gt;Adaptive hash functions for password storage&lt;/li&gt;&lt;li&gt;Password policy
&lt;ul&gt;
&lt;li&gt;NIST authenticator requirements for memorized secrets&lt;/li&gt;&lt;li&gt;Password hardening&lt;/li&gt;&lt;li&gt;Using passphrases&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; The Ashley Madison data breach
&lt;ul&gt;
&lt;li&gt;The dictionary attack&lt;/li&gt;&lt;li&gt;The ultimate crack&lt;/li&gt;&lt;li&gt;Exploitation and the lessons learned&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Password database migration
&lt;ul&gt;
&lt;li&gt;(Mis)handling null passwords&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Outbound password management
&lt;ul&gt;
&lt;li&gt;Hard coded passwords&lt;/li&gt;&lt;li&gt;Best practices&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Hardcoded password&lt;/li&gt;&lt;li&gt;Protecting sensitive information in memory
&lt;ul&gt;
&lt;li&gt;Challenges in protecting memory&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;A08 &amp;ndash; Software and Data Integrity Failures
&lt;ul&gt;
&lt;li&gt;Subresource integrity
&lt;ul&gt;
&lt;li&gt;Importing JavaScript&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Importing JavaScript&lt;/li&gt;&lt;li&gt;Case study &amp;ndash; The British Airways data breach&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Insecure deserialization
&lt;ul&gt;
&lt;li&gt;Serialization and deserialization challenges&lt;/li&gt;&lt;li&gt;Integrity &amp;ndash; deserializing untrusted streams&lt;/li&gt;&lt;li&gt;Integrity &amp;ndash; deserialization best practices&lt;/li&gt;&lt;li&gt;Property Oriented Programming (POP)
&lt;ul&gt;
&lt;li&gt;Creating payload&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Creating a POP payload&lt;/li&gt;&lt;li&gt;Lab &amp;ndash; Using the POP payload&lt;/li&gt;&lt;li&gt;Summary &amp;ndash; POP best practices&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Security testing&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Security testing techniques and tools
&lt;ul&gt;
&lt;li&gt;Code analysis
&lt;ul&gt;
&lt;li&gt;Static Application Security Testing (SAST)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Dynamic analysis
&lt;ul&gt;
&lt;li&gt;Security testing at runtime&lt;/li&gt;&lt;li&gt;Penetration testing&lt;/li&gt;&lt;li&gt;Stress testing&lt;/li&gt;&lt;li&gt;Dynamic analysis tools
&lt;ul&gt;
&lt;li&gt;Dynamic Application Security Testing (DAST)&lt;/li&gt;&lt;li&gt;Web vulnerability scanners&lt;/li&gt;&lt;li&gt;SQL injection tools&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Fuzzing&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Wrap up&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Secure coding principles
&lt;ul&gt;
&lt;li&gt;Principles of robust programming by Matt Bishop&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;And now what?
&lt;ul&gt;
&lt;li&gt;Software security sources and further reading&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</outline><objective_plain>- Getting familiar with essential cyber security concepts
- Learning about security specialties of the finance sector
- Having essential understanding of PCI DSS requirements
- Managing vulnerabilities in third party components
- Understanding Web application security issues
- Detailed analysis of the OWASP Top Ten elements
- Putting Web application security in the context of any programming language
- Going beyond the low hanging fruits
- Understanding how cryptography supports security
- Getting familiar with security testing techniques and tools</objective_plain><essentials_plain>None for plenary, general Web development for secure coding</essentials_plain><audience_plain>Managers and developers working on Web applications in finance</audience_plain><contents_plain>- Cyber security basics
- The OWASP Top Ten 2021
- Security testing
- Wrap up</contents_plain><outline_plain>DAY 1

Cyber security basics



- What is security?
- Threat and risk
- Cyber security threat types – the CIA triad
- Cyber security threat types – the STRIDE model
- Consequences of insecure software
- Constraints and the market
- The dark side
- Categorization of bugs

- The Seven Pernicious Kingdoms
- Common Weakness Enumeration (CWE)
- CWE Top 25 Most Dangerous Software Weaknesses
- Cyber security in the finance sector

- Threats and trends in fintech
- PCI DSS

- Overview
- Requirements and secure coding (Requirements 1-5)
- Req. 6 – Develop and maintain secure systems and applications
- Requirement 6.5 – Address common coding vulnerabilities
- Requirements and secure coding (Requirements 7-12)
The OWASP Top Ten 2021



- A04 – Insecure Design

- The STRIDE model of threats
- Secure design principles of Saltzer and Schroeder
- Client-side security

- Frame sandboxing

- Cross-Frame Scripting (XFS) attacks
- Lab – Clickjacking
- Clickjacking beyond hijacking a click
- Clickjacking protection best practices
- Lab – Using CSP to prevent clickjacking
- A05 – Security Misconfiguration

- Configuration principles
- Server misconfiguration
- Cookie security

- Cookie security best practices
- Cookie attributes
- XML entities

- DTD and the entities
- Attribute blowup
- Entity expansion
- External Entity Attack (XXE)

- File inclusion with external entities
- Server-Side Request Forgery with external entities
- Lab – External entity attack
- Case study – XXE vulnerability in SAP Store
- Lab – Prohibiting DTD expansion
- A06 – Vulnerable and Outdated Components

- Using vulnerable components
- Case study – The Equifax data breach
- Assessing the environment
- Hardening
- Untrusted functionality import
- Vulnerability management

- Patch management
- Vulnerability databases
- Vulnerability rating – CVSS
- Bug bounty programs
- DevOps, the build process and CI / CD
- A09 – Security Logging and Monitoring Failures

- Logging and monitoring principles
- Insufficient logging
- Case study – Plaintext passwords at Facebook
- Logging best practices
- Monitoring best practices
- Firewalls and Web Application Firewalls (WAF)
- Intrusion detection and prevention
- Case study – The Marriott Starwood data breach
DAY 2

The OWASP Top Ten 2021



- A01 – Broken Access Control

- Access control basics
- Failure to restrict URL access
- Confused deputy

- Insecure direct object reference (IDOR)
- Lab – Insecure Direct Object Reference
- Authorization bypass through user-controlled keys
- Case study – Authorization bypass on Facebook
- Lab – Horizontal authorization
- File upload

- Unrestricted file upload
- Good practices
- Lab – Unrestricted file upload
- Cross-site Request Forgery (CSRF)

- Lab – Cross-site Request Forgery
- CSRF best practices
- CSRF defense in depth
- Lab – CSRF protection with tokens
- A02 – Cryptographic Failures

- Information exposure

- Exposure through extracted data and aggregation
- Case study – Strava data exposure
- System information leakage

- Leaking system information
- Information exposure best practices
- Cryptography for developers

- Cryptography basics
- Elementary algorithms

- Random number generation

- Pseudo random number generators (PRNGs)
- Cryptographically strong PRNGs
- Using virtual random streams
- Lab – Using random numbers
- Case study – Equifax credit account freeze
- Confidentiality protection

- Symmetric encryption

- Block ciphers
- Modes of operation
- Modes of operation and IV – best practices
- Lab – Symmetric encryption
- Asymmetric encryption
- Combining symmetric and asymmetric algorithms
The OWASP Top Ten 2021



- A03 – Injection

- Injection principles
- Injection attacks
- SQL injection

- SQL injection basics
- Lab – SQL injection
- Attack techniques
- Content-based blind SQL injection
- Time-based blind SQL injection
- SQL injection best practices

- Input validation
- Parameterized queries
- Lab – Using prepared statements
- Case study – Hacking Fortnite accounts
- Code injection

- OS command injection

- OS command injection best practices
- Case study – Shellshock
- Lab – Shellshock
DAY 3

The OWASP Top Ten 2021



- A03 – Injection

- HTML injection – Cross-site scripting (XSS)

- Cross-site scripting basics
- Cross-site scripting types

- Persistent cross-site scripting
- Reflected cross-site scripting
- Client-side (DOM-based) cross-site scripting
- Lab – Stored XSS
- Lab – Reflected XSS
- Case study – XSS in Fortnite accounts
- XSS protection best practices

- Protection principles – escaping
- Lab – XSS fix / stored
- Lab – XSS fix / reflected
- Additional protection layers – defense in depth
The OWASP Top Ten 2021



- A07 – Identification and Authentication Failures

- Authentication

- Authentication basics
- Multi-factor authentication
- Time-based One Time Passwords (TOTP)
- Authentication weaknesses
- Spoofing on the Web
- Case study – PayPal 2FA bypass
- User interface best practices
- Case study – Information disclosure in Simple Banking for Android
- Lab – On-line password brute forcing
- Password management

- Inbound password management

- Storing account passwords
- Password in transit
- Lab – Is just hashing passwords enough?
- Dictionary attacks and brute forcing
- Salting
- Adaptive hash functions for password storage
- Password policy

- NIST authenticator requirements for memorized secrets
- Password hardening
- Using passphrases
- Case study – The Ashley Madison data breach

- The dictionary attack
- The ultimate crack
- Exploitation and the lessons learned
- Password database migration

- (Mis)handling null passwords
- Outbound password management

- Hard coded passwords
- Best practices
- Lab – Hardcoded password
- Protecting sensitive information in memory

- Challenges in protecting memory
- A08 – Software and Data Integrity Failures

- Subresource integrity

- Importing JavaScript
- Lab – Importing JavaScript
- Case study – The British Airways data breach
- Insecure deserialization

- Serialization and deserialization challenges
- Integrity – deserializing untrusted streams
- Integrity – deserialization best practices
- Property Oriented Programming (POP)

- Creating payload
- Lab – Creating a POP payload
- Lab – Using the POP payload
- Summary – POP best practices
Security testing



- Security testing techniques and tools

- Code analysis

- Static Application Security Testing (SAST)
- Dynamic analysis

- Security testing at runtime
- Penetration testing
- Stress testing
- Dynamic analysis tools

- Dynamic Application Security Testing (DAST)
- Web vulnerability scanners
- SQL injection tools
- Fuzzing
Wrap up



- Secure coding principles

- Principles of robust programming by Matt Bishop
- And now what?

- Software security sources and further reading</outline_plain><duration unit="d" days="3">3 Tage</duration><pricelist><price country="SI" currency="EUR">2250.00</price><price country="GB" currency="EUR">2250.00</price><price country="DE" currency="EUR">2250.00</price><price country="AT" currency="EUR">2250.00</price><price country="SE" currency="EUR">2250.00</price><price country="IT" currency="EUR">2250.00</price><price country="MK" currency="EUR">2250.00</price><price country="GR" currency="EUR">2250.00</price><price country="HU" currency="EUR">2250.00</price></pricelist><miles/></course>