Разве пароли не записаны в inputbox, уязвимом через отслеживание стека?

Я не гуру отслеживаний стека, вообще. Я даже не знаю, как получить их. Так или иначе я задаюсь вопросом, если ввод пароля, введенного в inputbox, безопасен. Разве это не может быть получено путем получения отслеживания стека?

Пароль вошел, тот путь будет найден во многих местах:

  • Свойство Caption TEdit
  • Результат функции, которая создает inputbox
  • вероятно, переменная, которая хранит Результат Команды InputBox
  • и т.д...

Если ответ "да, это - уязвимость", затем мой мир выходит из строя :p. Что может быть сделано для предотвращения этой дыры в системе безопасности?

Примечание: InputBox является примером, но это может быть с "homebrewed" приглашением ко входу в систему.
InputBox является командой Delphi, но я не отметил вопрос с тегом Delphi, потому что я предполагаю, что вопрос касается любого языка.

5
задан michaelb958--GoFundMonica 30 January 2014 в 11:04
поделиться

1 ответ

Это называется проблемой герметичного люка и проистекает (по крайней мере, один из источников) из главы книги Дугласа Адамса под названием Автостопом по Галактике. В нем два наших главных героя переносятся большим охранником и сбрасываются в воздушный шлюз, ожидая эвакуации в космос. В какой-то момент один из наших героев говорит, что у него есть решение, но «оно скорее связано с пребыванием по ту сторону герметичного люка».

Позвольте мне объяснить.

Если у вас есть взломщик, способный выполнять код (или иным образом «быть») на вашей собственной машине, вы уже проиграли. На этом этапе взломщик может сделать массу вещей.

Итак, ваша первая линия защиты должна заключаться в предотвращении доступа злоумышленников к вашей машине. Если вы справитесь с этим, безопасность станет намного проще.

Итак, нет, это не уязвимость, это основной способ работы вашего компьютера.

В простейшей форме, если кто-то может получить оперативные трассировки стека вашей программы в процессе выполнения, это, вероятно, означает, что он подключил к вашей программе что-то похожее на отладчик и способное «отлаживать» ваша программа, как она работает.Точка останова может легко захватить данные из памяти, обработать их, а затем возобновить программу, при этом пользователь никогда не узнает, что что-то произошло, но на практике есть гораздо более простой способ получить такую ​​информацию при условии, что вы можете выполнить код на система .

Теперь, сказав, что в .NET и многих других средах выполнения есть поддержка попыток хотя бы усложнить задачу, вместо сохранения всей строки они перехватывают одно и одно нажатие клавиши в поле ввода и кодируют его. вместе с остальной частью пароля, чтобы каждый символ не сохранялся в виде обычного текста.

Однако код, который обрабатывает это, становится очень громоздким для работы просто потому, что любая попытка получить весь пароль в виде открытого текста сделает все упражнение бессмысленным, поэтому, если вы не сможете передать такие закодированные пароли, конец - до конца вокруг вашей системы, это не очень поможет.

В .NET это класс System.SecureString .

Однако, опять же, если злоумышленник может выполнить код на вашей платформе, что может помешать ему перехватить нажатия клавиш и просто объединить их вместе, чтобы сформировать ваш пароль?

Вот пара ссылок с примерами похожие вопросы:

Вы можете сказать, что я фанат Раймонда Чена.

22
ответ дан 18 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: