Skip to content

Commit 187aa85

Browse files
committed
chore: Proofreading
1 parent b45092c commit 187aa85

20 files changed

+216
-217
lines changed
1.11 KB
Binary file not shown.
2.36 KB
Binary file not shown.

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
Foreword
22
========
33

4-
A foundational element of innovation in today’s app-driven world is the API.
5-
From banks, retail and transportation to IoT, autonomous vehicles and smart
6-
cities, APIs are a critical part of modern mobile, SaaS and web applications and
7-
can be found in customer-facing, partner-facing, and internal applications.
4+
A foundational element of innovation in today’s app-driven world is the
5+
Application Programming Interface (API). From banks, retail, and transportation
6+
to IoT, autonomous vehicles, and smart cities, APIs are a critical part of
7+
modern mobile, SaaS and web applications and can be found in customer-facing,
8+
partner-facing, and internal applications.
89

910
By nature, APIs expose application logic and sensitive data such as Personally
10-
Identifiable Information (PII) and because of this, they have increasingly
11+
Identifiable Information (PII) and because of this, APIs have increasingly
1112
become a target for attackers. Without secure APIs, rapid innovation would be
1213
impossible.
1314

14-
Although a broader web application security risks top 10 still makes sense, due
15-
to their particular nature, an API specific security risks list is mandatory.
15+
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.
1617
API security focuses on strategies and solutions to understand and mitigate the
17-
unique vulnerabilities and security risks of Application Programming Interfaces
18-
(APIs).
18+
unique vulnerabilities and security risks associated with APIs.
1919

2020
If you're familiar with the [OWASP Top 10 Project][1], then you'll notice the
2121
similarities between both documents: they are intended for readability and
22-
adoption. If you're new to the OWASP Top 10 series, maybe you'll be better
22+
adoption. If you're new to the OWASP Top 10 series, you may be better off
2323
reading the [API Security Risks][2] and [Methodology and Data][3] sections
2424
before jumping into the Top 10 list.
2525

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@ Introduction
33

44
## Welcome to the OWASP API Security Top 10 - 2019!
55

6-
Welcome to the OWASP API Security Top 10 first edition. If you're familiar with
7-
the OWASP Top 10 series, you'll notice the similarities: they are intended for
8-
readability and adoption. Otherwise, consider visiting the [OWASP API Security
9-
Project wiki page][1], before digging deeper into the then most critical API
10-
security risks.
6+
Welcome to the first edition of the OWASP API Security Top 10. If you're
7+
familiar with the OWASP Top 10 series, you'll notice the similarities: they are
8+
intended for readability and adoption. Otherwise, consider visiting the [OWASP
9+
API Security Project wiki page][1], before digging deeper into the most critical
10+
API security risks.
1111

12-
APIs play a very important role in modern applications architecture.
13-
Because creating security awareness and innovation have different paces, it
14-
urges to focus on common API security weaknesses.
12+
APIs play a very important role in modern applications' architecture. Since
13+
creating security awareness and innovation have different paces, it's important
14+
to focus on common API security weaknesses.
1515

16-
The primary aim of the OWASP API Security Top 10 is to educate those involved
17-
in API development and maintenance being them developers, designers, architects,
18-
managers, or organizations.
16+
The primary goal of the OWASP API Security Top 10 is to educate those involved
17+
in API development and maintenance, for example, developers, designers,
18+
architects, managers, or organizations.
1919

20-
In the [Methodology and Data][2] section you can read more about how this first
20+
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
2323
contribute with questions, comments and ideas at our [GitHub repository][3] or

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

Lines changed: 6 additions & 6 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 changed a lot. Nowadays, APIs play a very important role in
15-
this new architecture of microservices, Single Page Applications (SPAs), mobile
16-
apps, IoT, etc.
13+
It is important to realize that over the last few years, applications'
14+
architecture has significantly changed. Currently, APIs play a very important
15+
role in this new architecture of microservices, Single Page Applications (SPAs),
16+
mobile apps, IoT, etc.
1717

18-
The OWASP API Security Top 10 was a required piece to create awareness about
19-
modern APIs security issues. It was only possible thanks to a great effort of
18+
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
2020
several volunteers, all of them listed in the [Acknowledgments][3] section.
2121
Thank you!
2222

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ OWASP Top 10 API Security Risks – 2019
33

