Skip to content

Commit 966c045

Browse files
author
eugener
committed
top6a and 7 translated
1 parent 567f320 commit 966c045

File tree

3 files changed

+88
-21
lines changed

3 files changed

+88
-21
lines changed

2019/ru/src/0xa3-excessive-data-exposure.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ the site.
6666
* Проверьте, что ответы API содержат только те данные, которые отображаются клиентским приложением.
6767
* Разработчики серверной части должны всегда задаваться вопросом "Кто получит данные?" перед публикацией новых конечных точек API.
6868
* Избегайте использования стандартных методов, например, `to_json()` или `to_string()`. Вместо этого вручную выбирайте свойства объектов, которые вы возвращаете в ответе.
69+
* Классифицируйте критичную информацию и персональные данные, с которыми работает приложение, путем анализа всех вызовов API, возвращающих подобные данные, чтобы определить несут ли эти ответы риски безопасности.
6970
* Внедрите механизм валидации базирующийся на проверке данных по схеме в качестве дополнительного уровня защиты. В рамках этого механизма определите данные возвращаемые каждой конечной точкой API (в том числе в ошибках) и обеспечьте, что только эти данные возвращаются пользователю.
7071

7172
## Ссылки

2019/ru/src/0xa6-mass-assignment.md

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
1-
API6:2019 - Mass Assignment
1+
API6:2019 - Массовое переназначение параметров (Mass assignment)
22
===========================
33

4-
| Threat agents/Attack vectors | Security Weakness | Impacts |
4+
| Источники угроз/Векторы атак | Недостатки безопасности | Последствия |
55
| - | - | - |
6-
| API Specific : Exploitability **2** | Prevalence **2** : Detectability **2** | Technical **2** : Business Specific |
6+
| Зависит от API : Сложность эксплуатации **2** | Распространненность **2** : Сложность обнаружения **2** | Технические последствия **2** : Зависит от бизнеса |
77
| Exploitation usually requires an understanding of the business logic, objects' relations, and the API structure. Exploitation of mass assignment is easier in APIs, since by design they expose the underlying implementation of the application along with the properties’ names. | Modern frameworks encourage developers to use functions that automatically bind input from the client into code variables and internal objects. Attackers can use this methodology to update or overwrite sensitive object’s properties that the developers never intended to expose. | Exploitation may lead to privilege escalation, data tampering, bypass of security mechanisms, and more. |
88

9-
## Is the API Vulnerable?
9+
| Для эксплуатации зачастую требуется понимание бизнес логики, связей между объектами и структура API. Эксплуатация массового переназначения параметров проще реализуема в API, поскольку они изначально предусматривают общедоступность внутренней реализации API и названий свойств объектов. | Современные фреймфорки предлагают разработчикам функции, которые автоматически присваиют переменным и внутренним объектам значения соответствующих параметров из пользовательского ввода. Злоумышленник может использовать эту методологию, чтобы обновите или переназначить критичные свойства объектов, которые разработчик не намеревался делать доступными для пользователя. | Эксплуатация уязвимости может привести к повышению привилегий, злонамеренному изменению данных, обходу мезанизмов щашиты и так далее. |
10+
11+
## Как определить является ли API уязвимым?
1012

1113
Objects in modern applications might contain many properties. Some of these
1214
properties should be updated directly by the client (e.g., `user.first_name` or
1315
`user.address`) and some of them should not (e.g., `user.is_vip` flag).
1416

17+
Объекты в современных приложениях могут иметь большое количество свойств. Некоторые из них могут быть изменены напрямую клиентом (например, `user.first_name` или`user.address`), в то время как изменение других не должно быть доступно (например, флаг `user.is_vip`).
18+
1519
An API endpoint is vulnerable if it automatically converts client parameters
1620
into internal object properties, without considering the sensitivity and the
1721
exposure level of these properties. This could allow an attacker to update
1822
object properties that they should not have access to.
1923

24+
Коненая точка API уязвима, если она автоматически присваивает предоставленные клиентом параметры свойствам внутренних объектов, не учитывая конфиденциальность и уровень доступности этих свойств. Это может позволить злоумышленнику изменить свойства объектов, к которым у него нет доступа.
25+
2026
Examples for sensitive properties:
2127

2228
* **Permission-related properties**: `user.is_admin`, `user.is_vip` should only
@@ -26,49 +32,67 @@ Examples for sensitive properties:
2632
* **Internal properties**: `article.created_time` should only be set internally
2733
by the application.
2834

