SlideShare a Scribd company logo
1 of 29
Download to read offline
ПЕРЕПОЛНЕНИЕ БУФЕРА И
ДРУГИЕ УЯЗВИМОСТИ
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ:
ТЕОРИЯ И ПРАКТИКА ЗАЩИТЫ
Роман Олейников
roliynykov@gmail.com
http://www.slideshare.net/oliynykov
План доклада
● краткое представление
● уязвимости ПО: универсальный вектор реализации
атаки
● базовые типы уязвимостей программного обеспечения
(системный уровень)
● переполнение буфера: пример атаки
● методы защиты и способы их обхода
● примеры широко распространенных критичных
уязвимостей, их особенности и последствия
использования
Коротко о докладчике
● доктор технических наук (симметричная криптография)
● начальник отдела научных исследований
АО "Институт информационных технологий" (Харьков)
● профессор кафедры безопасности информационных
систем и технологий (ХНУ им. В.Н.Каразина) и кафедры
безопасности информационных технологий (ХНУРЭ)
● visiting professor at Samsung Advanced Technology Training
Institute (Suwon, South Korea)
● invited professor at the Selmer Center, Crypto and Security
Research Group, University of Bergen (Norway)
● ответственный исполнитель (технический руководитель
разработки), соавтор национальных криптографических
стандартов ДСТУ 7624:2014 и ДСТУ 7564:2014 (блочный
шифр “Калина” и функция хэширования “Купина”)
Количество опубликованных критичных
уязвимостей в браузерах
Источник: Symantec Internet Security Threat report, 2015
Соотношение количества уязвимых Android-
устройств (опубликованные уязвимости)
Источник: D.R.Thomas, A.R. Beresford. Security Metrics for the Android Ecosystem.
University of Cambridge, United Kingdom
Актуальное состояние (октябрь 2015): подавляющее большинство устройств
имеет незакрытую уязвимость Stagefright.
Результаты конкурса Pwn2Own 2015
(демонстрация уязвимостей нулевого дня)
● 5 bugs in the Windows operating system
● 4 bugs in Internet Explorer 11
● 3 bugs in Mozilla Firefox
● 3 bugs in Adobe Reader
● 3 bugs in Adobe Flash
● 2 bugs in Apple Safari
● 1 bug in Google Chrome (75,000 USD)
Итог: исследователям в общей сложности выплачено
557 500 USD за два дня проведения конкурса
NB: компании, целенаправленно занимающиеся обнаружением 0-day, как правило,
в таких конкурсах не участвуют (из-за низких выплат)
Источник: HP Security Research Blog
Последствия киберпреступности
для глобальной экономики
Источник: Norton/Symantec Cybercrime Report, 2013
Базовые типы уязвимостей программного
обеспечения (системный уровень)
● переполнение буфера (buffer overflow) - прямой захват потока
исполнения, возможен через:
– стек;
– динамическую память (heap);
– сегмент данных;
● некорректные форматные строки (uncontrolled format string):
– чтение локальных переменных (стек);
– чтение любого блока данных в адресном пространстве процесса;
– модификация значения в адресном пространстве процесса;
● целочисленные переполнения (integer oveflows):
– выход за пределы допустимого диапазона значений
(предварительный этап захвата потока исполнения);
– некорректные значения выходных данных модуля;
– неверное ветвление при исполнении и пр.
● etc.
Переполнение буфера
Пример кода (С/С++)
без проверки дипазона
Результат компиляции
Что будет, если копируемая строка
окажется длиннее приемного буфера?
strcpy( &dst, &src ) ,
в отличие от
strncpy( &dst, &src, sizeof
(dst) ) ,
учитывает только длину
копируемой строки
(перезапись идет до
нахождения завершающего
нулевого символа), без учета
размера приемного буфера
Стек потока (thread) при атаке: переполнение
специально сформированным блоком (shellcode)
Практическая демонстрация
● netcalcd – уязвимый сетевой демон
(сервис) для Linux (x86), разработанный
для демонстрации переполнения буфера
–прием и обработка текстовых запросов по
сети
–печать отладочной информации в консоль
● утилита для атаки (exploit)
–соединение с удаленным сервером
–отправка блока с кодом для переполнения
буфера (exploitation)
netcalcd: нормальная работа
Запуск злоумышленного кода для атаки
netcalcd
Переполнение буфера в стеке netcalcd
Linux-сервер:
открытые порты до и после проведения атаки
Подключение к только что открытому
порту на Linux-сервере
Утилита для реализации атаки
● клиентское приложение под Windows
● открытие сетевого соединения с уязвимым
сервером и отправить блок данных,
вызывающий переполнение буфера
● блок данных, вызывающий переполнение,
содержить исполнимый код,
выполняющийся на атакованном
компьютере (и запускающий
дополнительный web-сервер)
Утилита для реализации атаки: клиентское
приложение под Windows
открытие сетевого соединения
Блок данных, отправляемый на сервер:
исполнимый код
Базовые рекомендации для защиты от
переполнения буфера
● основная: писать безопасный код, делать вызовы
только защищенных функций с верификацией всех
входных данных; проводить независимый аудит кода;
● применение ASLR (Address Space Layout
Randomization) в операционной системе;
● обязательное использование бита NX (XD) для
процессоров х86/х86_64 (уровень операционной
системы);
● применение компилятором canary words;
● запуск процессов/потоков с наименьшими
привилегиями, необходимыми для нормальной работы.
ASLR: пример работы
Методы обхода ASLR
●
прямой подбор верного адреса (старшие биты не
меняются; слово выровнено по определенной
границе; вероятность успеха рассчитываем на
основе парадокса дней рождения);
–метод эффективно работает и для обхода canary words
●
возврат в код, находящийся в
нерандомизированной памяти;
●
jmp *esp
●
etc.
Источник (часть): Tio Muller, ASLR Smack & Laugh Reference
Бит NX: обход через return­to­libc
● нет исполнения кода в стеке
(и исключения процессора)
● адрес возврата
перезаписывается и
указывает на существующий
код
● атакующий выбирает
нужную функцию и
аргументы для нее
● в Windows возможно
сделать цепочку вызовов
(для _stdcall_ вызываемая
функция очищает стек)
Защита компилятора: canary words
NB: вероятность успеха обхода метода защиты на 32-битовой платформе
примерно равна ½ для 216
попыток (математика: парадокс дней рождения)
Примеры широко распространенных
критичных уязвимостей
●
Heartbleed – уязвимость OpenSSL:
–возможность получить доступ на чтение данных за пределами буфера по запросу из сети ;
–уязвимыми оказались сотни тысяч web-серверов, использующих библиотеку OpenSSL;
–похищены криптографические ключи и скомпрометированы данные миллионов пользователей;
●
GotoFail – уязвимость реализации TLS (SSL) для OSX и iOS:
–лишний оператор goto блокировал проверку подлинности сертификатов;
–злоумышленик получил возможность перехватывать трафик (man­in­the­middle) и/или
организовывать фишинг через TLS-соединения (отображаемые как доверенные);
●
Stagefright – уязвимость Android:
–мультимедийная библиотека, написанная на С++ (нет sandbox-защиты, как у java-приложений);
–используется во всех версиях Android (2.2-5.1), для большинства версий нет исправления
безопасности (security update) и в октябре 2015;
–работает как привилегированный и автоматически перезапускаемый системный процесс;
–автоматическая обработка полученного видео, изображений, MMS, до отправки
уведомления пользователю;
–использование целочисленного переполнения, ведущего к разрушению структуры
динамической памяти и последующему захвату управления.
ИТ-безопасность: не существует “гарантированно
защищенных” решений (“серебряной пули”)
Если система включена и работает, возможно только
лишь состояние с закрытыми уязвимостями ПО,
известными на текущий момент
Безопасность – процесс, а не состоние системы

