ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
948847 Топик полностью
fk0, легенда (28.09.2019 01:11 - 01:13, просмотров: 268) ответил Evgeny_CD на "Вытаскиваем ПО из запароленного микроконтроллера Renesas M16C" ->
Ну сколько можно, уже миллион раз на одни и те же грабли: 1) когда проверяем пароль, то не сравниваем по-буковке и отваливаемся на первом несовпадении, а либо сравниваем всегда до конца (см. ниже), либо вводим рандомную задержку, и потом даём ответ (из-за timing attack, вот Renesas тому пример); 2) когда проверяем пароль так же не читаем его из пользовательской памяти по буковке для сравнения, до первого несовпадения, а сначала копируем в свою память, а потом сравниваем, или же сравниваем всегда до конца (независимо от совпадения или несовпадения) -- ибо злодей может поместить пароль на границу сегмента и вызывая исключения угадывать по буковке (есть исключение -- предыдущие буковки правильные, баг в какой-то из современных ОС, не помню где именно); 3) когда проверяем пароль, и если в запросе от клиента указана его длина, то не сравниваем до длины указанной в запросе, а длину берём со своей стороны, где она тоже известна (баг в авторизации NTLM в микрософте, в бытность Windows 9x); 4) лучше вообще зашифровать пароли -- известный, и поступивший на вход, каким-нибудь блочным шифром и сравнивать уже результаты шифрования... 5) код, особенно связанный с аутентификацией и т.п., должен проходить какой-то аудит, code review и т.п., написал один программист в пятницу вечером и в продакшн -- явно ненормальный вариант.
[ZX]