УДК 004.45
ИССЛЕДОВАНИЕ ПРОГРАММНЫХ УЯЗВИМОСТЕЙ В КОМПЬЮТЕРНЫХ СИСТЕМАХ И АНАЛИЗ ПРИМЕНЯЕМОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ ПРОВЕДЕНИЯ АТАК НА ВЫЧИСЛИТЕЛЬНУЮ СИСТЕМУ
© Д.П. Воропаев, И.А. Зауголков
Ключевые слова: безопасность целевой системы; эксплойт; переполнение системного буфера; уязвимости в программном обеспечении.
Рассмотрена проблема построения защиты программных средств. Проанализированы современные практические и теоретические методы вторжения в различные операционные системы. Представлены рекомендации по устранению и профилактике возможных уязвимостей в компьютерных системах.
Современный компьютерный мир представляет собой разнообразную и весьма сложную совокупность вычислительных устройств, систем обработки информации, телекоммуникационных технологий, программного обеспечения и высокоэффективных средств его проектирования. Вся эта многогранная и взаимосвязанная мета-система решает огромный круг проблем в различных областях человеческой деятельности, от простого решения школьных задач на домашнем персональном компьютере до управления сложными технологическими процессами.
Чем сложнее задача автоматизации и чем ответственнее область, в которой используются компьютерные информационные технологии, тем все более и более критичными становятся такие свойства, как надежность и безопасность информационных ресурсов, задействованных в процессе сбора, накопления, обработки, передачи и хранения компьютерных данных. Вредоносные воздействия на информацию в процессе функционирования компьютерных систем (КС) различного назначения осуществляются с целью нарушения ее конфиденциальности, целостности и доступности. Решение задач, связанных с предотвращением воздействия непосредственно на информацию, осуществляется в рамках комплексной проблемы обеспечения безопасности информации и имеет достаточно развитую научно-методическую базу. При этом, рассматривая информацию как активный эксплуатируемый ресурс, можно говорить о том, что процесс обеспечения безопасности информации включает в себя и обеспечение безопасности программного обеспечения КС. Данный аспект обеспечения безопасности информации и средств ее обработки именуется эксплуатационной безопасностью, т. к. соответствует этапу применения КС. В последнее время появились новые проблемы обеспечения безопасности, связанные с информационными технологиями, которые, по мнению ряда зарубежных и отечественных экспертов в области их создания и применения, в значительной степени определяют эффективность создаваемых компьютерных систем [1].
На сегодняшний день ряд компаний, университетов, государственных структур используют программное обеспечение различных компаний, не задумываясь о степени защищенности того или иного программного средства. В ряде случаев разработчики программного обеспечения допускают большое количество ошибок и уязвимостей в механизмах защиты, которые могут быть использованы злоумышленниками.
Эксплойт (англ. exploit, эксплуатировать) - компьютерная программа, фрагмент программного кода или последовательность команд, использующие уязвимости в программном обеспечении и применяемые для проведения атаки на вычислительную систему. Целью атаки может быть как захват контроля над системой (повышение привилегий), так и нарушение ее функционирования (DoS-атака) [2].
В зависимости от метода получения доступа к уязвимому программному обеспечению эксплойты подразделяются на удаленные (англ. remote) и локальные (англ. local).
Удаленный эксплойт работает через сеть и использует уязвимость в защите без какого-либо предварительного доступа к уязвимой системе.
Локальный эксплойт запускается непосредственно в уязвимой системе, требуя предварительного доступа к ней. Обычно он используется для получения взломщиком прав супер-пользователя. Атака эксплойта может быть нацелена на различные компоненты вычислительной системы - серверные приложения, клиентские приложения или модули операционной системы. Для использования серверной уязвимости эксплойту достаточно сформировать и послать серверу запрос, содержащий вредоносный код. Использовать уязвимость клиента немного сложнее - требуется убедить пользователя в необходимости подключения к поддельному серверу (перехода по ссылке в случае, если уязвимый клиент является браузером).
Информация, полученная в результате обнаружения уязвимости, может быть использована как для написания эксплойта, так и для устранения уязвимости. Поэтому в ней одинаково заинтересованы обе сторо-
ны - и злоумышленник, и производитель взламываемого программного обеспечения. Характер распространения этой информации определяет время, которое требуется разработчику до выпуска программной «заплатки». После закрытия уязвимости производителем шанс успешного применения эксплойта уменьшается. Поэтому особой популярностью среди злоумышленников пользуются т. н. эксплойты нулевого дня, использующие недавно появившиеся уязвимости, которые еще не стали известны общественности.
Переполнение буфера (Buffer Overflow) - явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера.
Переполнение буфера обычно возникает из-за неправильной работы с данными, полученными извне, и памятью при отсутствии жесткой защиты со стороны подсистемы программирования и операционной системы. В результате переполнения могут быть испорчены данные, расположенные следом за буфером (или перед ним). Переполнение буфера является наиболее популярным способом взлома компьютерных систем, т. к. большинство языков высокого уровня используют технологию стекового кадра - размещение данных в стеке процесса, смешение данных программы с управляющими данными (в т. ч. адреса начала стекового кадра и адреса возврата из исполняемой функции).
Переполнение буфера может вызывать аварийное завершение или зависание программы, ведущее к отказу обслуживания (denial of service, DoS). Отдельные виды переполнений, например, переполнение в стековом кадре, позволяют злоумышленнику загрузить и выполнить произвольный машинный код от имени программы и с правами учетной записи, от которой она выполняется.
Известны примеры, когда переполнение буфера намеренно используется системными программами для обхода ограничений в существующих программных или программно-аппаратных средствах. Например, операционная система iS-DOS (для компьютеров ZX Spectrum) использовала возможность переполнения буфера встроенной TR-DOS для запуска своего загрузчика в машинных кодах (что штатными средствами в TR-DOS сделать невозможно).
Наибольшую опасность представляют эксплойты, предназначенные для получения доступа к уровню супер-пользователя или, другими словами, повышения привилегий. Эксплойт переполнения буфера достигает этого путем ввода специально изготовленных входных данных. Такие данные переполняют выделенный буфер и изменяют данные, которые следуют за этим буфером в памяти.
Переполнения буфера широко распространены в программах, написанных на относительно низкоуровневых языках программирования, таких как язык ассемблера, Си и C++, которые требуют от программиста самостоятельного управления размером выделяемой памяти. Устранение ошибок переполнения буфера до сих пор является слабо автоматизированным процессом. Системы формальной верификации программ не очень эффективны при современных языках программирования.
Многие языки программирования, например, Java и Lisp, управляют выделением памяти автоматически и
используют комбинацию статического анализа и проверки корректности действий программы во время выполнения. Это делает ошибки, связанные с переполнением буфера, маловероятными или невозможными. Perl для избегания переполнений буфера обеспечивает автоматическое изменение размера массивов. Однако системы времени выполнения и библиотеки для таких языков все равно могут быть подвержены переполнениям буфера вследствие возможных внутренних ошибок в реализации этих систем проверки. В Windows доступны некоторые программные решения, которые предотвращают выполнение кода за пределами переполненного буфера, если такое переполнение было осуществлено. Среди этих решений - DEP в Windows xPsP2, OSsurance и Anti-Execute [3, 4].
Были проведены исследования устойчивости информационных систем предприятий ООО «Крепость», ПБЮЛ «Эльдера» и ЗАО «Союз мебель» к воздействию эксплойтов (около 5QQ рабочих станций и 15 серверов). В его ходе серверы и рабочие станции были изолированы от основной сети предприятия для уменьшения степени риска при исследовании уязвимостей, связанных с отказом оборудования.
На рабочих станциях установлены операционные системы семейства Windows XP, Windows 7, Mac OS, а на серверах - операционные семейства Windows Server 2QQ3 и Windows Server 2008 r2, а также Linux Ubuntu и FreeBSD. При поиске уязвимостей было обнаружено, что 2Q % рабочих станций были критически уязвимы и могли быть скомпрометированы эксплойтами ms12-20 и ms08-86 (netapi). Оба эксплойта используют переполнение системного буфера.
На 2 % серверов предприятий также были выявлены уязвимости в протоколе RDP, которые могут привести к отказу системы. Эти уязвимости также относятся к переполнению буфера.
В данной статье рассмотрена лишь часть уязвимостей компьютерных систем, которые могут использоваться злоумышленником в своих корыстных целях. В качестве рекомендации по обеспечению безопасности информационной системы стоит предложить регулярное обновление программного обеспечения и операционных систем до версий с исправленными неполадками и уязвимостями.
ЛИТЕРАТУРА
1. Фостер Дж. Техника взлома: сокеты, эксплойты, shell-код. М.: Изд-во ДМК Пресс, 2йй6.
2. Девянин П.Н. Анализ безопасности управления доступом и информационными потоками в компьютерных системах. М.: Изд-во «Радио и связь», 200б.
3. Шаньгин В.Ф. Защита компьютерной информации. М.: Изд-во ДМК Пресс, 2йй8.
4. Барнетт М. Хакинг кода ASP NET Application Security. М.: Изд-во «Новый Издательский дом», 2005.
Поступила в редакцию 2Q ноября 2Q13 г.
Voropaev D.P., Zaugolkov I.A. RESEARCH PROGRAM OF VULNERABILITY IN COMPUTER SYSTEMS AND ANALYSIS SOFTWARE USED FOR ATTACKS ON COMPUTING SYSTEMS
The article deals with the problem of building protection software. The modern practical and theoretical methods invasion of various operating systems is analyzed. The article provides
б38
tips on prevention and elimination of vulnerabilities in computer Key words: security of target system; exploit; system buffer
systems. overflow; software vulnerabilities.
Воропаев Данила Павлович, Тамбовский государственный университет им. Г.Р. Державина, г. Тамбов, Российская Федерация, студент института математики, физики и информатики, e-mail: [email protected]
Voropaev Danila Pavlovich, Tambov State University named after G.R. Derzhavin, Tambov, Russian Federation, Student of Mathematics, Physics and Informatics Institute, e-mail: [email protected]
Зауголков Игорь Алексеевич, Тамбовский государственный университет им. Г.Р. Державина, г. Тамбов, Российская Федерация, кандидат технических наук, профессор кафедры информатики и информационных технологий, e-mail: [email protected]
Zaugolkov Igor Alekseyevich, Tambov State University named after G.R. Derzhavin, Tambov, Russian Federation, Candidate of Technics, Professor of Informatics and Information Technologies Department, e-mail: [email protected]