The OWASP team recently released the 2017 revised version of the ten most critical web application security risks. This presentation brief the OWASP Top 10 - 2017 for you to learn more about these important security issues.
4. Open Web Application Security Project (OWASP)
โ International non-profit
Project to make web
applications more secure
โ Independent, reputable
โ Key goals
โ Awareness
โ Testing
โ Training
5. OWASP Top 10 Project
โ One important output of OWASP
โ An awareness document focus on identifying
most serious risks for a wide range of
organizations
2013/06/12
OWASP Top 10 - 2013 Final
Release
2017/05/20
OWASP Top 10 -2017
Data Call Announced
2017/10/20
OWASP Top 10 -2017
RC2 Published
2017/11/20
OWASP Top 10 -2017
Final Release
8. What Changed from 2013 to 2017? - New Issues
Allows attackers to exploit vulnerable
XML processors
9. What Changed from 2013 to 2017? - New Issues
Allows attackers to exploit vulnerable
XML processors
10. How To Prevent XML External Entities?
โ Use less complex data format such as JSON
โ Patch all XML processors and libraries in use
โ Update SOAP to SOAP 1.2 or higher
โ Disable XML external entity and DTD processin
โ Whitelist server-side input validation
โ Verify XML or XSL file upload functionality
โ SAST tools can help detect XXE in source code
11. What Changed from 2013 to 2017? - New Issues
Permits remote code execution or
sensitive object manipulation on
affected platforms
12. What Changed from 2013 to 2017? - New Issues
Permits remote code execution or
sensitive object manipulation on
affected platforms
13. How To Prevent Insecure Deserialization?
โ Not to accept serialized objects from untrusted sources
โ Check integrity on any serialized objects
โ Enforce strict type constraints during deserialization
โ Isolate to run the deserialized code in low privilege
โ Log deserialization exceptions and failures
โ Restrict network connectivity from servers that deserialize
14. What Changed from 2013 to 2017? - New Issues
Lack of which can prevent or
significantly delay malicious activity and
breach detection, incident response,
and digital forensics
15. What Changed from 2013 to 2017? - New Issues
Lack of which can prevent or
significantly delay malicious activity and
breach detection, incident response,
and digital forensics
An attacker uses scans for users
using a common password. They can
take over all accounts using this
password.
For all other users, this scan leaves
only one false login behind. After
some days, this may be repeated
with a different password.
16. How To Prevent Insufficient Logging & Monitoring?
โ Ensure all access failures can be logged
โ Ensure logs are generated in a format that can be easily
consumed
โ Ensure high-value transactions have an audit trail
โ Establish effective alerting to respond in a timely
fashion
โ Establish an incident response process such as NIST 800-
61 rev 2 or later
18. What Changed from 2013 to 2017? - Merged Issues
Considering a SQL call to access
account information
pstmt.setString(1, request.getParameter(โacctโ));
ResultSet results = pstmt.executeQuery();
Attacker may simply modifies โacctโ in
the browser to send whatever account
number they want.
http://example.com/app/accountinfo?acct=notmyacct
19. How To Prevent Broken Access Control?
โ With the exception of public resources, deny by default
โ Re-use access control mechanism throughout the application
โ Model access controls should enforce record ownership
โ Unique business limit requirements should be enforced by domain models
โ Disable web server directory listing
โ Ensure file metadata, backup files are not presented within web roots
โ Log access control failures, alert admins when necessary
โ Rate limit API to minimize the harm from auto attack
โ JWT tokens should be invalidated after logout
20. What Changed from 2013 to 2017? - Retired Issues
Many frameworks include CSRF
defenses, it was found in only 5%
applications
21. What Changed from 2013 to 2017? - Retired Issues
It was found in < 8% of
applications and edged out of
overall XXE
24. Injection Vulnerability
Occurs when untrusted data is sent to an
interpreter as part of command or query.
The attackers can trick the interpreter into
executing unintended commands
25. Injection Vulnerability
Occurs when untrusted data is sent to an
interpreter as part of command or query.
The attackers can trick the interpreter into
executing unintended commands
26. How To Prevent Injection?
โ Keeping data separated from
commands and queries
โ Use a safe API
โ โWhitelistโ server-side input
validation
โ Escape special characters using
specific escape syntax for the
interpreter
โ Use LIMIT and other SQL
controls within queries to
prevent mass disclosure of
records
27. Broken Authentication
Application functions related to
authentication and session management
are often implemented incorrectly,
allowing attackers to compromise
passwords, keys or session tokens.
28. Broken Authentication
Application functions related to
authentication and session management
are often implemented incorrectly,
allowing attackers to compromise
passwords, keys or session tokens.
29. How To Prevent Broken Authentication?
โ Multi-factor authentication
โ DO NOT ship any default
credentials
โ Weak password check
โ Harden registration,
credential recovery
โ Limite or delay failed login
โ Not to use Session IDs in
URL
30. Sensitive Data Exposure
Many web apps and APIs do not properly
protect sensitive data. Attackers may steal
or modify such weakly protected data to
conduct credit card fraud, identity theft or
other crimes.
31. Sensitive Data Exposure
Many web apps and APIs do not properly
protect sensitive data. Attackers may steal
or modify such weakly protected data to
conduct credit card fraud, identity theft or
other crimes.
32. How To Prevent Sensitive Data Exposure?
โ Classify data processed, stored, or
transmitted by any application
โ Apply controls per classification
โ Donโt store unnecessary sensitive data
โ Encrypt all sensitive data
โ Ensure up-to-date and strong standard
algorithms, protocols, and keys are in
place
โ Encrypt all data in transit with secure
protocols such as TLS with perfect
forward secrecy (PFS): HSTS
โ Disable caching sensitive data
โ Store password using strong adaptive
hashing functions such as Argon2,
scrypt, bcrypt, or PBKDF2
33. Security Misconfiguration
Security misconfiguration is commonly a
result of insecure default configurations,
incomplete or ad hoc configurations, open
cloud storage, misconfigured HTTP
headers and verbose error messages
containing sensitive data.
34. Security Misconfiguration
Security misconfiguration is commonly a
result of insecure default configurations,
incomplete or ad hoc configurations, open
cloud storage, misconfigured HTTP
headers and verbose error messages
containing sensitive data.
The application server comes with
sample applications that are not
removed from the production server.
These sample applications have known
security flaws, ex. default accounts
werenโt changed. Attackers may log in
with default passwords and takes over.
35. How To Prevent Security Misconfiguration?
โ A repeatable hardening process that make it
fast and easy to deploy another environment
โ Development, QA and production environment
should be configured identically with different
credentials used in each environment
โ A minimal platform without unnecessary
features, components and samples
โ A task to review and update configurations
appropriate to all security updates and patches
as part of patch management process
โ A segmented application architecture that
provides effective, secure separations between
components
โ An automated process to verify effectiveness of
configurations and settings in all environments
36. Cross-Site Scripting (XSS)
XSS occurs when an application includes
untrusted data in a new web page without
proper validation or escaping, or updates
an existing web page with user-supplied
data using a browser API that can create
HTML or Javascript.
37. Cross-Site Scripting (XSS)
XSS occurs when an application includes
untrusted data in a new web page without
proper validation or escaping, or updates
an existing web page with user-supplied
data using a browser API that can create
HTML or Javascript.
38. How To Prevent Cross-Site Scripting?
โ Separate untrusted data from active
browser content
โ Using frameworks that automatically
escape XSS by design such as Ruby on
Rails, React JS
โ Escape untrusted HTTP request data based
on the context in HTML output
โ Enable a Content Security Policy is a
defense-in-depth mitigating control
against XSS
39. Using Components with Known Vulnerabilities
Components such as libraries,
frameworks, and other software modules,
run the same privileges as the
application.If a vulnerable component is
exploited, such an attack can facilitate
serious data loss or server takeover.
40. How To Prevent Using Components with Known Vulnerabilities?
โ There should be a patch management
process
โ Remove unused dependencies, features,
components, files and doc
โ Continuously inventory the version of both
client and server components using tools
like versions, DependencyCheck, retire.js
โ Continuously monitor sources like CVE and
NVD for vulnerabilities in components
โ Only obtain components from official
sources over secure links
โ Monitor libraries and components that are
unmaintained or do not create security
patches for older versions
41. Observations โ Observation 1 Tainted data
remains a huge problem, as
we see in A1:Injection
โ Observation 2 A3:Sensitive
Data Exposure is a great
place to start
โ For EU GDPR.
โ For any requirements around
privacy like PCI-DSS and
HIPAA.