Skip to content

Commit 9cd7a60

Browse files
committed
Merge branch 'release/1.0.0'
2 parents 276ecac + 76e4c0a commit 9cd7a60

22 files changed

+94
-108
lines changed
345 Bytes
Binary file not shown.
137 KB
Binary file not shown.

2019/en/src/0x00-notice.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Notice
44
This is the text version of OWASP API Security Top 10, used as source for the
55
official version distributed as a Portable Document Format (PDF).
66

7-
Contributions to the project such as comments, corrections or translations
7+
Contributions to the project such as comments, corrections, or translations
88
should be done here. For details on [How To Contribute][1], please refer to
99
[CONTRIBUTING.md][1].
1010

2019/en/src/0x00-toc.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Table of Contents
99
* [API Security Risks](0x10-api-security-risks.md)
1010
* [OWASP Top 10 API Security Risks – 2019](0x11-t10.md)
1111
* [API1:2019 Broken Object Level Authorization](0xa1-broken-object-level-authorization.md)
12-
* [API2:2019 Broken Authentication](0xa2-broken-authentication.md)
12+
* [API2:2019 Broken User Authentication](0xa2-broken-user-authentication.md)
1313
* [API3:2019 Excessive Data Exposure](0xa3-excessive-data-exposure.md)
1414
* [API4:2019 Lack of Resources & Rate Limiting](0xa4-lack-of-resources-and-rate-limiting.md)
1515
* [API5:2019 Broken Function Level Authorization](0xa5-broken-function-level-authorization.md)

2019/en/src/0x02-foreword.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ become a target for attackers. Without secure APIs, rapid innovation would be
1313
impossible.
1414

1515
Although a broader web application security risks Top 10 still makes sense, due
16-
to their particular nature, an API specific security risks list is required.
16+
to their particular nature, an API-specific security risks list is required.
1717
API security focuses on strategies and solutions to understand and mitigate the
1818
unique vulnerabilities and security risks associated with APIs.
1919

2019/en/src/0x03-introduction.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ architects, managers, or organizations.
2020
In the [Methodology and Data][2] section, you can read more about how this first
2121
edition was created. In future versions, we want to involve the security
2222
industry, with a public call for data. For now, we encourage everyone to
23-
contribute with questions, comments and ideas at our [GitHub repository][3] or
23+
contribute with questions, comments, and ideas at our [GitHub repository][3] or
2424
[Mailing list][4].
2525

2626
[1]: https://www.owasp.org/index.php/OWASP_API_Security_Project

2019/en/src/0x04-release-notes.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ section, you'll find more details about how this version was built. For more
1010
details about the security risks, please refer to the [API Security Risks][2]
1111
section.
1212

13-
It is important to realize that over the last few years, applications'
14-
architecture has significantly changed. Currently, APIs play a very important
13+
It is important to realize that over the last few years, architecture of
14+
applications has significantly changed. Currently, APIs play a very important
1515
role in this new architecture of microservices, Single Page Applications (SPAs),
1616
mobile apps, IoT, etc.
1717

1818
The OWASP API Security Top 10 was a required effort to create awareness about
19-
modern APIs security issues. It was only possible due to a great effort of
19+
modern API security issues. It was only possible due to a great effort of
2020
several volunteers, all of them listed in the [Acknowledgments][3] section.
2121
Thank you!
2222

2019/en/src/0x11-t10.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ OWASP Top 10 API Security Risks – 2019
44
| Risk | Description |
55
| ---- | ----------- |
66
| API1:2019 - Broken Object Level Authorization | APIs tend to expose endpoints that handle object identifiers, creating a wide attack surface Level Access Control issue. Object level authorization checks should be considered in every function that accesses a data source using an input from the user. |
7-
| API2:2019 - Broken Authentication | Authentication mechanisms are often implemented incorrectly, allowing attackers to compromise authentication tokens or to exploit implementation flaws to assume other user's identities temporarily or permanently. Compromising system's ability to identify the client/user, compromises API security overall. |
7+
| API2:2019 - Broken User Authentication | Authentication mechanisms are often implemented incorrectly, allowing attackers to compromise authentication tokens or to exploit implementation flaws to assume other user's identities temporarily or permanently. Compromising system's ability to identify the client/user, compromises API security overall. |
88
| API3:2019 - Excessive Data Exposure | Looking forward to generic implementations, developers tend to expose all object properties without considering their individual sensitivity, relying on clients to perform the data filtering before displaying it to the user. |
99
| API4:2019 - Lack of Resources & Rate Limiting | Quite often, APIs do not impose any restrictions on the size or number of resources that can be requested by the client/user. Not only can this impact the API server performance, leading to Denial of Service (DoS), but also leaves the door open to authentication flaws such as brute force. |
1010
| API5:2019 - Broken Function Level Authorization | Complex access control policies with different hierarchies, groups, and roles, and an unclear separation between administrative and regular functions, tend to lead to authorization flaws. By exploiting these issues, attackers gain access to other users’ resources and/or administrative functions. |
1111
| API6:2019 - Mass Assignment | Binding client provided data (e.g., JSON) to data models, without proper properties filtering based on a whitelist, usually lead to Mass Assignment. Either guessing objects properties, exploring other API endpoints, reading the documentation, or providing additional object properties in request payloads, allows attackers to modify object properties they are not supposed to. |
1212
| API7:2019 - Security Misconfiguration | Security misconfiguration is commonly a result of unsecure default configurations, incomplete or ad-hoc configurations, open cloud storage, misconfigured HTTP headers, unnecessary HTTP methods, permissive Cross-Origin resource sharing (CORS), and verbose error messages containing sensitive information. |
13-
| API8:2019 - Injection | Injection flaws, such as SQL, NoSQL, Command Injection, etc. occur when untrusted data is sent to an interpreter as part of a command or query. The attacker's malicious data can trick the interpreter into executing unintended commands or accessing data without proper authorization. |
13+
| API8:2019 - Injection | Injection flaws, such as SQL, NoSQL, Command Injection, etc., occur when untrusted data is sent to an interpreter as part of a command or query. The attacker's malicious data can trick the interpreter into executing unintended commands or accessing data without proper authorization. |
1414
| API9:2019 - Improper Assets Management | APIs tend to expose more endpoints than traditional web applications, making proper and updated documentation highly important. Proper hosts and deployed API versions inventory also play an important role to mitigate issues such as deprecated API versions and exposed debug endpoints. |
1515
| API10:2019 - Insufficient Logging & Monitoring | Insufficient logging and monitoring, coupled with missing or ineffective integration with incident response, allows attackers to further attack systems, maintain persistence, pivot to more systems to tamper with, extract, or destroy data. Most breach studies demonstrate the time to detect a breach is over 200 days, typically detected by external parties rather than internal processes or monitoring. |