More Related Content

What's hot

криптографические методы как часть общей защиты информации
криптографические методы как часть общей защиты информациикриптографические методы как часть общей защиты информации
криптографические методы как часть общей защиты информацииtrenders
 
Асимметричные криптоалгоритмя и хэширование
Асимметричные криптоалгоритмя и хэшированиеАсимметричные криптоалгоритмя и хэширование
Асимметричные криптоалгоритмя и хэшированиеAndrey Lebedev
 
OpenMP и статический анализ кода
OpenMP и статический анализ кодаOpenMP и статический анализ кода
OpenMP и статический анализ кодаTatyanazaxarova
 
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System KernelsLightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System KernelsIosif Itkin
 
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...Iosif Itkin
 
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...Iosif Itkin
 
Data mining for nmap acceleration
Data mining for nmap accelerationData mining for nmap acceleration
Data mining for nmap accelerationbeched
 
лабораторная работа 4
лабораторная работа 4лабораторная работа 4
лабораторная работа 4Gulnaz Shakirova
 
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...Iosif Itkin
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
 
Positive Hack Days. Терешкин. "Злая горничная" атакует PGP
Positive Hack Days. Терешкин. "Злая горничная" атакует PGPPositive Hack Days. Терешкин. "Злая горничная" атакует PGP
Positive Hack Days. Терешкин. "Злая горничная" атакует PGPPositive Hack Days
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...Iosif Itkin
 
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...Iosif Itkin
 
