Skip to main content

V11.1.8 Business Logic Security

Requirement:#

Verify that the application has configurable alerting when automated attacks or unusual activity is detected.

Explanation:#

АвтоматичСскиС Π°Ρ‚Π°ΠΊΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ извСстныС ΠΊΠ°ΠΊ Π°Ρ‚Π°ΠΊΠΈ Π±ΠΎΡ‚ΠΎΠ², ΠΈ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ дСйствия ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΡƒΡŽ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ бСзопасности ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния. Π­Ρ‚ΠΈ Π°Ρ‚Π°ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ врСдоносной Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°Ρ‚Π°ΠΊΠΈ brute force, credential stuffing, scraping ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹. Π‘Π²ΠΎΠ΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° эти ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для поддСрТания бСзопасности ΠΈ цСлостности прилоТСния.

Remediation:#

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ настраиваСмоС автоматичСскоС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π°Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1. Identify Key Areas and Risks:

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ части вашСго прилоТСния Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π°Ρ‚Π°ΠΊΠ°ΠΌ ΠΈΠ»ΠΈ аномальной активности. К Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ отнСсти систСмы Π²Ρ…ΠΎΠ΄Π° Π² систСму, Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, получСния критичСски Π²Π°ΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

2. Set Detection Criteria:

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π°Π»Π΅Ρ€Ρ‚ΠΈΠ½Π³. К Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ отнСсти Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° Π² систСму, Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ количСство запросов с ΠΎΠ΄Π½ΠΎΠ³ΠΎ IP-адрСса, Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ API Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ Ρ‚.Π΄.

  • ΠŸΡ€ΠΈ этом ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Π°Ρ‚Π°ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, частыС запросы), Ρ‚Π°ΠΊ ΠΈ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ активности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ доступ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊ мноТСству рСсурсов).

3. Choose Alerting Mechanisms:

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ оповСщСния. К распространСнным ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ относятся увСдомлСния ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅, SMS-сообщСния ΠΈΠ»ΠΈ интСграция с SIEM-систСмой.

4. Implement Automated Monitoring:

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

5. Set Thresholds and Heuristics:

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния ΠΈ эвристики, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹. Π­Ρ‚ΠΈ ΠΏΠΎΡ€ΠΎΠ³ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ основаны Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… использования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

6. Implement Immediate Alerts:

  • НастройтС систСму ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈΡΡŒ оповСщСния. Π­Ρ‚ΠΎ позволяСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Ρ‹ бСзопасности.

7. Response and Mitigation Plans:

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

8. Testing and Tuning:

  • ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ оповСщСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΡŽ Π°Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ сцСнарии Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ активности. ΠŸΡ€ΠΈ нСобходимости скоррСктируйтС ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния ΠΈ эвристику, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство Π»ΠΎΠΆΠ½Ρ‹Ρ… ΠΈ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… срабатываний.

9. Document and Communicate:

  • Π—Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ настройку оповСщСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ, ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния ΠΈ ΠΏΠ»Π°Π½Ρ‹ рСагирования.

  • Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС заинтСрСсованныС стороны Π·Π½Π°ΡŽΡ‚ ΠΎ систСмС оповСщСния ΠΈ ΠΈΡ… Ρ€ΠΎΠ»ΠΈ Π² Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° оповСщСния.

10. Continuous Monitoring and Improvement:

  •  РСгулярно пСрСсматривайтС ΠΈ обновляйтС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ оповСщСния ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡƒΠ³Ρ€ΠΎΠ·.

  • ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ ΠΈ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ уточняйтС ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ обнаруТСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅

import logging
# Configure logging to send alerts
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s')
# Simulate monitoring thresholds (for demonstration purposes)
AUTOMATED_ATTACK_THRESHOLD = 10 # Number of failed login attempts
UNUSUAL_ACTIVITY_THRESHOLD = 100 # Requests in a short time period
# Simulate a user authentication function
def authenticate_user(username, password):
# Simulate authentication logic
# Return True if authentication is successful, False otherwise
return False
# Simulate a request processing function
def process_request():
# Simulate processing a request
pass
# Simulate monitoring function
def monitor_activity(username, request_count):
if request_count > UNUSUAL_ACTIVITY_THRESHOLD:
logging.warning(f"Unusual activity detected for user: {username}")
# Simulate a function to track failed login attempts
def track_failed_login(username):
# Track failed login attempts (for demonstration purposes)
pass
# Simulate an API endpoint for user login
def login():
username = input("Enter your username: ")
password = input("Enter your password: ")
if authenticate_user(username, password):
process_request()
else:
logging.error("Authentication failed")
track_failed_login(username)
# Check for automated attack threshold
if failed_login_count(username) >= AUTOMATED_ATTACK_THRESHOLD:
logging.warning(f"Automated attack detected for user: {username}")
# Implement response action (e.g., lock account, IP ban)
# Simulate a function to track failed login count (for demonstration purposes)
def failed_login_count(username):
# Return the count of failed login attempts for a user
return 0
# Simulate API request processing
def api_request():
username = "testuser"
request_count = 120 # Simulated request count
process_request()
monitor_activity(username, request_count)
# Entry point of the application
if __name__ == "__main__":
login()
api_request()

Additional:#

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