44
| Risk | Description |
55
| ---- | ----------- |
6-
| A1: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 taken in mind in every function that accesses a data source using an input from the user. |
7-
| A2: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 overall security. |
8-
| A3: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 showing it to the user. Without controlling client's state, servers receive more and more filters which can be abused to gain access to sensitive data. |
9-
| A4: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 this can impact the API server performance, leading to Denial of Service (DoS), but also leaves the door open to authentication flaws such as brute force. |
10-
| A5:2019 - Broken Function Level Authorization | Complex access control policies with different hierarchies, groups and roles and a not so clear separation between administrative and regular functions tend to lead to authorization flaws. Exploiting these issues, attackers gain access to other users resources and/or administrative functions. |
11-
| A6: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 or reading the documentation, providing additional object properties in request payloads, allow attackers to modify object properties they are not supposed to. |
12-
| A7:2019 - Security Misconfiguration | Security misconfiguration is commonly a result of insecure 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-
| A8:2019 - Injection | Injection flaws, such as SQL, NoSQL, Command Injection, occur when untrusted data is sent to an interpreter as part of a command or query. The attacker's hostile data can trick the interpreter into executing unintended commands or accessing data without proper authorization. |
14-
| A9:2019 - Improper Assets Management | APIs tend to expose more endpoints than traditional web applications, what makes 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. |
15-
| A10: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 and tamper, extract, or destroy data. Most breach studies show time to detect a breach is over 200 days, typically detected by external parties rather than internal processes or monitoring. |
6+
| A1: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+
| A2: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. |
8+
| A3: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. Without controlling the client's state, servers receive more-and-more filters which can be abused to gain access to sensitive data. |
9+
| A4: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 this can impact the API server performance, leading to Denial of Service (DoS), but also leaves the door open to authentication flaws such as brute force. |
10+
| A5: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. |
11+
| A6: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. |
12+
| A7: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+
| A8: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. |
14+
| A9: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. |
15+
| A10: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: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,41 @@ A1:2019 Broken Object Level Authorization
44
| Threat agents/Attack vectors | Security Weakness | Impacts |
55
| - | - | - |
66
| API Specific : Exploitability **3** | Prevalence **3** : Detectability **2** | Technical **3** : Business Specific |
7-
| Attackers can exploit API endpoints that are vulnerable to broken object authorization by manipulating the ID of an object that is sent in the request. This may lead to unauthorized access to sensitive data. This issue is extremely common in API based applications because the server component usually does not fully track the client’s state, and instead relies more on parameters like object IDs, that are sent from the client to decide which objects to access. | This has been the most common and impactful attack on APIs. Authorization and access control mechanisms in modern applications are complex and wide-spread. Even if the application implements a proper infrastructure for authorization checks, developers might forget to use these checks before accessing a sensitive object. Access control detection is not typically amenable to automated static or dynamic testing. | Unauthorized access can result in data disclosure to unauthorized parties, data loss, or data manipulation. Unauthorized access to objects can also lead to full account takeover. |
7+
| Attackers can exploit API endpoints that are vulnerable to broken object level authorization by manipulating the ID of an object that is sent within the request. This may lead to unauthorized access to sensitive data. This issue is extremely common in API-based applications because the server component usually does not fully track the client’s state, and instead, relies more on parameters like object IDs, that are sent from the client to decide which objects to access. | This has been the most common and impactful attack on APIs. Authorization and access control mechanisms in modern applications are complex and wide-spread. Even if the application implements a proper infrastructure for authorization checks, developers might forget to use these checks before accessing a sensitive object. Access control detection is not typically amenable to automated static or dynamic testing. | Unauthorized access can result in data disclosure to unauthorized parties, data loss, or data manipulation. Unauthorized access to objects can also lead to full account takeover. |
88

99
## Is the API Vulnerable?
1010

1111
Object level authorization is an access control mechanism that is usually
12-
implemented at the code level to validate that one user can access only objects
13-
that he should have access to.
12+
implemented at the code level to validate that one user can only access objects
13+
that they should have access to.
1414

15-
Every API endpoint that receives an ID of an object and performs any type of
16-
action on the object should implement object level authorization checks. The
15+
Every API endpoint that receives an ID of an object, and performs any type of
16+
action on the object, should implement object level authorization checks. The
1717
checks should validate that the logged-in user does have access to perform the
1818
requested action on the requested object.
1919

20-
Failures in the mechanism typically leads to unauthorized information
21-
disclosure, modification or destruction of all data.
20+
Failures in this mechanism typically leads to unauthorized information
21+
disclosure, modification, or destruction of all data.
2222

2323
## Example Attack Scenarios
2424

2525
### Scenario #1
2626

27-
An e-commerce platform for online stores provides a listing page with the
28-
revenue charts for their hosted shops. Inspecting the browser requests, an
29-
attacker identifies the API endpoints used as a data source for those charts
27+
An e-commerce platform for online stores (shops) provides a listing page with
28+
the revenue charts for their hosted shops. Inspecting the browser requests, an
29+
attacker can identify the API endpoints used as a data source for those charts
3030
and their pattern `/shops/{shopName}/revenue_data.json`. Using another API
31-
endpoint, the attacker gets the list of all hosted shop names. With a simple
32-
script to iterate over the names in the list, replacing `{shopName}` in the URL,
31+
endpoint, the attacker can get the list of all hosted shop names. With a simple
32+
script to manipulate the names in the list, replacing `{shopName}` in the URL,
3333
the attacker gains access to the sales data of thousands of e-commerce stores.
3434

3535
### Scenario #2
3636

3737
While monitoring the network traffic of a wearable device, the following HTTP
38-
`PATCH` request get the attention of an attacker due to the presence of a custom
39-
HTTP request header `X-User-Id: 54796`. Replacing the `X-User-Id` value with
40-
`54795`, the attacker receives a successful HTTP response and is able to modify
41-
other user account data.
38+
`PATCH` request gets the attention of an attacker due to the presence of a
39+
custom HTTP request header `X-User-Id: 54796`. Replacing the `X-User-Id` value
40+
with `54795`, the attacker receives a successful HTTP response, and is able to
41+
modify other users' account data.
4242

4343
## How To Prevent
4444

@@ -47,7 +47,7 @@ other user account data.
4747
* Prefer not to use an ID that has been sent from the client, but instead use an
4848
ID that is stored in the session object when accessing a database record by
4949
the record ID.
50-
* Use an authorization mechanism to check if the logged in user has access to
50+
* Use an authorization mechanism to check if the logged-in user has access to
5151
perform the requested action on the record in every function that uses an
5252
input from the client to access a record in the database.
5353
* Prefer to use random and unpredictable values as GUIDs for records’ IDs.
@@ -56,8 +56,6 @@ other user account data.
5656

5757
## References
5858

59-
### OWASP
60-
6159
### External
6260

6361
* [CWE-284: Improper Access Control][1]

0 commit comments

Comments
 (0)