Static Analysis of Transactions Management in Applications for Java EE Platform
Static Analysis of Transactions Management in Applications for Java EE PlatformStatic Analysis of Transactions Management in Applications for Java EE Platform
Static Analysis of Transactions Management in Applications for Java EE PlatformIosif Itkin
 
32 подводных камня OpenMP при программировании на Си++
32 подводных камня OpenMP при программировании на Си++32 подводных камня OpenMP при программировании на Си++
32 подводных камня OpenMP при программировании на Си++Tatyanazaxarova
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines Sergey Zubkov
 
Безопасность 64-битного кода
Безопасность 64-битного кодаБезопасность 64-битного кода
Безопасность 64-битного кодаTatyanazaxarova
 
async/await: собираем грабли
async/await: собираем граблиasync/await: собираем грабли
async/await: собираем граблиAndrey Chasovskikh
 
Разработка систем управления для отечественных АКПП
Разработка систем управления для отечественных АКППРазработка систем управления для отечественных АКПП
Разработка систем управления для отечественных АКППMATLAB
 

What's hot (20)

криптографические методы как часть общей защиты информации
криптографические методы как часть общей защиты информациикриптографические методы как часть общей защиты информации
криптографические методы как часть общей защиты информации
 
Асимметричные криптоалгоритмя и хэширование
Асимметричные криптоалгоритмя и хэшированиеАсимметричные криптоалгоритмя и хэширование
Асимметричные криптоалгоритмя и хэширование
 
OpenMP и статический анализ кода
OpenMP и статический анализ кодаOpenMP и статический анализ кода
OpenMP и статический анализ кода
 
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System KernelsLightweight Static Analysis for Data Race Detection in Operating System Kernels
Lightweight Static Analysis for Data Race Detection in Operating System Kernels
 
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...
TMPA-2015: The dynamic Analysis of Executable Code in ELF Format Based on Sta...
 
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
TMPA-2015: The Application of Static Analysis to Optimize the Dynamic Detecti...
 
Data mining for nmap acceleration
Data mining for nmap accelerationData mining for nmap acceleration
Data mining for nmap acceleration
 
лабораторная работа 4
лабораторная работа 4лабораторная работа 4
лабораторная работа 4
 
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
TMPA-2015: Standards and Standartization in Program Engineering. Why Would Yo...
 
Working with .NET Threads
Working with .NET ThreadsWorking with .NET Threads
Working with .NET Threads
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
 
Positive Hack Days. Терешкин. "Злая горничная" атакует PGP
Positive Hack Days. Терешкин. "Злая горничная" атакует PGPPositive Hack Days. Терешкин. "Злая горничная" атакует PGP
Positive Hack Days. Терешкин. "Злая горничная" атакует PGP
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
 
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
TMPA-2015: Automated Testing of Multi-thread Data Structures Solutions Lineri...
 
Static Analysis of Transactions Management in Applications for Java EE Platform
Static Analysis of Transactions Management in Applications for Java EE PlatformStatic Analysis of Transactions Management in Applications for Java EE Platform
Static Analysis of Transactions Management in Applications for Java EE Platform
 
32 подводных камня OpenMP при программировании на Си++
32 подводных камня OpenMP при программировании на Си++32 подводных камня OpenMP при программировании на Си++
32 подводных камня OpenMP при программировании на Си++
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines
 
Безопасность 64-битного кода
Безопасность 64-битного кодаБезопасность 64-битного кода
Безопасность 64-битного кода
 
async/await: собираем грабли
async/await: собираем граблиasync/await: собираем грабли
async/await: собираем грабли
 
Разработка систем управления для отечественных АКПП
Разработка систем управления для отечественных АКППРазработка систем управления для отечественных АКПП
Разработка систем управления для отечественных АКПП
 

