Неслучайная случайность, или Атака на ГПСЧ в .NET
— Donald Knuth
Копаясь как-то в исходниках одного сервиса в поисках уязвимостей, я наткнулся на генерацию одноразового кода для аутентификации через SMS. Обработчик запросов на отправку кода упрощённо выглядел так:
class AuthenticateByPhoneHandler{ /* ... */ static string GenerateCode() => rnd.Next(100000, 1000000).ToString(); readonly static Random rnd = new Random();}
Проблема видна невооруженным глазом: для генерации 6-тизначного кода используется класс Random — простой некриптографический генератор псевдослучайных чисел (ГПСЧ). Займёмся им вплотную: научимся предсказывать последовательность случайных чисел и прикинем возможный сценарий атаки на сервис.
Потокобезопасность
Кстати, заметим, что в приведённом фрагменте кода доступ к статическому экземпляру rnd класса Random из нескольких потоков не синхронизирован. Это может привести к неприятному казусу, который можно часто встретить в вопросах и ответах на StackOverflow:
Источник: Хабрахабр
Похожие новости
- [Перевод] Как забытый парсер ссылок привел к XSS на Reddit: Уязвимость на $5000, которая скрывалась в редакторе постов Reddit
- AlinaTen: Сделка между OpenAI и Windsurf сорвалась — глава стартапа уходит в Google
- Kubernetes на базе Deckhouse в облаке Linx Cloud: встроенный мониторинг, безопасность и управление сертификатами
- Без(д)воз(д)мездно, то есть даром
- Настраиваем роутер и WiFi с VLAN в тоннель
- Новости кибербезопасности за неделю с 7 по 13 июля 2025
- Vladimir: TSMC может понести убытки из-за возможных пошлин США на тайваньские чипы
- VLESS+Reality и Multi-hop: Архитектура VPN-цепочки для нового поколения блокировок
- Laravel: электронная подпись на сервере с PDF визуализацией
- Perplexity запускает Comet — собственный AI-браузер, бросающий вызов Google