Skip to main content

V2.7.3 Out of Band Verifier

Requirement:#

Verify that the out of band verifier authentication requests, codes, or tokens are only usable once, and only for the original authentication request.

Explanation:#

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

Remediation:#

Π’ΠΎΡ‚ нСсколько шагов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ссли запросы, ΠΊΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности внСшнСго Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ использованиСм:

  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ запросы, ΠΊΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности внСшнСго Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ использованиСм. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связано с ошибкой Π² ​​кодС, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ отсутствиСм Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² систСмС.

  1. УстранСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

ПослС опрСдСлСния основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ ΠΌΠ΅Ρ€Ρ‹ для устранСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ отслСТивания ΠΈ ограничСния использования ΠΊΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², пСрСнастройку систСмы ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ исправлСниС.

ПослС внСсСния Π»ΡŽΠ±Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ запросы, ΠΊΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подлинности внСшнСго Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ использованиСм.

  1. Π—Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния.

Π—Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ внСсСнныС измСнСния ΠΈ шаги, прСдпринятыС для устранСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π­Ρ‚Π° информация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° для дальнСйшСго использования ΠΈ для прСдотвращСния возникновСния ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ рСализация шагов исправлСния зависит ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ языка программирования, Π½ΠΎ Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Python:

# function to generate a one-time token
def generate_token():
# generate a random token with 32 characters
return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(32))
# dictionary to store the mapping between authentication request and token
auth_requests = {}
# function to handle the authentication request
def handle_auth_request(user_id):
# generate a new token for the authentication request
token = generate_token()
# store the mapping between the authentication request and the token
auth_requests[token] = user_id
# send the token to the user
send_token_to_user(user_id, token)
# function to handle the token validation
def handle_token_validation(token):
# check if the token is present in the auth_requests dictionary
if token in auth_requests:
# retrieve the user_id for the token
user_id = auth_requests[token]
# remove the token from the auth_requests dictionary
del auth_requests[token]
# return the user_id
return user_id
else:
# return None if the token is not present in the auth_requests dictionary
return None

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ создаСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ сохраняСтся Π² словарС auth_requests. Π’ΠΎΠΊΠ΅Π½ отправляСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² систСму для подтвСрТдСния своСй личности. Ѐункция handle_token_validation провСряСт, присутствуСт Π»ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ Π² словарС auth_requests, ΠΈ, Ссли это Ρ‚Π°ΠΊ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ user_id ΠΈ удаляСт Ρ‚ΠΎΠΊΠ΅Π½ ΠΈΠ· словаря. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для исходного запроса Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Additional:#