Similar to Переполнение буфера и другие уязвимости ПО - Роман Олейников

Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыPositive Development User Group
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems HardeningVasily Sartakov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
Formal verification of operating system kernels
Formal verification of operating system kernelsFormal verification of operating system kernels
Formal verification of operating system kernelsDenis Efremov
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20DefconRussia
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Ловим шеллкоды под ARM
Ловим шеллкоды под ARMЛовим шеллкоды под ARM
Ловим шеллкоды под ARMPositive Hack Days
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаSergey Platonov
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMTech Talks @NSU
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Бинарный анализ с декомпиляцией и LLVM
Бинарный анализ с декомпиляцией и LLVMБинарный анализ с декомпиляцией и LLVM
Бинарный анализ с декомпиляцией и LLVMSmartDec
 
Бинарный анализ с декомпиляцией и LLVM
Бинарный анализ с декомпиляцией и LLVMБинарный анализ с декомпиляцией и LLVM
Бинарный анализ с декомпиляцией и LLVMPositive Hack Days
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...Mail.ru Group
 
Развитие технологий генерации эксплойтов на основе анализа бинарного кода
Развитие технологий генерации эксплойтов на основе анализа бинарного кодаРазвитие технологий генерации эксплойтов на основе анализа бинарного кода
Развитие технологий генерации эксплойтов на основе анализа бинарного кодаPositive Hack Days
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
Современные подходы к SAST
Современные подходы к SASTСовременные подходы к SAST
Современные подходы к SASTVladimir Kochetkov
 

Similar to Переполнение буфера и другие уязвимости ПО - Роман Олейников (20)

Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
 
Operating Systems Hardening
Operating Systems HardeningOperating Systems Hardening
Operating Systems Hardening
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Formal verification of operating system kernels
Formal verification of operating system kernelsFormal verification of operating system kernels
Formal verification of operating system kernels
 
Теория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциямТеория языков программирования некоторые слайды к лекциям
Теория языков программирования некоторые слайды к лекциям
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Ловим шеллкоды под ARM
Ловим шеллкоды под ARMЛовим шеллкоды под ARM
Ловим шеллкоды под ARM
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладка
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Бинарный анализ с декомпиляцией и LLVM
Бинарный анализ с декомпиляцией и LLVMБинарный анализ с декомпиляцией и LLVM
Бинарный анализ с декомпиляцией и LLVM
 
Бинарный анализ с декомпиляцией и LLVM
Бинарный анализ с декомпиляцией и LLVMБинарный анализ с декомпиляцией и LLVM
Бинарный анализ с декомпиляцией и LLVM
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
 
Lab5
Lab5Lab5
Lab5
 
Развитие технологий генерации эксплойтов на основе анализа бинарного кода
Развитие технологий генерации эксплойтов на основе анализа бинарного кодаРазвитие технологий генерации эксплойтов на основе анализа бинарного кода
Развитие технологий генерации эксплойтов на основе анализа бинарного кода
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Современные подходы к SAST
Современные подходы к SASTСовременные подходы к SAST
Современные подходы к SAST
 

More from HackIT Ukraine

"CyberGuard — проект государственно-частного партнерства по созданию киберцен...
"CyberGuard — проект государственно-частного партнерства по созданию киберцен..."CyberGuard — проект государственно-частного партнерства по созданию киберцен...
"CyberGuard — проект государственно-частного партнерства по созданию киберцен...HackIT Ukraine
 
"В поисках уязвимостей мобильных приложений", Алексей Голубев
"В поисках уязвимостей мобильных приложений", Алексей Голубев"В поисках уязвимостей мобильных приложений", Алексей Голубев
"В поисках уязвимостей мобильных приложений", Алексей ГолубевHackIT Ukraine
 
"Безопасность и надежность ПО в техногенном мире", Владимир Обризан
"Безопасность и надежность ПО в техногенном мире", Владимир Обризан"Безопасность и надежность ПО в техногенном мире", Владимир Обризан
"Безопасность и надежность ПО в техногенном мире", Владимир ОбризанHackIT Ukraine
 
"Технология блокчейн: новые возможности и новые уязвимости", Дмитрий Кайдалов
"Технология блокчейн: новые возможности и новые уязвимости", Дмитрий Кайдалов"Технология блокчейн: новые возможности и новые уязвимости", Дмитрий Кайдалов
"Технология блокчейн: новые возможности и новые уязвимости", Дмитрий КайдаловHackIT Ukraine
 
