Слабые секретные вопросы приводят к взлому счетов
Довольно малоизвестный факт, что уязвимость большинства систем аутентификации в том, что злоумышленник может получить доступ к чужому аккаунту, используя слабости секретного вопроса. Секретный вопрос задается, как известно, если клиент забыл свой пароль, с целью восстановления доступа к счету. Так может это даже не уязвимость, а целая угроза безопасности некоторых веб-сайтов? Позвольте мне объяснить...
Хотя уже каждый, кто хоть немного знаком с компьютерной безопасностью, понимает всю ненадежность использования простых (шаблонных) паролей, я до сих пор вижу, как пользователи используют что-то вроде "password", "QWERTY" и "12345". Использование надежного и довольно длинного пароля должно остановить злоумышленников, ведь использование атаки грубой силы сейчас легко пресечь. Под надежным, я понимаю пароль, состоящий из букв разных регистров, цифр и специальных символов.
Злоумышленники довольно ленивы и пойдут по пути наименьшего сопротивления, чтобы достичь своей цели. И пока на многих сайтах ответом на секретный вопрос является очевидное слово или имя, ненадежность данного модуля аутентификации остается слабым звеном. Нет смысла использовать надежный пароль "a8#Dk932sEjk@", если ответом на вопрос "Какой ваш родной город?" является "Москва".
Итак, какие же основные проблемы систем восстановления паролей:
- Чтобы упростить пользователям процедуру восстановления пароля, многие сайты преобразуют ответ на контрольный вопрос к нижнему регистру, так что "МоСкВа" превратиться в "москва";
- Часто количество попыток ответа на контрольный вопрос не ограничено, что позволяет перебирать возможные варианты и даже использовать атаки грубой силы;
- После успешного ответа некоторые сервисы тут же предлагают ввести новый пароль и продолжить работу с сервисом;
- В завершение, некоторые веб-сайты даже не посылают пользователю письмо на электронную почту, что пароль был изменен.
- Вопросы с ограниченным набором ответов: это вопросы, ответы на которые не являются уникальными для пользователя. На вопрос "Какой ваш любимый цвет?" подавляющее большинство пользователей будет отвечать красный, синий, зеленый, черный. Конечно, некоторые из них ответят бирюзовый или аквамарин, но в любом случае, количество ответов будет ограничено;
- "Личная" информация: ответы на вопросы, вроде "Девичья фамилия матери?" или "Ваша дата рождения?" легко найти в социальных сетях и эта категория приближается к третей;
- Вопросы, которые легко обнаружить: в интернете можно найти ответы на такие вопросы, как "Друг отца?" или "Имя лучшего друга?";
- Пользовательские вопросы: вам предлагают самому ввести контрольный вопрос, ответ на который, предположительно, знаете лишь вы. Однако большинство пользователей выбирают вопросы, попадающие под первые три категории;
- Динамические вопросы: это вопросы, на которые вы не давали ответа, но только вы в состоянии на них ответить. Например, "Дата сдачи баланса?" (для бухгалтера компании). Но, к сожалению, многие из них так же слабые.
Решение для пользователей
Тривиальным решением данной проблемы для пользователей будет использование менее очевидных ответов на контрольные вопросы системы. К примеру, на вопрос о родном городе сам ответ можно записать задом наперед "авксоМ" или использовать добавление слова перед ответом "городМосква". Думаю логика действий понятна, а примеры вы и сами придумаете. Хотя этот вариант далек от идеала и незначительно увеличивает безопасность, вы также можете использовать MD5-хэш ответа.Более надежным будет использование программ хранения паролей. Под маком я пользуюсь Keychain Access и всякий раз, когда мне необходимо ввести ответ на контрольный вопрос, я ввожу совершенно случайный текст. Тем самым и пароль и ответ на контрольный вопрос составляют надежную связку, вопрос преодоления которой должен поставить злоумышленника в тупик.
Наконец, не распространяйте большое количество информации на своих страницах в социальных сетях. Ваши дата рождения, родной город, адрес, симпатии и антипатии могут быть использованы против вас (я имею ввиду только ответы на секретные вопросы).
Решение для разработчиков
Если ваша система аутентификации далека от идеальной и описанные выше проблемы секретных вопросов в ней присутствуют, думаю вам помогут следующие дружеские советы:- Попробуйте подобрать список неочевидных вопросов, у которых не будет ограниченного набора ответов;
- Предоставьте пользователям не менее 5 контрольных вопросов. Дайте им возможность отказаться от тайного вопроса, если они осознают риск безопасности;
- Проходя процедуру восстановления пароля, пользователи должны вводить логин/почту вместе с ответом на вопрос;
- При попытки ответа на контрольный вопрос пользователю обязательно должно быть выслано сообщение на почту, для предотвращения несанкционированных действий;
- При удачном ответе пользователю должна быть отправлена ссылка на восстановления пароля. Срок действия ссылки должен быть ограничен;
- Ограничьте количество смен пароля. Например, два раза в неделю;
- При переходе по ссылке, для восстановления пароля, пользователь должен быть подвергнут повторной аутентификации, посредством 3 последовательных вопросов. Динамические вопросы должны быть уникальными для каждого из посетителей;
- Страница восстановления пароля должна содержать средство защиты от автоматических запросов (например, captcha);
- Всегда отправляйте оповещение о смене пароля на почту пользователя (не следует передавать пароль в письме);
С тех пор как touch-устройства появились в нашей повседневной жизни вместе с ними появились и проблемы с их защитой. Разбили дисплей или корпус? Не беда! Обратитесь в ремонт iPad в Санкт-Петербурге. Там вам помогут с вашей проблемой.