Upgrade to Pro — share decks privately, control downloads, hide ads and more …

«Типичные ошибки реализации SMS-аутентификации», Ramazan (r0hack), DETEACT

«Типичные ошибки реализации SMS-аутентификации», Ramazan (r0hack), DETEACT

OWASP Moscow

March 05, 2020
Tweet

More Decks by OWASP Moscow

Other Decks in Programming

Transcript

  1. ВИДЫ УЯЗВИМОСТЕЙ • Отсутствие Rate Limit • Одинаковый код для

    разных эндпоинтов • Отсутствие срока жизни кода
  2. ВИДЫ УЯЗВИМОСТЕЙ • Отсутствие Rate Limit • Одинаковый код для

    разных эндпоинтов • Отсутствие срока жизни кода • Привязка Rate Limit к Cookie
  3. ВИДЫ УЯЗВИМОСТЕЙ • Отсутствие Rate Limit • Одинаковый код для

    разных эндпоинтов • Отсутствие срока жизни кода • Привязка Rate Limit к Cookie • Каждый раз одинаковый код
  4. ВИДЫ УЯЗВИМОСТЕЙ • Отсутствие Rate Limit • Одинаковый код для

    разных эндпоинтов • Отсутствие срока жизни кода • Привязка Rate Limit к Cookie • Каждый раз одинаковый код • Можем предугадать ID сессии
  5. ВИДЫ УЯЗВИМОСТЕЙ • Отсутствие Rate Limit • Одинаковый код для

    разных эндпоинтов • Отсутствие срока жизни кода • Привязка Rate Limit к Cookie • Каждый раз одинаковый код • Можем предугадать ID сессии • Блокировка пользователей
  6. ВИДЫ УЯЗВИМОСТЕЙ • Отсутствие Rate Limit • Одинаковый код для

    разных эндпоинтов • Отсутствие срока жизни кода • Привязка Rate Limit к Cookie • Каждый раз одинаковый код • Можем предугадать ID сессии • Блокировка пользователей • SMS-флуд
  7. РЕКОМЕНДАЦИИ • Убивать сессию после нескольких попыток • Использовать специализированный

    сервис (Authy) • Использовать 6-значные коды • Не блокировать пользователя
  8. РЕКОМЕНДАЦИИ • Убивать сессию после нескольких попыток • Использовать специализированный

    сервис (Authy) • Использовать 6-значные коды • Не блокировать пользователя • Для каждого эндпоинта генерировать свой уникальный код
  9. РЕКОМЕНДАЦИИ • Убивать сессию после нескольких попыток • Использовать специализированный

    сервис (Authy) • Использовать 6-значные коды • Не блокировать пользователя • Для каждого эндпоинта генерировать свой уникальный код • Не использовать предсказуемые идентификаторы
  10. РЕКОМЕНДАЦИИ • Убивать сессию после нескольких попыток • Использовать специализированный

    сервис (Authy) • Использовать 6-значные коды • Не блокировать пользователя • Для каждого эндпоинта генерировать свой уникальный код • Не использовать предсказуемые идентификаторы • Ограничение количества попыток с одного IP-адреса
  11. РЕКОМЕНДАЦИИ • Убивать сессию после нескольких попыток • Использовать специализированный

    сервис (Authy) • Использовать 6-значные коды • Не блокировать пользователя • Для каждого эндпоинта генерировать свой уникальный код • Не использовать предсказуемые идентификаторы • Ограничение количества попыток с одного IP-адреса • По возможности использовать 2FA (Google Auth)
  12. КЕЙС С ОДИНАКОВЫМ КОДОМ ДЛЯ РАЗНЫХ ЭНДПОИНТОВ • Для эндпоинта

    регистрации пользователей • /api/user/register • Для эндпоинта авторизации пользователей • /api/user/auth
  13. КЕЙС С ОДИНАКОВЫМ КОДОМ Один и тот же код, до

    тех пор, пока его не используют В скопе с отсутствием Rate Limit Перебирать можно в несколько итераций Тем самым получаем 100% Profit.