"Безопасные Биткоин-транзакции без специального оборудования", Алексей Каракулов
"Безопасные Биткоин-транзакции без специального оборудования", Алексей Каракулов"Безопасные Биткоин-транзакции без специального оборудования", Алексей Каракулов
"Безопасные Биткоин-транзакции без специального оборудования", Алексей КаракуловHackIT Ukraine
 
"Growth hack в маркетинге и бизнесе", Максим Мирошниченко
"Growth hack в маркетинге и бизнесе", Максим Мирошниченко"Growth hack в маркетинге и бизнесе", Максим Мирошниченко
"Growth hack в маркетинге и бизнесе", Максим МирошниченкоHackIT Ukraine
 
"Как ловят хакеров в Украине", Дмитрий Гадомский
"Как ловят хакеров в Украине", Дмитрий Гадомский"Как ловят хакеров в Украине", Дмитрий Гадомский
"Как ловят хакеров в Украине", Дмитрий ГадомскийHackIT Ukraine
 
"Security Requirements Engineering", Oleksii Baranovskyi
"Security Requirements Engineering", Oleksii Baranovskyi"Security Requirements Engineering", Oleksii Baranovskyi
"Security Requirements Engineering", Oleksii BaranovskyiHackIT Ukraine
 
"Наступну атаку можна попередити", Олександр Чубарук
"Наступну атаку можна попередити", Олександр Чубарук"Наступну атаку можна попередити", Олександр Чубарук
"Наступну атаку можна попередити", Олександр ЧубарукHackIT Ukraine
 
"Preventing Loss of Personal Data on a Mobile Network", Oleksii Lukin
"Preventing Loss of Personal Data on a Mobile Network", Oleksii Lukin"Preventing Loss of Personal Data on a Mobile Network", Oleksii Lukin
"Preventing Loss of Personal Data on a Mobile Network", Oleksii LukinHackIT Ukraine
 
"How to make money with Hacken?", Dmytro Budorin
"How to make money with Hacken?", Dmytro Budorin"How to make money with Hacken?", Dmytro Budorin
"How to make money with Hacken?", Dmytro BudorinHackIT Ukraine
 
"Using cryptolockers as a cyber weapon", Alexander Adamov
"Using cryptolockers as a cyber weapon", Alexander Adamov"Using cryptolockers as a cyber weapon", Alexander Adamov
"Using cryptolockers as a cyber weapon", Alexander AdamovHackIT Ukraine
 
"Cryptography, Data Protection, and Security For Start-Ups In The Post Snowde...
"Cryptography, Data Protection, and Security For Start-Ups In The Post Snowde..."Cryptography, Data Protection, and Security For Start-Ups In The Post Snowde...
"Cryptography, Data Protection, and Security For Start-Ups In The Post Snowde...HackIT Ukraine
 
"Bypassing two factor authentication", Shahmeer Amir
"Bypassing two factor authentication", Shahmeer Amir"Bypassing two factor authentication", Shahmeer Amir
"Bypassing two factor authentication", Shahmeer AmirHackIT Ukraine
 
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ..."Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...HackIT Ukraine
 
"Introduction to Bug Hunting", Yasser Ali
"Introduction to Bug Hunting", Yasser Ali"Introduction to Bug Hunting", Yasser Ali
"Introduction to Bug Hunting", Yasser AliHackIT Ukraine
 
"Hack it. Found it. Sell it. How hackers can be successful in the business wo...
"Hack it. Found it. Sell it. How hackers can be successful in the business wo..."Hack it. Found it. Sell it. How hackers can be successful in the business wo...
"Hack it. Found it. Sell it. How hackers can be successful in the business wo...HackIT Ukraine
 
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim HegazyHackIT Ukraine
 
Alfonso De Gregorio - Vulnerabilities and Their Surrounding Ethical Questions...
Alfonso De Gregorio - Vulnerabilities and Their Surrounding Ethical Questions...Alfonso De Gregorio - Vulnerabilities and Their Surrounding Ethical Questions...
Alfonso De Gregorio - Vulnerabilities and Their Surrounding Ethical Questions...HackIT Ukraine
 