2019/en/src/0xa1-broken-object-level-authorization.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ modify other users' account data.
4444

4545
* Implement a proper authorization mechanism that relies on the user policies
4646
and hierarchy.
47-
* Prefer not to use an ID that has been sent from the client, but instead use an
48-
ID that is stored in the session object when accessing a database record by
49-
the record ID.
5047
* Use an authorization mechanism to check if the logged-in user has access to
5148
perform the requested action on the record in every function that uses an
5249
input from the client to access a record in the database.

2019/en/src/0xa2-broken-authentication.md renamed to 2019/en/src/0xa2-broken-user-authentication.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
API2:2019 Broken Authentication
2-
===============================
1+
API2:2019 Broken User Authentication
2+
====================================
33

44
| Threat agents/Attack vectors | Security Weakness | Impacts |
55
| - | - | - |
@@ -15,17 +15,16 @@ mechanisms.
1515
An API is vulnerable if it:
1616
* Permits [credential stuffing][1] whereby the attacker has a list of valid
1717
usernames and passwords.
18-
* Permits attackers to perform a brute force attack on the same user, without
19-
presenting captcha / account lockout mechanism.
18+
* Permits attackers to perform a brute force attack on the same user account, without
19+
presenting captcha/account lockout mechanism.
2020
* Permits weak passwords.
21-
* Sends sensitive authentication details, such as auth tokens and password in
21+
* Sends sensitive authentication details, such as auth tokens and passwords in
2222
the URL.
2323
* Doesn’t validate the authenticity of tokens.
24-
* Accepts unsigned / weakly signed JWT tokens (`"alg":"none"`) / doesn’t
24+
* Accepts unsigned/weakly signed JWT tokens (`"alg":"none"`)/doesn’t
2525
validate their expiration date.
2626
* Uses plain text, encrypted, or weakly hashed passwords.
27-
* Uses weak encryption keys / API keys.
28-
27+
* Uses weak encryption keys.
2928

3029
## Example Attack Scenarios
3130

@@ -49,23 +48,23 @@ within a few minutes.
4948
## How To Prevent
5049

5150
* Make sure you know all the possible flows to authenticate to the API (mobile/
52-
web/deep links that implement one-click authentication/etc)
51+
web/deep links that implement one-click authentication/etc.)
5352
* Ask your engineers what flows you missed.
5453
* Read about your authentication mechanisms. Make sure you understand what and
55-
how they are used. OAuth is not authentication, and neither API keys .
54+
how they are used. OAuth is not authentication, and neither is API keys.
5655
* Don't reinvent the wheel in authentication, token generation, password
5756
storage. Use the standards.
58-
* Credential recovery / forget password endpoints should be treated as login
59-
endpoints in terms of brute force, rate limiting and lockout protections.
60-
* Use the [OWASP Authentication Cheatsheet][3]
57+
* Credential recovery/forget password endpoints should be treated as login
58+
endpoints in terms of brute force, rate limiting, and lockout protections.
59+
* Use the [OWASP Authentication Cheatsheet][3].
6160
* Where possible, implement multi-factor authentication.
6261
* Implement anti brute force mechanisms to mitigate credential stuffing,
63-
dictionary attack and brute force attacks on your authentication endpoints.
64-
This mechanism should be stricter than the regular rate limiting mechanism on
62+
dictionary attack, and brute force attacks on your authentication endpoints.
63+
This mechanism should be stricter than the regular rate limiting mechanism on
6564
your API.
6665
* Implement [account lockout][4] / captcha mechanism to prevent brute force
6766
against specific users. Implement weak-password checks.
68-
* API keys should not be used for user authentication, but for [client app /
67+
* API keys should not be used for user authentication, but for [client app/
6968
project authentication][5].
7069

7170
## References

0 commit comments

Comments
 (0)