29-
## Example Attack Scenarios
35+
* **Свойства относящиеся к привилегиям**: `user.is_admin`, `user.is_vip` должны определяться только администраторами.
36+
* **Свойства зависящие от процесса**: `user.cash` должны устанавливаться только внутри кода после проверки платежа.
37+
* **Внутренние свойства**: `article.created_time` должны устанавливаться только внутри кода самим приложением.
3038

31-
### Scenario #1
39+
40+
## Примеры сценариев атаки
41+
42+
## Сценарий #1
3243

3344
A ride sharing application provides a user the option to edit basic information
3445
for their profile. During this process, an API call is sent to
3546
`PUT /api/v1/users/me` with the following legitimate JSON object:
3647

48+
Приложение для совместных поездок позволяет пользователю редактировать базовую информацию своего профиля. В ходе редактирования отправляется следующий запрос `PUT /api/v1/users/me` с корректным JSON объектом в теле запроса:
49+
3750
```json
3851
{"user_name":"inons","age":24}
3952
```
4053

4154
The request `GET /api/v1/users/me` includes an additional credit_balance
4255
property:
4356

57+
Запрос к `GET /api/v1/users/me` включает в себя дополнительное свойство credit_balance:
58+
4459
```json
4560
{"user_name":"inons","age":24,"credit_balance":10}.
4661
```
4762

4863
The attacker replays the first request with the following payload:
4964

65+
Злоумышленник дублирует первый запрос со следующим телом запроса:
66+
5067
```json
5168
{"user_name":"attacker","age":60,"credit_balance":99999}
5269
```
5370

5471
Since the endpoint is vulnerable to mass assignment, the attacker receives
5572
credits without paying.
5673

57-
### Scenario #2
74+
Поскольку конечная точка API узвима к массовому переназначению параметров, злоумышленник зачисляет деньги на свой баланс, не совершив платежа.
75+
76+
### Сценарий #2
5877

5978
A video sharing portal allows users to upload content and download content in
6079
different formats. An attacker who explores the API found that the endpoint
6180
`GET /api/v1/videos/{video_id}/meta_data` returns a JSON object with the video’s
6281
properties. One of the properties is `"mp4_conversion_params":"-v codec h264"`,
6382
which indicates that the application uses a shell command to convert the video.
6483

84+
Портал для обмена видео позволяет пользователям загружать и скачивать материалы в разынх форматах. Злоумышленник обследует API и обнаруживает, что конечная точка `GET /api/v1/videos/{video_id}/meta_data` возвращает JSON объект с параметрами видео. Один из параметров `"mp4_conversion_params":"-v codec h264"` дает понять, что приложение использует консольную команду для конвертации видео.
85+
6586
The attacker also found the endpoint `POST /api/v1/videos/new` is vulnerable to
6687
mass assignment and allows the client to set any property of the video object.
6788
The attacker sets a malicious value as follows:
6889
`"mp4_conversion_params":"-v codec h264 && format C:/"`. This value will cause a
6990
shell command injection once the attacker downloads the video as MP4.
7091

71-
## How To Prevent
92+
Злоумышленник также обнаружил, что конечная точка `POST /api/v1/videos/new` уязвима к массовому переназначению параметров и позволяет клиенту установить значение любого свойства объекта видео.
93+
Злоумышленник устанавливает следующее значение параметра: `"mp4_conversion_params":"-v codec h264 && format C:/"`. Это значение приведет к инъекции команды операционной системы, как только злоумышленник скачает видео в формате MP4.
94+
95+
## Как предотвратить
7296

7397
* If possible, avoid using functions that automatically bind a client’s input
7498
into code variables or internal objects.
@@ -78,9 +102,14 @@ shell command injection once the attacker downloads the video as MP4.
78102
* If applicable, explicitly define and enforce schemas for the input data
79103
payloads.
80104

81-
## References
105+
* Если возможно, избегайте использования функций, которые автоматически присваивают переменным и внутренним объектам сооветствующие значения из пользовательского ввода.
106+
* Добавляйте в белые списки только свойства, которые могут быть изменены клиентом.
107+
* Используйте встроенный функционал по добавлению в черный список свойств, к которым клиенты не могут иметь доступ.
108+
* Если это возможно, определите схемы входящих данных и проверяйте входящие данные по ним.
109+
110+
## Ссылки
82111

83-
### External
112+
### Внешние
84113

85114
* [CWE-915: Improperly Controlled Modification of Dynamically-Determined Object Attributes][1]
86115

0 commit comments

Comments
 (0)