Владимир Махитко - Automotive security. New challenges
Владимир Махитко - Automotive security. New challengesВладимир Махитко - Automotive security. New challenges
Владимир Махитко - Automotive security. New challengesHackIT Ukraine
 

More from HackIT Ukraine (20)

"CyberGuard — проект государственно-частного партнерства по созданию киберцен...
"CyberGuard — проект государственно-частного партнерства по созданию киберцен..."CyberGuard — проект государственно-частного партнерства по созданию киберцен...
"CyberGuard — проект государственно-частного партнерства по созданию киберцен...
 
"В поисках уязвимостей мобильных приложений", Алексей Голубев
"В поисках уязвимостей мобильных приложений", Алексей Голубев"В поисках уязвимостей мобильных приложений", Алексей Голубев
"В поисках уязвимостей мобильных приложений", Алексей Голубев
 
"Безопасность и надежность ПО в техногенном мире", Владимир Обризан
"Безопасность и надежность ПО в техногенном мире", Владимир Обризан"Безопасность и надежность ПО в техногенном мире", Владимир Обризан
"Безопасность и надежность ПО в техногенном мире", Владимир Обризан
 
"Технология блокчейн: новые возможности и новые уязвимости", Дмитрий Кайдалов
"Технология блокчейн: новые возможности и новые уязвимости", Дмитрий Кайдалов"Технология блокчейн: новые возможности и новые уязвимости", Дмитрий Кайдалов
"Технология блокчейн: новые возможности и новые уязвимости", Дмитрий Кайдалов
 
"Безопасные Биткоин-транзакции без специального оборудования", Алексей Каракулов
"Безопасные Биткоин-транзакции без специального оборудования", Алексей Каракулов"Безопасные Биткоин-транзакции без специального оборудования", Алексей Каракулов
"Безопасные Биткоин-транзакции без специального оборудования", Алексей Каракулов
 
"Growth hack в маркетинге и бизнесе", Максим Мирошниченко
"Growth hack в маркетинге и бизнесе", Максим Мирошниченко"Growth hack в маркетинге и бизнесе", Максим Мирошниченко
"Growth hack в маркетинге и бизнесе", Максим Мирошниченко
 
"Как ловят хакеров в Украине", Дмитрий Гадомский
"Как ловят хакеров в Украине", Дмитрий Гадомский"Как ловят хакеров в Украине", Дмитрий Гадомский
"Как ловят хакеров в Украине", Дмитрий Гадомский
 
"Security Requirements Engineering", Oleksii Baranovskyi
"Security Requirements Engineering", Oleksii Baranovskyi"Security Requirements Engineering", Oleksii Baranovskyi
"Security Requirements Engineering", Oleksii Baranovskyi
 
"Наступну атаку можна попередити", Олександр Чубарук
"Наступну атаку можна попередити", Олександр Чубарук"Наступну атаку можна попередити", Олександр Чубарук
"Наступну атаку можна попередити", Олександр Чубарук
 
"Preventing Loss of Personal Data on a Mobile Network", Oleksii Lukin
"Preventing Loss of Personal Data on a Mobile Network", Oleksii Lukin"Preventing Loss of Personal Data on a Mobile Network", Oleksii Lukin
"Preventing Loss of Personal Data on a Mobile Network", Oleksii Lukin
 
"How to make money with Hacken?", Dmytro Budorin
"How to make money with Hacken?", Dmytro Budorin"How to make money with Hacken?", Dmytro Budorin
"How to make money with Hacken?", Dmytro Budorin
 
"Using cryptolockers as a cyber weapon", Alexander Adamov
"Using cryptolockers as a cyber weapon", Alexander Adamov"Using cryptolockers as a cyber weapon", Alexander Adamov
"Using cryptolockers as a cyber weapon", Alexander Adamov
 
"Cryptography, Data Protection, and Security For Start-Ups In The Post Snowde...
"Cryptography, Data Protection, and Security For Start-Ups In The Post Snowde..."Cryptography, Data Protection, and Security For Start-Ups In The Post Snowde...
"Cryptography, Data Protection, and Security For Start-Ups In The Post Snowde...
 
"Bypassing two factor authentication", Shahmeer Amir
"Bypassing two factor authentication", Shahmeer Amir"Bypassing two factor authentication", Shahmeer Amir
"Bypassing two factor authentication", Shahmeer Amir
 
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ..."Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
 
