Содержание
- 2. Сложность современного ПО
- 3. Статистика ошибок Количество ошибок на 1000 строк кода (до тестирования) остается практически неизменным за 30 лет
- 4. Верификация и информационная безопасность программ Наличие ошибки в программе часто означает наличие уязвимости Технологии верификации одновременно
- 5. Технологии верификации Экспертиза Тестирование (динамические испытания) Аналитическая верификация Статический анализ Комбинированные подходы
- 6. Экспертиза Поиск ошибок, оценка и анализ свойств ПО человеком (обычно группа 2-5 человек) Техники Списки важных
- 7. Тестирование Оценка корректности системы по ее работе в выбранных ситуациях, с определенными данными Техники: Шаблоны сценариев,
- 8. Пример : проект DMS (ИСП РАН) Разработка тестов для ОС телефонного коммутатора Nortel Networks с использованием
- 9. Показатели качества тестирования Метрики тестового покрытия Функциональности программы и требований Структуры кода: строк, ветвлений, комбинаций условий
- 10. Аналитическая верификация Формальное описание семантики программы и требований и доказательство выполнения требований Техники: Метод Флойда (дедуктивный
- 11. Пример: верификация ядра ОС seL4 Ядро встроенной ОС seL4 8700 строк на C, 600 строк на
- 12. Статический анализ программ
- 13. f(char * p) { char s[6]; strcpy(s,p); } main1 () { f(“hello”); } main2 () {
- 14. Альтернативы решения Тестирование Проверки времени выполнения Статический анализ программы Смешанный
- 15. Можно использовать специальные функции с дополнительными параметрами – ограничениями сверху на объем записываемой информации. Например, вместо
- 16. От динамической защиты к статическому обнаружению Даже в случае минимизации количества проверок инструментированный код работает гораздо
- 17. Цели статического анализа – выявление дефектов в программах Дефекты (ситуации в исходном коде) могут приводить к:
- 18. Рассматриваемые виды дефектов Переполнение буфера Format string: недостаточный контроль параметров при использовании функций семейства printf/scanf Tainted
- 19. Преимущества статического анализа Автоматический анализ многих путей исполнения одновременно Обнаружение дефектов, проявляющихся только на редких путях
- 20. Первое поколение анализаторов Flowfinder, ITS4, RATS, Pscan (распространяются бесплатно) CodeSurfer (инструмент для обнаружения уязвимостей на базе
- 21. Недостатки первого поколения Большое число ложных срабатываний – 90% и выше Пропуск реальных уязвимостей Необходима ручная
- 22. Современные анализаторы Coverity Prevent Klockwork Insight Svace
- 23. Наш подход Для обнаружения уязвимостей мы предлагаем применять следующее: Межпроцедурный data-flow анализ с итерациями на внутрипроцедурном
- 24. Целью целочисленного анализа программы является получение необходимой информации о значении целочисленных атрибутов объектов программы (значение переменной,
- 25. Потеря точности в некоторых случаях. Отсутствие информации о связях между переменными: в случае анализа на основе
- 26. Необходимость межпроцедурного анализа f(char *p, char *s) { strcpy(p,s); // произойдет копирование 6 байт, включая //конец
- 27. Необходимость анализа указателей … char a[10]; char * p; p=a; p[10]=0; … Для данного примера в
- 28. Спецификация окружения char* strcpy(char *dst, const char *src) { char d1 = *dst;//dst и src char
- 29. Схема работы Svace Анализируемая программа Система сборки Файлы с исходным кодом Утилита перехвата Компилятор LLVM-GCC или
- 30. Построение аннотаций Биткод-файлы для исходных файлов Спецификации библиотечных функций на языке Си Биткод-файлы спецификаций библиотек Компилятор
- 31. Топологический порядок обработки функций Граф вызовов функции main q w a b c prinf strcpy Построение
- 32. Время анализа * Не учитывается время компиляции проекта
- 33. Сравнение с Coverity Prevent
- 34. Текущее состояние Анализ программ на Си\Си++. Информация об исходном коде собирается при помощи компилятора LLVM-GCC (или
- 35. Avalanche: Обнаружение ошибок при помощи динамического анализа
- 36. Динамический и статический анализ кода Динамический анализ - анализ программы во время выполнения Статический анализ -
- 37. Обнаружение ошибок при помощи анализа программ Динамический анализ Требуется набор входных данных и/или среда выполнения Высокие
- 38. Valgrind Фреймворк динамической инструментации Обнаруживаемые ошибки: Утечки памяти Ошибки работы с динамической памятью Неиницилизированные данные Ошибки
- 39. Valgrind: общая схема работы Внутреннее представление команд Valgrind – абстрактная RISC машина
- 40. Трасса выполнения программы
- 41. Трасса выполнения программы
- 42. Трасса выполнения программы
- 43. Трасса выполнения программы
- 44. Работы в этой области EXE tool, Stanford University - символические вычисления SAGE framework, Microsoft Research -
- 45. Пример char *names[] = { “one”, “two”, ...}; char buf[3]; fread(buf, 3, 1, f); // чтение
- 46. Пример fread(buf, 3, 1, f) buf[0] == 1 buf[1] + buf[2] > 0 x1, x2, x3:
- 47. Пример fread(buf, 3, 1, f) buf[0] == 1 buf[1] + buf[2] > 0 Система уравнений: x1,
- 48. Пример fread(buf, 3, 1, f) buf[0] == 1 buf[1] + buf[2] > 0 Система уравнений: x1,
- 49. Avalanche Отслеживает поток помеченных (потенциально опасных) данных Изменяет входные данные, чтобы спровоцировать ошибку, или обойти новые
- 50. Входные данные Входные данные \ Avalanche: итерация Tracegrind Трасса Управляющий модуль Трасса’ STP Решение Управляющий модуль
- 51. Управляющий модуль Avalanche Координация работы других компонентов Обход различных путей исполнения программы, инвертирование условий Поддержка параллельного
- 52. Tracegrind Отслеживает поток помеченных данных в программе Все данные прочитанные из внешних источников (файлы, сетевые сокеты,
- 53. Tracegrind Моделирует оперативную память, регистры и временные переменные при помощи бит-векторов Моделирует комманды при помощи операций
- 54. Covgrind Вычисление метрики покрытия кода программы (количество новых ББ покрытых на текущей итерации) Перехват сигналов (обнаружение
- 55. STP - Simple Theorem Prover SAT решатель (основан на MiniSat) Проект с открытым исходным кодом Поддерживает
- 56. Проект Опубликован на Google Code http://code.google.com/p/avalanche Лицензии: Valgrind и Memcheck - GPL v2 STP - MIT
- 57. Avalanche: возможности Поддержка клиентских сетевых сокетов Поддержка переменных окружения и параметров коммандной строки Поддержка платформ х86/Linux
- 58. Результаты Более 15-ти ошибок на проектах с открытым исходным кодом Ошибки подтверждены и/или исправлены разработчиками Null
- 59. Планы на будущее Улучшение прозводительности Поддержка новых источников входных данных (серверные сетевые сокеты, и т. д.)
- 60. UniTESK
- 61. Случай тестирования отдельной функции: Подобрать набор входных (тестовых) данных Вычислить ожидаемый результат для каждого из тестовых
- 62. Случай тестирования группы функции, класса/объекта, модуля с несколькими интерфейсами (обычно есть переменные состояния и побочный эффект):
- 63. Типичные размеры тестовых наборов Ядро ОС Linux (LTP) 18 Mbyte (при этом покрывает менее половины строк
- 64. Решения UniTESK Исходная точка построения теста – формализация программного контракта в форме пред- и пост-условий пред-
- 65. Формализация требований Выделение модельного состояния Описание формального контракта операций Предусловия – задают область определения Постусловия –
- 66. Простой пример спецификации в JavaTESK public specification class SqrtSpecification { public specification double sqrt(double x) {
- 67. Общая схема тестирования Тестовая система Отчеты Тестовые данные Ожидаемые результаты, критерии полноты
- 68. Общая схема. Данные, оракул, покрытие Пред-условия, итераторы Пост-условия
- 69. Общая схема. Тестовый сценарий описать и обойти КА обходить и строить КА налету Тестовая система Отчеты
- 70. Общая схема UniTESK Модель состояния Обходчик автоматов Оракулы Генератор Итераторы данных Метрика покрытия Тестируемая система Предусловия-
- 71. Применение UniTESK Операционные системы Ядро ОС телефонной станции 1994-1997 Linux Standard Base 2005-2010 Тестовый набор для
- 73. Скачать презентацию











![f(char * p) { char s[6]; strcpy(s,p); } main1 () { f(“hello”);](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/422943/slide-12.jpg)













![Необходимость анализа указателей … char a[10]; char * p; p=a; p[10]=0; …](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/422943/slide-26.jpg)

















![Пример char *names[] = { “one”, “two”, ...}; char buf[3]; fread(buf, 3,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/422943/slide-44.jpg)
![Пример fread(buf, 3, 1, f) buf[0] == 1 buf[1] + buf[2] >](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/422943/slide-45.jpg)
![Пример fread(buf, 3, 1, f) buf[0] == 1 buf[1] + buf[2] >](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/422943/slide-46.jpg)
![Пример fread(buf, 3, 1, f) buf[0] == 1 buf[1] + buf[2] >](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/422943/slide-47.jpg)























О зимующих птицах
Культ Богоматери в европейской культуре
Поплавковый выключатель уровня Предназначен для автоматизации заполнения(опорожнения) емкости. Поплавковый клапан Предназн
Небесная сфера 11 класс
Выбор степени автоматизации процедур управления запасами. Опыт внедрения на примере сети аптек.
Ситуационный анализ компании
Специфика творческой деятельности А.Н. Архангельского
Декоративно-прикладное искусство Руси
Решение задач 1
Трубецкой центр немецкой культуры. Erntedankfest
Презентация на тему Времена года презентация
Посвящение в первоклассники
Pasg o amgylch y byd
Финансовая оценка инновационных проектов
И.С.Тургенев: жизнь и творчество
Заповеди блаженства
Сравнительная характеристика круглогодичных морских курортов Бали (Нуса-Дуа) и курортов юго-запада Маврикия
Инвестиционная привлекательность личности - тренд ближайших 3-х лет
Основы теории риск менеджмента
Здоровье. Веселые советы
Издержки производства и себестоимость продукции
Родительский дом
принипы работы с ОС (1)
Формирование методической папки (портфолио) учителя
Для чего нужна экономика?
White-box моделирование
Использование ИКТ на уроках рисования
Психологические характеристики типов профессионалов. О представителях профессий типа Человек - художественный образ