«Отладка приложений с помощью dtrace» — Станислав Краснояров, Redsteep e-Legion
Доклад о том, как можно использовать утилиту dtrace для отладки iOS приложений. Эта утилита может быть полезна при отладке сложных случаев, когда необходимо задать какие-либо правила для фильтрации вызываемых функций.
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковYandex
Антивирусная система Яндекса ежедневно обнаруживает тысячи взломанных сайтов. Периодически среди них встречаются крупные и известные интернет-ресурсы.
Администраторы сайтов часто оказываются не готовы к тому, что злоумышленник может пробраться через внешний периметр и исполнить произвольный код на стороне сервера. В результате перед ними встаёт нелегкая задача: обнаружить последствия и предотвратить дальнейшие проблемы.
Доклад посвящён практикам и инструментам, которые могут существенно повысить эффективность противодействия вредоносной активности, и профилактике её возникновения.
Formal verification of operating system kernelsDenis Efremov
The speaker will share his experience of participating in projects on formal verification and analysis of access control modules for Astra Linux SE and Elbrus kernels, as well as verification of the Contiki code (OS for IoT) within the European VESSEDIA program. The speaker will disclose details about the development of formal access control models (Rodin/Event-B) and code specifications (Frama-C/ACSL), the use of static and dynamic analyzers, and the inclusion of formal analysis in the continuous integration cycle (continuous verification). Other types of work that help meet the certification requirements will also be considered.
https://standoff365.com/phdays10/schedule/development/formal-verification-of-operating-system-kernels
В докладе пойдёт речь о практическом применении lock-free структур и алгоритмов, которые используются в RealTime-Поиске в Яндексе. Из-за сложности теоретических исследований по lock-free и оторванности от практики часто создаётся впечатление, что это просто развлечение для знатоков computer science и не может быть использовано в реальном проекте. Будут рассмотрены проблемы традиционного подхода к lock-free и показано, как взглянув по новому на всю идею lock-free, добиться максимальной производительности, невозможной при использовании блокировок.
Текст доклада: https://0x1.tv/20210617B
Обзор инструментов, технологий тестирования и способов организаций тестов, доступных в настоящий момент как в самом ядре «Linux», так и в сторонних открытых проектах. Ядро представляет собой большой и неоднородный проект, состоящий как из аппаратно-независимого кода, так и частей, работоспособность которых зависит от наличия соотвествующей аппаратуры или специфичных программ пользовательсткого пространства. Для тестирования разных частей ядра применяются разных методы и подходы. Обзор включает в себя рассмотрение таких инструментов/технологий как «kselftest», «KUnit», «KTF», «ktest» и наиболее распространённых тестовых пакетов «LTP», «LKP», «xfstests» и др.
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
Лекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"PyNSK
Докладчик:
Александр Маршалов (ЦФТ)
Описание: Мы узнаем, что из себя представляет дерево синтаксического разбора (AST / Abstract Syntax Tree) в языке Python
и какие магические возможности можно получить с помощью модификации AST.
«Отладка приложений с помощью dtrace» — Станислав Краснояров, Redsteep e-Legion
Доклад о том, как можно использовать утилиту dtrace для отладки iOS приложений. Эта утилита может быть полезна при отладке сложных случаев, когда необходимо задать какие-либо правила для фильтрации вызываемых функций.
Опенсорс-инструменты на страже безопасности бэкенда — Петр ВолковYandex
Антивирусная система Яндекса ежедневно обнаруживает тысячи взломанных сайтов. Периодически среди них встречаются крупные и известные интернет-ресурсы.
Администраторы сайтов часто оказываются не готовы к тому, что злоумышленник может пробраться через внешний периметр и исполнить произвольный код на стороне сервера. В результате перед ними встаёт нелегкая задача: обнаружить последствия и предотвратить дальнейшие проблемы.
Доклад посвящён практикам и инструментам, которые могут существенно повысить эффективность противодействия вредоносной активности, и профилактике её возникновения.
Formal verification of operating system kernelsDenis Efremov
The speaker will share his experience of participating in projects on formal verification and analysis of access control modules for Astra Linux SE and Elbrus kernels, as well as verification of the Contiki code (OS for IoT) within the European VESSEDIA program. The speaker will disclose details about the development of formal access control models (Rodin/Event-B) and code specifications (Frama-C/ACSL), the use of static and dynamic analyzers, and the inclusion of formal analysis in the continuous integration cycle (continuous verification). Other types of work that help meet the certification requirements will also be considered.
https://standoff365.com/phdays10/schedule/development/formal-verification-of-operating-system-kernels
В докладе пойдёт речь о практическом применении lock-free структур и алгоритмов, которые используются в RealTime-Поиске в Яндексе. Из-за сложности теоретических исследований по lock-free и оторванности от практики часто создаётся впечатление, что это просто развлечение для знатоков computer science и не может быть использовано в реальном проекте. Будут рассмотрены проблемы традиционного подхода к lock-free и показано, как взглянув по новому на всю идею lock-free, добиться максимальной производительности, невозможной при использовании блокировок.
Текст доклада: https://0x1.tv/20210617B
Обзор инструментов, технологий тестирования и способов организаций тестов, доступных в настоящий момент как в самом ядре «Linux», так и в сторонних открытых проектах. Ядро представляет собой большой и неоднородный проект, состоящий как из аппаратно-независимого кода, так и частей, работоспособность которых зависит от наличия соотвествующей аппаратуры или специфичных программ пользовательсткого пространства. Для тестирования разных частей ядра применяются разных методы и подходы. Обзор включает в себя рассмотрение таких инструментов/технологий как «kselftest», «KUnit», «KTF», «ktest» и наиболее распространённых тестовых пакетов «LTP», «LKP», «xfstests» и др.
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
Лекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"PyNSK
Докладчик:
Александр Маршалов (ЦФТ)
Описание: Мы узнаем, что из себя представляет дерево синтаксического разбора (AST / Abstract Syntax Tree) в языке Python
и какие магические возможности можно получить с помощью модификации AST.
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python Meetup
Python AST: между исходным текстом и байт-кодом / Николай Карелин / Системный архитектор VPI Development Center
Николай познакомит слушателей с деталями устройства Python AST и, в частности, расскажет некоторые интересные факты о работе диалекта Hy.
Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/LinuxDefconRussia
Руткиты в мире основанных на ядре Linux операционных систем уже не являются редкостью. Рассказ будет о том, как попытки в современных реалиях определить то, скомпрометирована ли система, привели к неожиданному результату.
Видео доклада: https://www.youtube.com/watch?v=slnQBoxsHPU
Rust - системный язык программирования, который быстро исполняется, предотвращает почти все падения, и устраняет гонки по данным.
Как он этого достигает? Про это доклад.
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
В дата-центрах нашей компании несколько тысяч серверов, и примерно на половине из них нужно выкладывать PHP-код 2 раза в день. Помимо раскладки на production также не стоит забывать о том, что код нужен на стейджинге, и в стейджинг-кластер у нас входит около 50 машин, код на которых обновляется раз в несколько минут. Также есть «хотфиксы» — небольшие (1-5) наборы файлов, которые выкладываются во внеочередном порядке на все или на выделенную часть серверов, чтобы устранить существующие проблемы на продакшне, не дожидаясь полной выкладки.
В этом докладе я расскажу о том, как мы деплоились в течение 10 лет, о том, какую новую систему для деплоя PHP-кода мы разработали и внедрили в production, а также проведу обзор решений для масштабного деплоя кода на PHP и анализ их производительности.
План доклада:
— Наша старая система деплоя, достоинства и недостатки.
— Существующие решения:
* "svn up" / "git pull".
* rsync.
* phar, hhbc (HHVM-specific), "loop".
* rsync + 2 директории + realpath_root (Rasmus-style).
— Требования для новой системы деплоя.
* быстрый деплой на стейджинг (5-10 секунд на 50 серверов).
* возможность атомарно патчить несколько файлов и быстро их выкладывать (10 секунд на весь кластер).
* совместимость с docker.
* поддержка «долгоиграющих» CLI-скриптов (несколько часов).
* низкое потребление ресурсов на принимающей стороне.
* отсутствие необходимости сбрасывать opcache.
* высокая скорость деплоя на продакшн (1-2 минуты на 1500 серверов).
— MDK — multiversion deployment kit.
— Анализ применимости и производительности способов деплоя.
— Выводы.
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python Meetup
Python AST: между исходным текстом и байт-кодом / Николай Карелин / Системный архитектор VPI Development Center
Николай познакомит слушателей с деталями устройства Python AST и, в частности, расскажет некоторые интересные факты о работе диалекта Hy.
Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/LinuxDefconRussia
Руткиты в мире основанных на ядре Linux операционных систем уже не являются редкостью. Рассказ будет о том, как попытки в современных реалиях определить то, скомпрометирована ли система, привели к неожиданному результату.
Видео доклада: https://www.youtube.com/watch?v=slnQBoxsHPU
Rust - системный язык программирования, который быстро исполняется, предотвращает почти все падения, и устраняет гонки по данным.
Как он этого достигает? Про это доклад.
5 способов деплоя PHP-кода в условиях хайлоада / Юрий Насретдинов (Badoo)Ontico
В дата-центрах нашей компании несколько тысяч серверов, и примерно на половине из них нужно выкладывать PHP-код 2 раза в день. Помимо раскладки на production также не стоит забывать о том, что код нужен на стейджинге, и в стейджинг-кластер у нас входит около 50 машин, код на которых обновляется раз в несколько минут. Также есть «хотфиксы» — небольшие (1-5) наборы файлов, которые выкладываются во внеочередном порядке на все или на выделенную часть серверов, чтобы устранить существующие проблемы на продакшне, не дожидаясь полной выкладки.
В этом докладе я расскажу о том, как мы деплоились в течение 10 лет, о том, какую новую систему для деплоя PHP-кода мы разработали и внедрили в production, а также проведу обзор решений для масштабного деплоя кода на PHP и анализ их производительности.
План доклада:
— Наша старая система деплоя, достоинства и недостатки.
— Существующие решения:
* "svn up" / "git pull".
* rsync.
* phar, hhbc (HHVM-specific), "loop".
* rsync + 2 директории + realpath_root (Rasmus-style).
— Требования для новой системы деплоя.
* быстрый деплой на стейджинг (5-10 секунд на 50 серверов).
* возможность атомарно патчить несколько файлов и быстро их выкладывать (10 секунд на весь кластер).
* совместимость с docker.
* поддержка «долгоиграющих» CLI-скриптов (несколько часов).
* низкое потребление ресурсов на принимающей стороне.
* отсутствие необходимости сбрасывать opcache.
* высокая скорость деплоя на продакшн (1-2 минуты на 1500 серверов).
— MDK — multiversion deployment kit.
— Анализ применимости и производительности способов деплоя.
— Выводы.
The saturday economist ten predictions for 2014 John Ashcroft
The Saturday Economist, ten predictions for the UK economy in 2014. The outlook for the UK economy explained, forecasts from the Professor and his team
Blogging/Microblogging for enhancing the research accessibilityUniversity of Malaya
Scholarly blogs and Microblogs such as Twitter are increasingly attracting attention as new channels of science communication. Blogs and microblogging services like Twitter get your research seen by more non-academics than your peer reviewed papers will ever be. The importance of this is not to be dismissed. Blogs and microblogs are vital tools for academics to publicly communicate about research developments and findings. Academics can also gain feedback from other peers, as well as expand their networks and enhance research visibility. This presentation will provide guidelines on blogs and microblogs as tools for increasing the article visibility and citations. Increased visibility online helps your offline recognition.
Practical Language for Extracting Data from Source Codes and Preparing Them f...Denis Efremov
Talk at Yandex Perl Meetup (06 June 2018). The presentation is about how tools written in Perl can be used for verification of Linux kernel modules. Various types of source code transformations with style preservation, interactive callgraphs, report with various complexity metrics creation. How we use the tools in the AstraVer project for writing formal specifications (ACSL) on code and how it helps us with regulatory certification. The tools: https://github.com/evdenis/spec-utils
Поиск уязвимостей с использованием статического анализа кодаcorehard_by
Поиск уязвимостей с использованием статического анализа кода, Андрей Карпов и Евгений Рыжков
В последнее время мы все слышим о новых и новых уязвимостях, обнаруженных в программном обеспечении. Уже стало очевидно, что писать код без уязвимостей человечество не может. Но могут ли современные инструменты разработки помочь обнаружить хотя бы некоторые ошибки? В докладе НЕ будет фраз типа «купите такой-то инструмент, чтобы не допускать уязвимостей в своем и чужом коде». На реальных примерах мы попробуем показать какие типы уязвимостей или по-другому программных дефектов могут быть найдены с помощью технологий анализа кода, а какие – пока нет. Ну и конечно как писать код так, чтобы снизить вероятность появления уязвимостей в своем коде.
Поиск уязвимостей с использованием статического анализа кодаAndrey Karpov
Уязвимости - это те же самые обыкновенные ошибки. Зачем их выделять? Делайте это, если хотите заработать больше денег. CWE - Common Weakness Enumeration. CVE - Common Vulnerabilities and Exposures. Теперь с помощью Valgrind вы ищете не утечку памяти, а отказ в обслуживании!
200 open source проектов спустя: опыт статического анализа исходного кодаAndrey Karpov
Одна из особенностей работы нашей команды — анализ большого количества различных программных проектов. Рассказывать о закрытых коммерческих проектах часто запрещает NDA, а вот об open source можно и нужно говорить. Какие ошибки допускают в open-source-проектах? Какой код более качественный — закрытый или открытый? Нужно ли придерживаться стандартов кодирования, или они давно устарели? Какие ошибки сложнее найти и исправить — сложные архитектурные или простые опечатки? Проанализировав за несколько лет сотни программных проектов от zlib до Chromium, мы готовы поделиться своим опытом и ответить на эти вопросы.
Переполнение буфера и другие уязвимости ПО - Роман ОлейниковHackIT Ukraine
Презентация с форума http://hackit-ukraine.com/
Роман Олейников
ХНУ им. В.Н.Каразина.
Переполнение буфера и другие уязвимости ПО
Теория и практика защиты.О спикере: Проф. каф. безопасности информационных систем и технологий. Начальник отдела научных исследований АО "Институт информационных технологий", г.Харьков (основная должность); приглашенный профессор в университете г.Берген (Норвегия); приглашенный профессор в Samsung Advanced Technology Training Institute (Ю.Корея);профессор кафедры безопасности информационных технологий Харьковского национального университета радиоэлектроники;
Развитие систем анализа защищенности. Взгляд в будущее!Dmitry Evteev
Системы анализа защищенности являются удобным и простым инструментом, помогающим своевременно обнаруживать уязвимости в информационных системах. Они прошли долгий путь от утилит из набора "для хакера" до систем обеспечения информационной безопасности в инфраструктуре любой сложности. Как все было на самом деле, что мы имеем сейчас и что нас ждет в будущем? Именно об этом и пойдет речь в этом выступлении.
Александр Коротин. Безопасность систем управления турбинами в электроэнергетикеKaspersky
Александр Коротин, Специалист по анализу защищенности в «Лаборатории Касперского», в своем докладе рассказывает об особенностях безопасности систем управления турбинами в электроэнергетике.
Подробнее о конференции: https://kas.pr/kicsconf2021
Функциональное программирование в примерах.
Язык Haskell: характеристики, история, сильные и слабые стороны, истории успеха и неудач.
Спецификация Haskell’98: синтаксис, компиляторы, интепретаторы, документация, IDE.
Особенности языка: тип Maybe, списки, классы типов, основы монад.
Библиотеки и фреймворки: Parsec, GenXml, HaXml
DSL
На десерт что-то из Existential Types, State Monad, ST Monad, Monad Transformers.
The lecture by Norman Feske for Summer Systems School'12.
Genode Architecture
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
Genode[2] - The Genode operating-system framework provides a uniform API for applications on top of 8 existing microkernels/hypervisors: Linux, L4ka::Pistachio, L4/Fiasco, OKL4, NOVA, Fiasco.OC, Codezero, and a custom kernel for the MicroBlaze architecture.
1. http://ksyslabs.org/
2. http://genode.org
The lecture by Norman Feske for Summer Systems School'12.
Genode Components
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
Genode[2] - The Genode operating-system framework provides a uniform API for applications on top of 8 existing microkernels/hypervisors: Linux, L4ka::Pistachio, L4/Fiasco, OKL4, NOVA, Fiasco.OC, Codezero, and a custom kernel for the MicroBlaze architecture.
1. http://ksyslabs.org/
2. http://genode.org
The lecture by Norman Feske for Summer Systems School'12.
Genode Programming
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
Genode[2] - The Genode operating-system framework provides a uniform API for applications on top of 8 existing microkernels/hypervisors: Linux, L4ka::Pistachio, L4/Fiasco, OKL4, NOVA, Fiasco.OC, Codezero, and a custom kernel for the MicroBlaze architecture.
1. http://ksyslabs.org/
2. http://genode.org
The lecture by Norman Feske for Summer Systems School'12.
Genode Compositions
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
Genode[2] - The Genode operating-system framework provides a uniform API for applications on top of 8 existing microkernels/hypervisors: Linux, L4ka::Pistachio, L4/Fiasco, OKL4, NOVA, Fiasco.OC, Codezero, and a custom kernel for the MicroBlaze architecture.
1. http://ksyslabs.org/
2. http://genode.org
The lecture by Sartakov A. Vasily for Summer Systems School'12.
Brief introduction to Trusted Computing.
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
1. http://ksyslabs.org/
The lecture by Sartakov A. Vasily for Summer Systems School'12.
Brief introduction to System Integrity.
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
1. http://ksyslabs.org/
The lecture by Bjoern Doebel for Summer Systems School'12.
IPC mechanisms and memory management in Fiasco.OC and L4Re
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
1. http://ksyslabs.org/
The lecture by Bjoern Doebel for Summer Systems School'12.
Brief introduction to microkernels illustrated by examples (Fiasco.OC and L4Re).
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
1. http://ksyslabs.org/
The lecture by Bjoern Doebel for Summer Systems School'12.
L4Linux, DDEkit, POSIX compatabls
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
1. http://ksyslabs.org/
2. Structure
• Intro
• Атаки
использующие
переполнение
буферов
• Средства
противодействия
атакам
основанным
на
переполнении
буферов
• Противодействия
противодействию:
Return
Oriented
Programming
3. Intro
• Morris
Worm
(November
1988)
–
Первый
известный
эксплоит
использовавший
срыв
стека
–
execve(“/bin/sh”,
0,
0)
• Thomas
Lopa&c
опубликовал
эксплоит
NCSA
HTTPD
(1995)
• “Smashing
the
Stack
for
Fun
and
Profit”
Aleph
One
(August
1996)
• Unix
4. Structure
• Intro
• Атаки
использующие
переполнение
буферов
• Средства
противодействия
атакам
основанным
на
переполнении
буферов
• Противодействия
противодействию:
Return
Oriented
Programming
5. Срыв
стека
• Подготовка
кода
(payload)
• Изменение
последовательности
выполнения
программы
6. Подготовка
кода
• Передается
в
качестве
аргументов,
команд,
обрабатываемых
данных
• Эти
данные
должны
сохраняться
в
выделенные
для
них
буфера
• Принципиальной
разницы
нет
–
статический
это
буфер
или
динамический
• Отсутствие
проверки
длины
данных
приводит
к
перезаписи
данных
за
границей
буфера.
15. Structure
• Intro
• Атаки
использующие
переполнение
буферов
• Средства
противодействия
атакам
основанным
на
переполнении
буферов
• Противодействия
противодействию:
Return
Oriented
Programming
16. Средства
противодействия
атакам
основанным
на
переполнении
буферов
• Маркерные
значения
(Canaries)
• Рандомизация
адресного
пространства
(ASLR)
• NX
бит
• Подсистемы
безопасности
Linux
18. Address
Space
Layout
Randomiza&on
Name[0]
0x7f..ff
Первый
запуск
char
name[64];
prinˆ("%pn",
name);
puts("What's
your
name?");
gets(name);
prinˆ("Hello,
%s!n",
name);
7cb7ba740
Name[0]
Второй
запуск
ef5415a90
19. Эмуляция
NX
bit
Код
Данные
Стек
Код
Исполняемый
неисполняемый
Лимит
сегмента
20. NX/XD
bit:
Data
Execu&on
Preven&on(DEP)
• Physical
Address
Extension
(PAE)
• Может
защищать
не
только
весь
процесс
целиком,
но
и
его
отдельную
часть.
22. SELinux
• Разрабатывался
под
контролем
Na&onal
Security
Agency
(NSA)
• Исходный
код
был
опубликован
в
декабря
2000
• Мандатный
контроль
доступа
на
основе
контроля
меток
безопасности
объектов
и
субъектов
ОС
• Принудительная
типизация
доступа
(Type
Enforcement)
23. Проект
LOCK
• LOCK
(LOgical
Coprocessing
Kernel)
• Secure
Compu&ng
Corpora&on
(SCC)
• «A1»,Trusted
Compu&ng
System
Evalua&on
Criteria
(“Orange
Book”).
• Принудительная
типизация
доступа
• Наследие
-‐
Sidewinder
Internet
Firewall
и
SELinux
• Изначально
было
дополнением
2.2,
2.4
• «Благодаря»
Торвальдсу
добавлено
в
ядро
в
качестве
отдельного
модуля.
Так
появился
Linux
Security
Modules
в
ядре
2.6
24. Принудительная
типизация
доступа
• Type
Enforcement
• Технология
разграничения
доступа,
при
которой
права
на
доступ
субъекта
к
объекту
даются
в
зависимости
от
текущего
контекста
безопасности.
• Контекст
безопасности
хранится
в
расширенных
атрибутах
файловой
системы
и
управляется
с
помощью
Linux
security
module
(LSM)
• Принудительная
типизация
доступа
необходима
для
реализации
мандатного
контроля
доступа,
дополняет
ролевой
контроль
доступа
(Role
Based
Access
Control
—
RBAC).
25. SELinux
• Каждый
объект
или
субъект
в
операционной
системе,
защищенной
SELinux,
должен
иметь
свою
специальную
метку,
называемую
контекстом
безопасности.
• Ext2-‐>file-‐>ext3
• SELinux
предоставляет
пользователю
или
приложению
только
те
права
доступа,
которые
необходимы
для
осуществления
запрошенных
действий
26. SELinux
• Каждый
процесс-‐субъект
запускается
в
определенном
контексте
(домене)
безопасности
• Всем
ресурсам-‐объектам
операционной
системы
ставится
в
соответствие
определенный
тип
• Высокая
степень
разграничения
доступа
к
ресурсам
• Составляет
политику
безопасности:
Список
правил,
определяющих
разрешения
на
доступ
определенных
доменов
к
определенным
типам.
28. PaX/GRSecurity
•
Механизм
обеспечения
безопасного
исполнения
кода
PaX
•
Механизм
разграничения
доступа
на
основе
ролевой
политики
(RBAC)
•
Усиление
базового
механизма
chroot
•
Дополнительные
функции
и
механизмы
безопасности
29. Structure
• Intro
• Атаки
использующие
переполнение
буферов
• Средства
противодействия
атакам
основанным
на
переполнении
буферов
• Противодействия
противодействию:
Return
Oriented
Programming
31. Ответ
Атаки
построенные
на
срыве
стека
–
нет,
не
подвержена.
Но
подвержена
куда
более
серьезным
атакам
из
того
же
семейства.
32. Return
oriented
programming
• Return-‐to-‐libc
(ret2libc)
– Позволяет
атаковать
неисполнимую
память
(DEP,
W^X,
etc)
– Вместо
перезаписи
адреса
возврата,
осуществляется
выбор
специально
подобранных
двоичных
команд
из
библиотек
в
памяти,
как
вызовов
функций.
– При
этом
данные
в
стеке
используются
как
аргументы
к
этим
функциям
– Что
в
конечном
итоге
позволяет
сделать
system(cmd)
33. Return
oriented
programming
• Вместо
возврата
из
функций
с
измененным
стеком
происходит
вызов
последовательностей
инструкций,
которые
заканчиваются
инструкцией
ret.
• Фактически
можно
обращаться
к
произвольному
региону,
прямо
в
середину
инструкции,
тем
самым
эмулируя
другой
тип
инструкций.
• Фактически,
все
что
нужно
для
взлома
–
найти
необходимую
последовательность
инструкций
в
памяти
34. Return
oriented
programming
• Gadget
–
последовательность
подходящих
инструкций
заканчивающаяся
ret
• Гаджеты
исполняют
произвольный
высокоуровневый
функционал
– Записать
данные
в
определенную
ячейку
памяти
–
add/sub/and/or/xor
– Вызвать
функцию
из
библиотеки
35. Return
oriented
programming
• Для
построения
RoP
атаки
необходимо
просканировать
исполнимые
регионы
библиотек
для
выявления
подходящих
инструкций
• Полнота
по
Тьюрингу
при
поиске
гаджетов:
Homescu,
Andrei,
et
al.
"Microgadgets:
Size
Does
Ma™er
in
Turing-‐Complete
Return-‐
Oriented
Programming."
WOOT.
2012.
37. Выводы:
1. Маркерные
значения
+
рандомизация
+
NX
бит
не
защищают
на
100%,
но
сильно
усложняют
вторжение.
2. Превентивные
средства
защиты
(PaX),
задача
которых
противодействовать
вторжению,
вместе
с
AC
(RBAC),
так
же
уменьшают
шансы
вторжения
и
минимизируют
последствия
3. Защита
от
внедрения
вредоносного
кода
не
достаточна
для
предотвращения
исполнения
вредоносного
кода.
38. Reading
• h™p://crypto.stanford.edu/~blynn/rop/
• Roemer,
Ryan,
et
al.
"Return-‐oriented
programming:
Systems,
languages,
and
applica&ons."
ACM
Transac&ons
on
Informa&on
and
System
Security
(TISSEC)
15.1
(2012):
2.
• Checkoway,
Stephen,
et
al.
"Can
DREs
provide
long-‐las&ng
security?
The
case
of
return-‐oriented
programming
and
the
AVC
Advantage."
Proceedings
of
EVT/WOTE
2009
(2009).
• Shacham,
Hovav.
"The
geometry
of
innocent
flesh
on
the
bone:
Return-‐into-‐libc
without
func&on
calls
(on
the
x86)."
Proceedings
of
the
14th
ACM
conference
on
Computer
and
communicaCons
security.
ACM,
2007.