"Introduction to Bug Hunting", Yasser Ali
"Introduction to Bug Hunting", Yasser Ali"Introduction to Bug Hunting", Yasser Ali
"Introduction to Bug Hunting", Yasser Ali
 
"Hack it. Found it. Sell it. How hackers can be successful in the business wo...
"Hack it. Found it. Sell it. How hackers can be successful in the business wo..."Hack it. Found it. Sell it. How hackers can be successful in the business wo...
"Hack it. Found it. Sell it. How hackers can be successful in the business wo...
 
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
 
Alfonso De Gregorio - Vulnerabilities and Their Surrounding Ethical Questions...
Alfonso De Gregorio - Vulnerabilities and Their Surrounding Ethical Questions...Alfonso De Gregorio - Vulnerabilities and Their Surrounding Ethical Questions...
Alfonso De Gregorio - Vulnerabilities and Their Surrounding Ethical Questions...
 
Владимир Махитко - Automotive security. New challenges
Владимир Махитко - Automotive security. New challengesВладимир Махитко - Automotive security. New challenges
Владимир Махитко - Automotive security. New challenges
 

Переполнение буфера и другие уязвимости ПО - Роман Олейников

  • 1. ПЕРЕПОЛНЕНИЕ БУФЕРА И ДРУГИЕ УЯЗВИМОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ: ТЕОРИЯ И ПРАКТИКА ЗАЩИТЫ Роман Олейников roliynykov@gmail.com http://www.slideshare.net/oliynykov
  • 2. План доклада ● краткое представление ● уязвимости ПО: универсальный вектор реализации атаки ● базовые типы уязвимостей программного обеспечения (системный уровень) ● переполнение буфера: пример атаки ● методы защиты и способы их обхода ● примеры широко распространенных критичных уязвимостей, их особенности и последствия использования
  • 3. Коротко о докладчике ● доктор технических наук (симметричная криптография) ● начальник отдела научных исследований АО "Институт информационных технологий" (Харьков) ● профессор кафедры безопасности информационных систем и технологий (ХНУ им. В.Н.Каразина) и кафедры безопасности информационных технологий (ХНУРЭ) ● visiting professor at Samsung Advanced Technology Training Institute (Suwon, South Korea) ● invited professor at the Selmer Center, Crypto and Security Research Group, University of Bergen (Norway) ● ответственный исполнитель (технический руководитель разработки), соавтор национальных криптографических стандартов ДСТУ 7624:2014 и ДСТУ 7564:2014 (блочный шифр “Калина” и функция хэширования “Купина”)
  • 4. Количество опубликованных критичных уязвимостей в браузерах Источник: Symantec Internet Security Threat report, 2015
  • 5. Соотношение количества уязвимых Android- устройств (опубликованные уязвимости) Источник: D.R.Thomas, A.R. Beresford. Security Metrics for the Android Ecosystem. University of Cambridge, United Kingdom Актуальное состояние (октябрь 2015): подавляющее большинство устройств имеет незакрытую уязвимость Stagefright.
  • 6. Результаты конкурса Pwn2Own 2015 (демонстрация уязвимостей нулевого дня) ● 5 bugs in the Windows operating system ● 4 bugs in Internet Explorer 11 ● 3 bugs in Mozilla Firefox ● 3 bugs in Adobe Reader ● 3 bugs in Adobe Flash ● 2 bugs in Apple Safari ● 1 bug in Google Chrome (75,000 USD) Итог: исследователям в общей сложности выплачено 557 500 USD за два дня проведения конкурса NB: компании, целенаправленно занимающиеся обнаружением 0-day, как правило, в таких конкурсах не участвуют (из-за низких выплат) Источник: HP Security Research Blog
  • 7. Последствия киберпреступности для глобальной экономики Источник: Norton/Symantec Cybercrime Report, 2013
  • 8. Базовые типы уязвимостей программного обеспечения (системный уровень) ● переполнение буфера (buffer overflow) - прямой захват потока исполнения, возможен через: – стек; – динамическую память (heap); – сегмент данных; ● некорректные форматные строки (uncontrolled format string): – чтение локальных переменных (стек); – чтение любого блока данных в адресном пространстве процесса; – модификация значения в адресном пространстве процесса; ● целочисленные переполнения (integer oveflows): – выход за пределы допустимого диапазона значений (предварительный этап захвата потока исполнения); – некорректные значения выходных данных модуля; – неверное ветвление при исполнении и пр. ● etc.
  • 10. Пример кода (С/С++) без проверки дипазона
  • 12. Что будет, если копируемая строка окажется длиннее приемного буфера? strcpy( &dst, &src ) , в отличие от strncpy( &dst, &src, sizeof (dst) ) , учитывает только длину копируемой строки (перезапись идет до нахождения завершающего нулевого символа), без учета размера приемного буфера
  • 13. Стек потока (thread) при атаке: переполнение специально сформированным блоком (shellcode)
  • 14. Практическая демонстрация ● netcalcd – уязвимый сетевой демон (сервис) для Linux (x86), разработанный для демонстрации переполнения буфера –прием и обработка текстовых запросов по сети –печать отладочной информации в консоль ● утилита для атаки (exploit) –соединение с удаленным сервером –отправка блока с кодом для переполнения буфера (exploitation)
  • 18. Linux-сервер: открытые порты до и после проведения атаки
  • 19. Подключение к только что открытому порту на Linux-сервере
  • 20. Утилита для реализации атаки ● клиентское приложение под Windows ● открытие сетевого соединения с уязвимым сервером и отправить блок данных, вызывающий переполнение буфера ● блок данных, вызывающий переполнение, содержить исполнимый код, выполняющийся на атакованном компьютере (и запускающий дополнительный web-сервер)
  • 21. Утилита для реализации атаки: клиентское приложение под Windows открытие сетевого соединения
  • 22. Блок данных, отправляемый на сервер: исполнимый код
  • 23. Базовые рекомендации для защиты от переполнения буфера ● основная: писать безопасный код, делать вызовы только защищенных функций с верификацией всех входных данных; проводить независимый аудит кода; ● применение ASLR (Address Space Layout Randomization) в операционной системе; ● обязательное использование бита NX (XD) для процессоров х86/х86_64 (уровень операционной системы); ● применение компилятором canary words; ● запуск процессов/потоков с наименьшими привилегиями, необходимыми для нормальной работы.
  • 25. Методы обхода ASLR ● прямой подбор верного адреса (старшие биты не меняются; слово выровнено по определенной границе; вероятность успеха рассчитываем на основе парадокса дней рождения); –метод эффективно работает и для обхода canary words ● возврат в код, находящийся в нерандомизированной памяти; ● jmp *esp ● etc. Источник (часть): Tio Muller, ASLR Smack & Laugh Reference
  • 26. Бит NX: обход через return­to­libc ● нет исполнения кода в стеке (и исключения процессора) ● адрес возврата перезаписывается и указывает на существующий код ● атакующий выбирает нужную функцию и аргументы для нее ● в Windows возможно сделать цепочку вызовов (для _stdcall_ вызываемая функция очищает стек)
  • 27. Защита компилятора: canary words NB: вероятность успеха обхода метода защиты на 32-битовой платформе примерно равна ½ для 216 попыток (математика: парадокс дней рождения)
  • 28. Примеры широко распространенных критичных уязвимостей ● Heartbleed – уязвимость OpenSSL: –возможность получить доступ на чтение данных за пределами буфера по запросу из сети ; –уязвимыми оказались сотни тысяч web-серверов, использующих библиотеку OpenSSL; –похищены криптографические ключи и скомпрометированы данные миллионов пользователей; ● GotoFail – уязвимость реализации TLS (SSL) для OSX и iOS: –лишний оператор goto блокировал проверку подлинности сертификатов; –злоумышленик получил возможность перехватывать трафик (man­in­the­middle) и/или организовывать фишинг через TLS-соединения (отображаемые как доверенные); ● Stagefright – уязвимость Android: –мультимедийная библиотека, написанная на С++ (нет sandbox-защиты, как у java-приложений); –используется во всех версиях Android (2.2-5.1), для большинства версий нет исправления безопасности (security update) и в октябре 2015; –работает как привилегированный и автоматически перезапускаемый системный процесс; –автоматическая обработка полученного видео, изображений, MMS, до отправки уведомления пользователю; –использование целочисленного переполнения, ведущего к разрушению структуры динамической памяти и последующему захвату управления.
  • 29. ИТ-безопасность: не существует “гарантированно защищенных” решений (“серебряной пули”) Если система включена и работает, возможно только лишь состояние с закрытыми уязвимостями ПО, известными на текущий момент Безопасность – процесс, а не состоние системы