Самьюэл Алекс
Шрифт:
Далее в программе вызывается функция
Предположим, что пользователь должен ввести пароль "password". Если это будет сделано, получим следующее:
Будучи запущенной в терминальном окне, программа не покажет введенный пароль, чтобы кто-нибудь посторонний не смог его подглядеть.
Вот что произойдет, если в систему попробует вломиться хакер:
Полное описание работы модулей аутентификации приведено в каталоге
10.6. Дополнительные проблемы безопасности
В этой главе мы рассматриваем лишь несколько наиболее общих проблем, связанных с безопасностью. Но существует великое множество других "дыр", и далеко не все из них еще раскрыты. Поэтому в ответственных случаях без помощи экспертов не обойтись.
10.6.1. Переполнение буфера
Почти псе основные Internet-демоны, включая демоны таких программ, как
Суть атаки заключается в том, чтобы заставить программу выполнить код, который она не собиралась выполнять. Типичный механизм достижения этой цели — перезапись части стека программы. В стеке, помимо всего прочего, сохраняется адрес памяти, по которому программа передает управление после завершения текущей функции. Следовательно, если поместить код взлома в памяти, а затем изменить адрес возврата так. чтобы он указывал на этот код, то по завершении текущей функции программа начнет выполнять код хакера с правами текущего процесса. Если процесс принадлежит пользователю
Хуже всего обстоит дело с программами, которые работают в режиме демона и ожидают поступление запросов на подключение. Демоны обычно принадлежат пользователю
Старым версиям программ
Комбинация 32-символьного буфера и функции
К счастью, предотвратить переполнение буфера относительно несложно. При чтении строк следует всегда пользоваться функцией наподобие
Функция