Во время переполнения буфера программа помещает данные в область памяти вне буфера. Этот шаг может повредить ваши данные или привести к сбою вашей программы.
Хакеры знают об этом и иногда используют ваш кажущийся невинным буфер, чтобы завладеть вашим устройством.
По сути, буфер — это спасение, если одной из ваших программ не хватает памяти и она не хочет аварийно завершать работу. Программа может хранить данные в этом буфере и продолжать работать. Когда вашей программе требуется даже больше памяти, чем она может найти в буфере, она уязвима для атаки переполнения буфера.
Атаки с переполнением буфера стали причиной некоторых из самых печально известных примеров взлома, от червя Морриса в 1998 году до Stagefright в 2015 году.
Давайте объясним, как они работают, и мы поможем вам понять, как защитить себя от них.
Что такое переполнение буфера?
Почти каждый компьютер имеет буфер. Это выделенное пространство может хранить или передавать данные, чтобы вы могли продолжать работать, не сталкиваясь с многочисленными сбоями. Но даже у самого лучшего буфера есть предел. А при его превышении начинается переполнение.
Переполнение буфера может быть:
Случайное: вы пытаетесь сделать слишком много в рамках одной программы и выходите за рамки того пространства, которое дает вам программа. Программа может начать работать хаотично, а в некоторых случаях вообще перестать работать.
Преднамеренное: кто-то отправляет данные, которые слишком велики для вашей программы. Этот набор данных содержит код, который может заменить действительные версии. Когда новый код запускается, он может заставить программу делать то, чего вы не ожидаете.
Хакеру может показаться трудным создать программу, которая полностью понимает вашу программу и может изменить способ ее работы. Но, к сожалению, эти атаки относительно распространены.
Типы атак переполнения буфера
Каждая программа содержит буфер, но злоумышленник может воспользоваться одним из двух способов, чтобы завладеть им и начать атаку.
Атака переполнения буфера может быть:
На основе стека. Ваш злоумышленник отправляет данные программе, и эта передача сохраняется в слишком маленьком буфере стека. Ваш хакер может выбрать функцию «push» и сохранить новые элементы в верхней части стека. Или хакер может выбрать функцию «pop», удалить верхний элемент и заменить его. Это означает, что хакер официально внедрил вредоносный код и получил контроль.
На основе кучи. Ваш хакер повреждает данные в куче, и это изменение кода заставляет вашу систему перезаписывать важные данные.
Как пользователь, вы можете не заметить эти изменения. Но если вы не остановите прогресс, ваша программа может начать зависать и останавливаться. Со временем она может рухнуть.
Поскольку переполнение буфера часто нацелено на важные программы, такие как операционные системы, взлом может оставить вас с устройством, которым вы не сможете управлять.
Определите свои уязвимости переполнения буфера
Предотвратить атаку легче, чем оправиться от нее. К счастью, есть много вещей, которые вы можете сделать, чтобы обезопасить свою компанию.
Начните с изучения кода, который вы используете во время разработки. Языки программирования, уязвимые для атак переполнения буфера, включают:
- С/С++
- Assembly
- Fortran
Эти языки не имеют встроенной защиты и не допускают рутинных проверок на наличие переполнения.
Затем изучите свой код. Хакеру легче начать атаку, когда ваши программы:
Сложные. Вам трудно предсказать поведение вашей программы?
Имеют внешние зависимости. Вам нужны сторонние данные для управления действиями внутри программы? Управляются ли свойства данных извне?
Устаревшие. Использовали ли вы устаревшие компоненты для создания программы?
Почти в каждой компании есть старая, специально разработанная программа, которую каждый сотрудник использует каждый день. Возможно, вы с подозрением относитесь к замене этой системы, поскольку она была создана именно для вас. Но очевидно, что устаревшие системы сопряжены с рисками, которые трудно смягчить или устранить.
Ваш план противодействия и предотвращения переполнения буфера
Хакеры годами полагаются на буферы, и появляются новые возможности для их работы. Например, эксперты говорят, что подключенные устройства (включая элементы Интернета вещей, такие как холодильники и дверные звонки) могут быть подвержены этим атакам.
Защитите свою компанию, выполнив следующие действия, основанные на здравом смысле:
Используйте новые операционные системы. Пришло время выбросить устаревшие программы с просроченными системами поддержки. Новый код поставляется с большей защитой.
Следите за языком. Программы, написанные на COBOL, Python и Java, вероятно, безопаснее других.
Добавьте пространство. Некоторые программы допускают защиту исполняемого пространства. Если этот параметр включен, хакер не может выполнить код, вставленный с помощью атаки переполнения.
Положитесь на разработчиков. Системные администраторы часто жалуются, что разработчики игнорируют их сообщения об ошибках. Будьте настойчивы. Когда вы обнаружите проблему, приводящую к переполнению буфера, продолжайте говорить об этом, пока кто-нибудь не исправит ее.
Примените свои патчи. Когда разработчики узнают о проблемах с переполнением буфера, они исправляют их с помощью кода. В результате разработчики выпускают патч, и призывают людей его использовать.
Наблюдать за своим кодом, анализировать поведение и часто тестировать — все это хорошие идеи. Но чтобы обезопасить свою компанию, вам нужно сделать как можно больше.
Важно отметить, что не только вредоносное ПО и вирусы влияют на работу сайта, а и многие другие факторы. Но, какова бы ни была причина, по которой страница сайта не открывается, например проблемы с базой данных или сервером, DDoS-атаки или вирусы, важно контролировать доступность сайта для посетителя. Ситуация, при которой пользователь не может открыть страницу вашего сайта, отрицательно влияет на поднятие сайта в поиске (поисковой выдаче) и оставляет негативное впечатление о вашем сайте у посетителя. Вы теряете потенциальных клиентов, а значит и деньги. Используйте хороший сервис, например BAILRY для постоянного контроля (проверки) доступности сайта. Сервис предоставляет как бесплатную регулярную (периодическую) проверку доступности сайта, так и платную услугу - для постоянного контроля доступности сайта.
Компания Mainton - разработка и тестирование программного обеспечения под заказ, SEO и реклама в интернете с 2004 года.