Skip to main content

V11.1.4 Business Logic Security

Requirement:#

Verify that the application has anti-automation controls to protect against excessive calls such as mass data exfiltration, business logic requests, file uploads or denial of service attacks.

Explanation:#

Π’Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ опрСдСляСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ внСдрСния срСдств Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° ΠΌΠ°ΡΡΠΎΠ²ΡƒΡŽ ΡƒΡ‚Π΅Ρ‡ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ запросы бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π°Ρ‚Π°ΠΊΠΈ Ρ‚ΠΈΠΏΠ° "ΠΎΡ‚ΠΊΠ°Π· Π² обслуТивании" (DoS). Π—Π°Π΄Π°Ρ‡Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ злоупотрСблСния, Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ систСмныС рСсурсы, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ прилоТСния.Β 

Remediation:#

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1. Identify Critical Endpoints and Activities:

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ критичСскиС элСмСнты Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π°Ρ‚Π°ΠΊ.

  • К Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ отнСсти Π²Ρ…ΠΎΠ΄ Π² систСму, Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π»ΡŽΠ±Ρ‹Π΅ рСсурсоСмкиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

2. Determine Appropriate Limits:

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΏΠΎ количСству запросов ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ источника Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ дСйствия Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.

3. Implement Rate Limiting:

  • Π’Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ограничСния скорости ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ количСство запросов ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ источника Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.

  • Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сдСлано Π½Π° основС IP-адрСсов, ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ².

4. Utilize CAPTCHA Challenges:

  • Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ CAPTCHA-запросы для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… дСйствий с высоким риском ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡ‚ΠΎΠ².

  • CAPTCHA ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ автоматичСских Π±ΠΎΡ‚ΠΎΠ² ΠΎΡ‚ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

5. IP Blocking:

  • Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΠΉΡ‚Π΅ IP-адрСса, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… поступаСт большоС количСство запросов ΠΈΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ аномальноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
  • Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ случайной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

6. Behavioral Analysis:

  • Π’Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ повСдСнчСский Π°Π½Π°Π»ΠΈΠ· для выявлСния закономСрностСй, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… автоматичСским Π°Ρ‚Π°ΠΊΠ°ΠΌ.

  • НапримСр, выявлСниС Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ запросов, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ дСйствий ΠΈΠ»ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π½Π° scraping.

7. Implement Delay Mechanisms:

  • УстановитС Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ запросами Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… дСйствий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ дСйствия Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ².
  • Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡƒΠ³Π½ΡƒΡ‚ΡŒ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ своих Π°Ρ‚Π°ΠΊ.

8. Response Actions:

  • НастройтС срСдства управлСния Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… дСйствий ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ повСдСния.

  • ДСйствия ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя ΠΏΠΎΠΊΠ°Π· CAPTCHA, Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ запросов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.

9. Logging and Monitoring:

  • Π›ΠΎΠ³ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ запросах, ограничСниях скорости ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π½Ρ‹Ρ… дСйствиях для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ отчСтности.

  • НастройтС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ для выявлСния Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² Π½Π΅ΠΏΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ повСдСния ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ настройки систСмы управлСния.

10. Regular Review and Adjustment:

  • ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ срСдства управлСния с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ использования ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΡƒΠ³Ρ€ΠΎΠ·.

  • Вонкая настройка ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ» для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

11. Error Handling and User Feedback:

  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ понятныС сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΡ€ΠΈ срабатывании ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ скорости ΠΈΠ»ΠΈ CAPTCHA.

  • Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ.

12. Documentation and Testing:

  • Β Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСдства контроля, ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π½Ρ‹Π΅ дСйствия.

  • ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ тСстированиС срСдств контроля Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариях, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство клиСнтских ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ клиСнтских ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², создавая ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ ΠΏΡƒΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

public static final int SERVER_PORT = 4444;
public static final int MAX_CONNECTIONS = 10;
...
public void acceptConnections() {
try {
ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
int counter = 0;
boolean hasConnections = true;
while (hasConnections) {
hasConnections = checkForMoreConnections();
Socket client = serverSocket.accept();
Thread t = new Thread(new ClientSocketThread(client));
t.setName(client.getInetAddress().getHostName() + ":" + counter++);
ExecutorService pool = Executors.newFixedThreadPool(MAX_CONNECTIONS);
pool.execute(t);
}
serverSocket.close();
} catch (IOException ex) {...}
}

Additional:#

https://cwe.mitre.org/data/definitions/770.html

https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/10-Business_Logic_Testing/README.html