Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Безопасность      программного обеспечения            Подходы, стандарты, технологии           выявления дефектов безопасн...
Цель семинараИзучить терминологию, стандарты в областибезопасности приложенийИзучить проблемы контроля безопасностиприложе...
План занятияПроблема обеспечения безопасности ПО  Актуальность проблемы  Технологии создания ПО  Основные понятия безопасн...
Актуальность вопроса, базовые понятия и определенияПРОБЛЕМА НАДЕЖНОСТИ ИБЕЗОПАСНОСТИ ПРОГРАММНОГООБЕСПЕЧЕНИЯ              ...
Надежность программного обеспечения                  Если бы строители строили здания также,                  как программ...
Актуальность проблемы       Число уязвимостей зарегистрированных в NVD7000600050004000300020001000   0       1996       20...
Актуальность проблемы (2)                   WhiteHat Security, 2010                                             7
Актуальность проблемы (3)  Факторы, обеспечивающие успешную реализацию            компьютерных преступлений            3% ...
Базовые понятия индустрии ПОВиды распространения ПО  предустановленное  носители  сетевые каналы  ПО как услуга (SaaS)Виды...
Производство программных продуктовИсходные материалы• Исходные тексты на языке программирования• Файлы проектов, манифесты...
Поколения языков программирования        Языки первого поколения (1GL)        • Машинный код (команды x86, ARM, MIPS, GPU)...
Компиляция/интерпретацияИсходные тексты, исполняемый код, ассемблерИнтерпретаторы, компиляторы, линковщики, байт-код      ...
Компиляция/интерпретация (2)                               13
Жизненный цикл разработкипрограммного обеспечения (SDLC)                                  14
Жизненный цикл разработки системКонцептуальное описание • Conceptual DefinitionОпределение функциональных требований • Fun...
Каскадная модель разработки   (Waterfall Development Model)Оригинальная  UnmodifiedМодифицированная  ModifiedМодель «Сашим...
Спиральная модель (Spiral Model)                                   17
Связанные концепцииИтеративная разработка (Iterativedevelopment)Прототипирование (Prototyping)Подходы к разработке (Top-Do...
Гибкие модели (Agile Software          Development)ScrumAgile Unified Process (AUP)Dynamic Systems Development Model (DSDM...
Парадигмы программированияИмперативное программирование (C/C++, Java, Perl, JavaScript)   Процедурное программирование (AL...
Качество и надежность ПОКачество (программного средства) – совокупностьсвойств программного средства , которыеобусловливаю...
Качество и надежность ПО (2)Качество программного обеспечения (software quality)– весь объем признаков и характеристик про...
Дефекты безопасности программного           обеспечения Дефект – каждое отдельное несоответствие продукции установленным т...
Дефекты, изъяны и уязвимости     программного обеспеченияДефект (Defect)  Функциональность (поведение)  Отказ работы  Масш...
Стоимость устранения дефектов                                25
Недекларированные возможностиНедекларированные возможности – функциональные  возможности ПО, не описанные или не соответст...
Уязвимость информационной            системыУязвимость (информационной системы);брешь - свойство информационной системы,об...
Взаимосвязь понятий                             ИнформационнаяПрограммное (компонент ИС)       система                    ...
Безопасность ПО в жизненном      цикле программных систем    Анализ            Дизайн       Написание кода                ...
Методы обеспечения безопасности ПО в SDLC    Анализ требований и                 Варианты                 Требования по   ...
Контакты докладчика:Вопросы?                       31
Примеры, подходы к классификации и стандартизацииУГРОЗЫ БЕЗОПАСНОСТИ ПО
Основные тезисы разделаЧто присутствует в компонентах ИС?  Дефекты безопасности/НДВ    Программные закладки    Скрытые кан...
Программные закладкиПрограммная закладка: внесенные в программное обеспечение  функциональные объекты, которые при определ...
Программные закладки (2)Программные закладки – преднамеренно внесенные в ПО  функциональные объекты, которые при определен...
Распространенные виды программных закладоклазейка (trapdoor, backdoor)бомба  логическая бомба (logic bomb)  временнАя бомб...
Скрытые каналы  Скрытый канал (covert channel) –  непредусмотренный разработчиком системы  информационных технологий и  ав...
Виды скрытых каналов Скрытые каналы по памяти (storage channel) Скрытые каналы по времени (timing channel) Скрытые статист...
Вредоносное ПО (malware)Программный вирус: исполняемый программныйкод или интерпретируемый набор инструкций,обладающий сво...
Классификация вредоносного ПОПо назначению  Вирусы-инфекторы (произвольных файлов, master boot  record, системных модулей)...
Классификация вредоносного ПО (2) По активации   Бомба (логическая/временная) По действию   Порча данных (data diddling)  ...
Реестры и классификации уязвимостейСовременные реестры  MITRE Common Vulnerabilities and Exposures (CVE)  NVD (National Vu...
Классификации угроз и методов атакРеестры актуальных угроз и дефектов  OWASP Top Ten    10 самых больших угроз для веб-при...
Десятка OWASP (OWASP Top Ten)A1 – Межсайтовый скриптинг (Cross Site Scripting, XSS)A2 – Изъяны при внедрении (Injection Fl...
Стандартизация процессов         безопасности ПОOWASP CLASP (Complex Lightweight ApplicationSecurity Process)Microsoft Sec...
Оценка критичности уязвимостей и дефектов и      качества работы средств анализа CVSS (Common Vulnerability Scoring System...
Классификации дефектов (defects),        изъянов (weaknesses)Дефекты на этапе создания  Fortify Seven Pernicious Kingdoms ...
7 разрушительных царств     (7 Pernicious Kingdoms)1. Валидация ввода и представление2. Эксплуатация API3. Механизмы безоп...
Уязвимости и изъяныCVE (Common VulnerabilityEnumeration)CWE - Common Weakness Enumeration                                 ...
50
Common Weakness Enumerationhttp://cwe.mitre.org  метаязык для описания всех недостатков ПО,  схем защиты и атаки  Структур...
Классификация Mitre CWE вид для разработки
Сравнение ведущих классификаций уязвимостей и дефектов ПОНазвание классификации         Описание                 Достоинст...
Разработка отечественного стандарта классификации           уязвимостей (в рамках ТК 362)  ГОСТ Р «Защита информации. Уязв...
Текущее состояние разработки ГОСТаКлассы:  Уязвимости кода,    Группы:       Уязвимости в микропрограммах, ПЗУ,       Уязв...
Фрагмент перечня уязвимостей в соответствии с их классификацией по стандарту Класс           Группа      Вид              ...
Класс 2 – уязвимости конфигурации          Группа 2.1 – уязвимости конфигурации технических средств ИС                   В...
Класс    Группа    Вид                                   Тип                  Вид 2.1.3 – уязвимости конфигурации контролл...
Общее видение типов уязвимостей и дефектов                                         59
Предложение по отображению элементов отечественных       стандартов на международные системы                              ...
Предложение по стандарту классификации:                                              Класс 1 - Обработка и представление д...
Обсуждение и развитие стандарта Предварительная версия документа и обсуждение:   http://s3r.ru/it-sec-std/ Рабочие материа...
Контакты докладчика:Вопросы?                       63
Материалы, методы, процедурыАНАЛИЗ БЕЗОПАСНОСТИПРОГРАММНОГО ОБЕСПЕЧЕНИЯ                               64
Уязвимость информационной            системыУязвимость (информационной системы);брешь - свойство информационной системы,об...
Типовые уязвимости. Переполнение буфераПереполнения буфера (buffer overrun) представляют собойнаиболее известный и распрос...
Типовые уязвимости. Переполнение буфераСхема атаки «Срыв стека»                                          67
Методы борьбы с переполнениями буфера корректировка исходных текстов использование неисполняемых буферов использование дин...
Использование систем квази-  постоянства (Quasi-invariant)PointGuard. StackGuard                                  69
Ошибки, связанные с форматной            строкой#include <stdio.h>int main(int argc, char* argv[]){    if(argc > 1)    pri...
Запуск на выполнение:E:progformat_bug.exe “%x %x”12ffc0 4011e5                                 71
Борьба с ошибками форматной строкиВалидация пользовательского вводаФильтрация пользователского ввода                      ...
Подходы к анализу безопасности ПО                                                                             Анализ архит...
Требования проведения структурного тестированияРД по НДВ Гостехкомиссии (1999)  3.3.3 Статический анализ исходных текстов ...
Статический анализобъекты исследования  исходные тексты ПО  исполняемый код ПО  материалы производства ПО (отладочная инфо...
Области применения статического           анализакомпиляция, интерпретацияисследование архитектуры (CASE-средства) иалгори...
Направления статического анализа1.1 Декомпозиция и анализ структуры ПО  В рамках анализа архитектуры системы (design revie...
РД. Защита от НСД к информации. ПО СЗИ. Классификация по уровню      контроля отсутствия недекларированных возможностей   ...
Этапы построения модели            программы1) Исходный текст программы2) Лексический анализ                              ...
Этапы построения модели программы3) Синтаксический анализ. Дерево разбора                                           80
Этапы построения модели программы4) Абстрактное дерево разбора (AST)                                      81
Граф потока управления (CFG) и граф     зависимостей по данным (DFG)1 int m(int x, int y) {2 while (x > 10) {3        x -=...
Однократное статическое  присваивание (SSA)                          83
Абстрактный семантический граф                                 84
Сигнатурный анализПроисхождение термина «сигнатурный анализ» (signatureanalysis)  диагностика электронных схем путем сопос...
Требования руководящего документа Для второго уровня контроля необходимо выполнять синтаксический контроль наличия заданны...
Нормативная база применения метода сигнатурного анализа  РД. Защита от НСД к информации. ПО СЗИ. Классификация по уровню к...
Процесс работы статического анализатора кода       Предварительный       обзор материалов           проекта и             ...
Динамический анализ ПОДинамический анализ ПО (англ. Dynamic program analysis) — анализпрограммного обеспечения, выполняемы...
Понятия CWEПродукт (PRODUCT)                 Механизм защиты (PROTECTIONФунк. возможность (FEATURE)       MECHANISM)Ресурс...
Понятия CWE(1)Продукт (PRODUCT)Функ. возможность (FEATURE)Ресурс (RESOURCE)Поведение (BEHAVIOR)Манипуляции (MANIPULATIONS)...
Характеристики свойствКорректность (VALIDITY)  GET index.html (no version)  non-existent username  "<SCRIPT" without closi...
Измерения корректности (dimensions of validity)Оригинал: GET index.html HTTP/1.1 Лексическая некорректность:    G#T index....
Понятия CWE(2)Роли (ROLES)  Жертва, атакующий, свидетель, сообщник, проводникДирективы (DIRECTIVES)  запрос, команда, сигн...
Понятия CWE(3)Цепь (CHAIN) Пример: целочисленное переполнение (CWE-190) при вычислении объема выделяемой памяти, что приво...
Понятия CWE(4)Политика безопасности (SECURITY POLICY)Механизм защиты (PROTECTIONMECHANISM)Атака, Атакующий (ATTACK, ATTACK...
Понятия CWE(5)Слои (LAYERS)  Слой Системы (память, диски, файлы,  процессор; поведения: систем вызовы, запуск  процессов) ...
Пример использования слоёв в анализе кода/* ignore group ID for this example */old_id = getuid();setuid(0);AttachToPrivile...
Понятия CWE(5)Отказы защитного механизма, ОЗМ (ProtectionMechanism Failures, PMF)  Отсутствие реализации  Некорректная реа...
Механизмы используемые в санации Приведение (enforcement)   Фильтрация     Abdk*fff? -> Abdkfff   Выдача сообщений об ошиб...
Пример кода (comments.cgi)    1   printf("<title>Blissfully Ignorant,   Inc.</title>");    2   ftype = Get_Query_Param("Me...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
Пример кода 1   printf("<title>Blissfully Ignorant,Inc.</title>"); 2   ftype = Get_Query_Param("MessageType"); 3   strcpy(...
ИнструментарийСтатический анализ (static analysis)  Open-source     OWASP SWAAT http://goo.gl/LO5C8     RIPS http://goo.gl...
Компонентный анализ ПОособенности современного ПО  разделено на компоненты (подкомпоненты)  четко заданные интерфейсы  раз...
Виды аудита безопасности программных системЭтап жизненного цикла  Анализа архитектуры системы (design review)  Инспекции к...
Метрики безопасности ПО.Для обеспечения постоянного контроля качествавсех процессов во время жизненного цикла ПОнеобходимы...
Повышение эффективности существующих      руководящих документов.С момента введение в действие РД по НДВ прошло околодесят...
Литература: монографииМетоды оценки несоответствия средств защиты информации / МарковА.С.,Цирлов В.Л.,Барабанов А. В. - Из...
Литература: публикацииФадин А.А. Рекомендации по контролю наличия заданных конструкций. //Методы оценки несоответствия сре...
Литература: тезисы и выступления                         конференций безопасности методомМарков А.С., Фадин А.А. К вопросу...
Спасибо за внимание!           Контакты докладчика:     Вопросы?                            120
Upcoming SlideShare
Loading in …5
×

Аудит безопасности программного кода: Подходы, стандарты, технологии выявления дефектов безопасности программных систем.

4,212 views

Published on

Семинар ставит целью познакомить технических специалистов как с теоретическими, так и с прикладными вопросами оценки безопасности кода приложений (ПО).
Затрагиваются вопросы нормативной базы, классификации уязвимостей и дефектов ПО, а также стандартизации терминов и методик аудита, рассматриваются различные методы статического и динамического анализа, менеджмент процесса, существующие инструменты в этой области.

Published in: Technology
  • Be the first to comment

Аудит безопасности программного кода: Подходы, стандарты, технологии выявления дефектов безопасности программных систем.

  1. 1. Безопасность программного обеспечения Подходы, стандарты, технологии выявления дефектов безопасности программных систем. Фадин Андрей, CISSP Департамент программных разработокИУ-8, МГТУ им. Баумана, ЗАО «НПО «Эшелон» Москва, 2012 г.
  2. 2. Цель семинараИзучить терминологию, стандарты в областибезопасности приложенийИзучить проблемы контроля безопасностиприложений и существующие подходы к еёрешению, основанные на аудите кода 2
  3. 3. План занятияПроблема обеспечения безопасности ПО Актуальность проблемы Технологии создания ПО Основные понятия безопасности ПОУгрозы безопасности ПО Примеры Стандартизация дефектов, угроз, уязвимостейАудит безопасности ПО Материалы, методы, процедуры 3
  4. 4. Актуальность вопроса, базовые понятия и определенияПРОБЛЕМА НАДЕЖНОСТИ ИБЕЗОПАСНОСТИ ПРОГРАММНОГООБЕСПЕЧЕНИЯ 4
  5. 5. Надежность программного обеспечения Если бы строители строили здания также, как программисты пишут программы, первый залетевший дятел разрушил бы цивилизацию. Второй закон Вейнберга из книги Блох А. Закон Мерфи //ЭКО. 1983. N1-3. Программные системы: высокая сложность структур немного ограничений, множество степеней свободы слабая формализация и стандартизация процессов разработки и аудита ПО
  6. 6. Актуальность проблемы Число уязвимостей зарегистрированных в NVD7000600050004000300020001000 0 1996 2005 1988 1989 1990 1991 1992 1993 1994 1995 1997 1998 1999 2000 2001 2002 2003 2004 2006 2007 2008 2009 2010 2011 2012 Число уязвимостей зарегистрированных в NVD National Vulnerability Database, 2012 6
  7. 7. Актуальность проблемы (2) WhiteHat Security, 2010 7
  8. 8. Актуальность проблемы (3) Факторы, обеспечивающие успешную реализацию компьютерных преступлений 3% 6% Человеческий фактор19% Уязвимости программного обеспечения Нарушения логической структуры информационных систем 72% Другие факторы IDC Consulting, 2008 8
  9. 9. Базовые понятия индустрии ПОВиды распространения ПО предустановленное носители сетевые каналы ПО как услуга (SaaS)Виды лицензирования ПО Бесплатное Freeware/Donationware Условно-бесплатное Shareware/Adware Коммерческое Commercial С открытым кодом Open Source (GPL, LGPL, MIT, BSD, MPL) 9
  10. 10. Производство программных продуктовИсходные материалы• Исходные тексты на языке программирования• Файлы проектов, манифесты, конфигурация,• Ресурсы, внешние зависимости (библиотеки, исполняемые модули) Промежуточные материалы • Машинный код/байт-код • Конфигурация: начальные настройки Релиз ПО • Дистрибутив, пакет, установочный комплект Инсталляция ПО • Инсталлированная версия/удаленный сервис • Конфигурация 10
  11. 11. Поколения языков программирования Языки первого поколения (1GL) • Машинный код (команды x86, ARM, MIPS, GPU) Языки второго поколения (2GL) • Языки ассемблера (fasm, gas, PTX) Языки третьего поколения (3GL) • ЯВУ (COBOL, Java, C/C++, BASIC, ADA, C#, Python, Perl, PHP, Algol) Языки четвертого поколения (4GL) • ПОЯ, DSL (SQL, 1С, ABAP, XUL, CLIPPER, Oracle Reports, а также LISP, Forth) Языки пятого поколения (5GL) • Логическое программирование, естественный язык, визуальное программирование (Prolog, РЕФАЛ, OPS5, 11 Mercury, Yahoo! Pipes)
  12. 12. Компиляция/интерпретацияИсходные тексты, исполняемый код, ассемблерИнтерпретаторы, компиляторы, линковщики, байт-код 12
  13. 13. Компиляция/интерпретация (2) 13
  14. 14. Жизненный цикл разработкипрограммного обеспечения (SDLC) 14
  15. 15. Жизненный цикл разработки системКонцептуальное описание • Conceptual DefinitionОпределение функциональных требований • Functional requirements determinationРазработка спецификаций контролей • Control Specifications DevelopmentРецензирование архитектуры • Design reviewОбщий обзор программного кода • Code review walk-throughТестирование и приемка системы • System test reviewПоддержка и управление изменениями • Maintenance and Change Management
  16. 16. Каскадная модель разработки (Waterfall Development Model)Оригинальная UnmodifiedМодифицированная ModifiedМодель «Сашими» Sashimi ModelВерификация/валидация 16
  17. 17. Спиральная модель (Spiral Model) 17
  18. 18. Связанные концепцииИтеративная разработка (Iterativedevelopment)Прототипирование (Prototyping)Подходы к разработке (Top-Down, Bottom-Up)RAD GUI builders, CASE, DBMS, code generatorsСтруктурное программирование Модули, слоиСтандарты SDLC NIST SP 800-14 DOJ SDLC (10 шагов) 18
  19. 19. Гибкие модели (Agile Software Development)ScrumAgile Unified Process (AUP)Dynamic Systems Development Model (DSDM)Extreme Programming (XP)Crystal ClearFeature driven developmentAdaptive software developmentPragmatic Programming 19
  20. 20. Парадигмы программированияИмперативное программирование (C/C++, Java, Perl, JavaScript) Процедурное программирование (ALGOL, C, BASIC)Структурное программирование (ALGOL, PASCAL) Объектно-ориентированное программирование (C++, Smalltalk, Eiffel, Object Pascal, C#, io, OCaml) Аспектно-ориентированное (Cobol, Java, Objective-C, C#, Ada)Декларативное программирование (HTML, XSLT, PostScript, Haskell) Функциональное программирование (Common Lisp, Scheme, F#, JavaScript, Ocaml) Логическое программирование (Prolog, РЕФАЛ, Mercury)Метапрограммирование (C, C++, MacroML)Компонентно-ориентированное программирование (EJB, COM+,Corba)Событийно-ориентированное программирование (HDL, Objective-C,C++, JavaScript) 20
  21. 21. Качество и надежность ПОКачество (программного средства) – совокупностьсвойств программного средства , которыеобусловливают его пригодность удовлетворятьзаданные или подразумеваемые потребности всоответствии с его назначением.Надежность (программного средства) – совокупностьсвойств, характеризующая способность программногосредства сохранять заданный уровень пригодности взаданных условиях в течение заданного интервалавремени .ГОСТ 28806-90 Качество программных средств. Термины и определения. 21
  22. 22. Качество и надежность ПО (2)Качество программного обеспечения (software quality)– весь объем признаков и характеристик программнойпродукции, который относится к ее способностиудовлетворять установленным или предполагаемымпотребностям.Характеристика качества. Надежность (Reliability) –набор атрибутов, относящихся к способностипрограммного обеспечения сохранять свой уровенькачества функционирования при установленныхусловиях за установленный период времени.ГОСТ Р ИСО/МЭК 9126-93 Оценка программной продукции 22
  23. 23. Дефекты безопасности программного обеспечения Дефект – каждое отдельное несоответствие продукции установленным требованиям ГОСТ 27.002-89 Надежность в технике основные понятия. Термины и определения. Дефект безопасности ПО – ошибка в программном продукте, вследствие которой потенциально возможно нарушение целостности, доступности или конфиденциальности при функционировании продукта. 23
  24. 24. Дефекты, изъяны и уязвимости программного обеспеченияДефект (Defect) Функциональность (поведение) Отказ работы Масштабируемость Сопровождение Архитектура Правила кодирования Дефект безопасности Изъян (Weakness по CWE)Уязвимость (Vulnerability) 24
  25. 25. Стоимость устранения дефектов 25
  26. 26. Недекларированные возможностиНедекларированные возможности – функциональные возможности ПО, не описанные или не соответствующие описанным в документации, при использовании которых возможно нарушение конфиденциальности, доступности или целостности обрабатываемой информации.Руководящий документ Защита от несанкционированного доступа к информации Часть 1. Программное обеспечение средств защиты информации Классификация по уровню контроля отсутствия недекларированных возможностей.Недекларированные возможности (программного обеспечения) – функциональные возможности программного обеспечения, не описанные в документации.ГОСТ Р 50.1.053—2005. Основные термины и определения в области технической защиты информации. 26
  27. 27. Уязвимость информационной системыУязвимость (информационной системы);брешь - свойство информационной системы,обусловливающее возможность реализацииугроз безопасности обрабатываемой в нейинформации.ГОСТ Р 50922-2006. Защита информации. Основныетермины и определения Унифицированныесистемы документации. 27
  28. 28. Взаимосвязь понятий ИнформационнаяПрограммное (компонент ИС) система Компонент ИС Внешний Дефекты мир ПО Уязвимости ИС Недекларированные возможности ПО Компонент ИС 28
  29. 29. Безопасность ПО в жизненном цикле программных систем Анализ Дизайн Написание кода Развертывание Тестирование ПО Эксплуатация ПОтребований к ПО архитектуры ПО ПО ПО Угроза Инцидент с Дефект ПО Уязвимость ПО безопасности безопасностью ПО ИС 29
  30. 30. Методы обеспечения безопасности ПО в SDLC Анализ требований и Варианты Требования по Анализ вариантов использования злоупотреблений безопасности рисков Внешний аудит Анализ Проектирование требований и рисков архитектуры Разработка тестов наФормирование основе рисков по тест-планов безопасности Статический РецензииНаписание кода анализ кода (инспекции) кода Выполнение Динамический Анализ Рецензии тестов анализ кода рисков (инспекции) кода Внедрение Анализ Тестирование на Ограничение на Патчи продукта отзывов проникновение использование 30
  31. 31. Контакты докладчика:Вопросы? 31
  32. 32. Примеры, подходы к классификации и стандартизацииУГРОЗЫ БЕЗОПАСНОСТИ ПО
  33. 33. Основные тезисы разделаЧто присутствует в компонентах ИС? Дефекты безопасности/НДВ Программные закладки Скрытые каналы Вредоносное ПОЧем грозит? Угроза реализация той или иной уязвимости ИС
  34. 34. Программные закладкиПрограммная закладка: внесенные в программное обеспечение функциональные объекты, которые при определенных условиях (входных данных) инициируют выполнение не описанных в документации функций программного обеспечения, позволяющих осуществлять несанкционированные воздействия на информацию;.ГОСТ Р 51275-99 Защита информации. Объект информатизации. Факторы, воздействующие на информацию. Общие положения.Программная закладка: преднамеренно внесенные в программное обеспечение функциональные объекты, которые при определенных условиях инициируют реализацию недекларированных возможностей программного обеспечения.ГОСТ Р 50.1.053—2005. Основные термины и определения в области технической защиты информации. 34
  35. 35. Программные закладки (2)Программные закладки – преднамеренно внесенные в ПО функциональные объекты, которые при определенных условиях (входных данных) инициируют выполнение не описанных в документации функций ПО, приводящих к нарушению конфиденциальности, доступности или целостности обрабатываемой информации.Руководящий документ Защита от несанкционированного доступа к информации Часть 1. Программное обеспечение средств защиты информации Классификация по уровню контроля отсутствия недекларированных возможностей. 35
  36. 36. Распространенные виды программных закладоклазейка (trapdoor, backdoor)бомба логическая бомба (logic bomb) временнАя бомба (time bomb)пасхальное яйцо (easter egg) 36
  37. 37. Скрытые каналы Скрытый канал (covert channel) – непредусмотренный разработчиком системы информационных технологий и автоматизированных систем коммуникационный канал, который может быть применен для нарушения политики безопасности.ГОСТ Р 53113.1-2008. Защита информационных технологий иавтоматизированных систем от угроз информационнойбезопасности реализуемых с использованием скрытыхканалов. Часть 1. Общие положения. 37
  38. 38. Виды скрытых каналов Скрытые каналы по памяти (storage channel) Скрытые каналы по времени (timing channel) Скрытые статистические каналы по ГОСТ Р 53113.1-2008Примеры реализаций скрытых каналов : сохранение информации в области между разделами на жестком диске нестандартного использование времени отклика в сетевом протоколе ICMP стеганографическая запись в графический файл стандартного отчёта, генерируемого программой 38
  39. 39. Вредоносное ПО (malware)Программный вирус: исполняемый программныйкод или интерпретируемый набор инструкций,обладающий свойством несанкционированногораспространения и самовоспроизведения(репликации). В процессе распространениявирусные субъекты могут себя модифицировать.Некоторые программные вирусы могут изменять,копировать или удалять программы или данные..ГОСТ Р 51275-99 Защита информации. Объект информатизации.Факторы, воздействующие на информацию. Общие положения. 39
  40. 40. Классификация вредоносного ПОПо назначению Вирусы-инфекторы (произвольных файлов, master boot record, системных модулей) Инъекторы сервисов (Service injection viruses) Макровирусы (Macro virus) Скрипт-вирусы (Script viruses) E-mail Spyware Черви (Worms) Трояны (Trojan horses) Троян удаленного доступа (Remote Access Trojans) Сети агентов(ботнеты)По механизмам маскировки Многосекционные (multipartite) Стелс-вирусы (stealth viruses) Полиморфные вирусы (Polymorphic viruses) Метаморфные вирусы (Metamorphic viruses) Шифрованные вирусы (Encrypted viruses) 40
  41. 41. Классификация вредоносного ПО (2) По активации Бомба (логическая/временная) По действию Порча данных (data diddling) Воровство (Theft) Обман (Hoax) Шутки (Pranks) Классификации Kaspersky Lab http://goo.gl/Razkj Symantec Corporation http://goo.gl/pBCLC Mitre MAEC https://maec.mitre.org/ (на примере Conficker.B) 41
  42. 42. Реестры и классификации уязвимостейСовременные реестры MITRE Common Vulnerabilities and Exposures (CVE) NVD (National Vulnerability Database) Национальная база уязвимостей США OSVDB (Open Security Vulnerability Database) База уязвимостей открытого доступа US-CERT Vulnerability Notes DatabaseБюллетени вендоров Microsoft Bulletin ID Secunia ID VUPEN IDУстаревшие классификации Бишоп-Бэйли. Системные и сетевые уязвимости Unix- систем 42
  43. 43. Классификации угроз и методов атакРеестры актуальных угроз и дефектов OWASP Top Ten 10 самых больших угроз для веб-приложений 2011 CWE/SANS Top 25 Most Dangerous Software ErrorsКлассификации атак MITRE Common Attack Pattern Enumeration and Classification (CAPEC)Описание атак Microsoft STRIDE 43
  44. 44. Десятка OWASP (OWASP Top Ten)A1 – Межсайтовый скриптинг (Cross Site Scripting, XSS)A2 – Изъяны при внедрении (Injection Flaws)A3 – Злонамеренный запуск файла (Malicious File Execution)A4 – Небезопасная прямая ссылка на объект (Insecure DirectObject Reference)A5 – Подделка HTTP-запросов (Cross Site Request Forgery, CSRF)A6 – Утечка информации и неправильная обработка ошибок(Information Leakage and Improper Error Handling)A7 – Нарушенная аутентификация и управление сессиями (BrokenAuthentication and Session Management)A8 – Небезопасное криптографическое хранилище (InsecureCryptographic Storage)A9 – Небезопасные коммуникации (Insecure Communications)A10 – Ошибка в запрете доступа к URL (Failure to Restrict URLAccess) 44
  45. 45. Стандартизация процессов безопасности ПОOWASP CLASP (Complex Lightweight ApplicationSecurity Process)Microsoft Security Development Life CycleGuidance to Avoiding Vulnerabilities inProgramming Languages through LanguageSelection and Use 45
  46. 46. Оценка критичности уязвимостей и дефектов и качества работы средств анализа CVSS (Common Vulnerability Scoring System) CCSS (Common Configuration Scoring System) NIST IR7517 The Common Misuse Scoring System (CMSS): Metrics for Software Feature Misuse Vulnerabilities SAMATE (Software Assurance Metrics And Tool Evaluation) 46
  47. 47. Классификации дефектов (defects), изъянов (weaknesses)Дефекты на этапе создания Fortify Seven Pernicious Kingdoms 7 разрушительных "царств" компании Fortify MITRE Common Weaknesses Enumeration (CWE) Общая классификация изъянов ПО DoD Software Fault PatternsДефекты на этапе эксплуатации MITRE Common Configuration Enumeration (CCE) DPE - Default Password EnumerationУстаревшие RISOS и PA Таксономия Ландвера Таксономия Аслама Таксономия Макгоу Таксономия Вебера PLOVER 47
  48. 48. 7 разрушительных царств (7 Pernicious Kingdoms)1. Валидация ввода и представление2. Эксплуатация API3. Механизмы безопасности4. Время и Состояние5. Обработка ошибок6. Качество кода7. Инкапсуляция*Окружение 48
  49. 49. Уязвимости и изъяныCVE (Common VulnerabilityEnumeration)CWE - Common Weakness Enumeration 49
  50. 50. 50
  51. 51. Common Weakness Enumerationhttp://cwe.mitre.org метаязык для описания всех недостатков ПО, схем защиты и атаки Структура типа «дерево» Категории Составные элементы Элементы Сгруппировано по «отображениям» Research View Development View C/C++ Developer View Java Developer View … 51
  52. 52. Классификация Mitre CWE вид для разработки
  53. 53. Сравнение ведущих классификаций уязвимостей и дефектов ПОНазвание классификации Описание Достоинства Недостатки Поддержка одного из Нет разграничения по языкам ведущих разработчиков программирования. Классификация средств для аудита кода. Fortify Taxonomy семь Классификация чересчур недостатков ПО на Простая для пониманияразрушительных царств. упрощена и не отвечает в основе анализа структура. полной мере требованиям исходных текстов Существует достаточно систематизации значительного давно. количества уязвимостей. Десятка наиболее Всего десять уязвимостей. актуальных уязвимостей Актуальность, удобство OWASP Top 10 Учитываются только уязвимости веб-приложений за использования. веб-приложений. последний год. Методы введения безопасности в Учитываются различные Рассматриваются только веб- разработку приложений. актуальные параметры приложения, в классификации OWASP CLASP Проект содержит уязвимостей кода веб- не учитываются ошибки теоретическую базу, в приложений. конфигурации. частности, лексикон уязвимостей. Наиболее обширная Система классификации классификация, включает Уязвимости конфигурации, изъянов ПО. Учитывает в себя много других например, представлены всего CWE более ранние источников. Возможность одной записью, не дающей аналогичные различных видов ссылок на конкретные случаи. разработки. представления. 53
  54. 54. Разработка отечественного стандарта классификации уязвимостей (в рамках ТК 362) ГОСТ Р «Защита информации. Уязвимости информационных систем. Классификация уязвимостей информационных систем» http://goo.gl/jgqf4 54
  55. 55. Текущее состояние разработки ГОСТаКлассы: Уязвимости кода, Группы: Уязвимости в микропрограммах, ПЗУ, Уязвимости ОС и ПО. Уязвимости конфигурации. Группы: Технических средств ИС, Общесистемного ПО ИС, Специального и прикладного ПО ИС.Типы уязвимостей определяются дефектами кодаили конфигурации и связаны с возможнымиатаками
  56. 56. Фрагмент перечня уязвимостей в соответствии с их классификацией по стандарту Класс Группа Вид Тип Класс 1 – уязвимости кода Группа 1.1 – уязвимости в микропрограммах, ПЗУ Тип 1.1.1.1 – уязвимости, связанные с ошибками формата данных, приводящие к переполнению буфера Тип 1.1.1.2 – уязвимости, связанные с ошибками структуры и действий Класс Группа Вид Тип Тип 1.1.1.3 – уязвимости, связанные с ошибками специальных элементов (символов или зарезервированных слов) Тип 1.1.1.4 – уязвимости, связанные с ошибками путей перехода и источников Тип 1.1.1.5 – уязвимости, связанные с ошибками очищения и сравнения Тип 1.1.1.6 – уязвимости, связанные с ошибками процессов и потоков Тип 1.1.1.7 – уязвимости, связанные с ошибками обработчика
  57. 57. Класс 2 – уязвимости конфигурации Группа 2.1 – уязвимости конфигурации технических средств ИС Вид 2.1.1 – уязвимости в конфигурации микропрограмм, ПЗУ Тип 2.1.1.1 – уязвимости, связанные с функциями, процедурами, изменение параметров которых определенным образом позволяет использовать их для несанкционированного доступа без обнаружения таких изменений операционной системой Тип 2.1.1.2 – уязвимости, связанные с наличием фрагментов кода программ, введенных разработчиком, позволяющих обходить процедуры идентификации, аутентификации, проверки целостности и др. Тип 2.1.1.3 – уязвимости, связанные с наличием ошибок в программах (в объявлении переменных, функций и процедур, в кодах программ), которые при определенных условиях приводят к сбоям, в том числе, к сбоям функционирования средств и систем защиты информации Вид 2.1.2 – уязвимости конфигурации интерфейсов управления Тип 2.1.2.1 – уязвимости, связанные с функциями, процедурами, изменение параметров которых определенным образом позволяет использовать их для несанкционированного доступа без обнаружения таких изменений операционной системой 57
  58. 58. Класс Группа Вид Тип Вид 2.1.3 – уязвимости конфигурации контроллеров управления Тип 2.1.3.1 – уязвимости, связанные с функциями, процедурами, изменение параметров которых определенным образом позволяет использовать их для несанкционированного доступа без обнаружения таких изменений операционной системой Тип 2.1.3.2 – уязвимости, связанные с наличием фрагментов кода программ, введенных разработчиком, позволяющих обходить процедуры идентификации, аутентификации, проверки целостности и др. Тип 2.1.3.3 – уязвимости, связанные с наличием ошибок в программах (в объявлении переменных, функций и процедур, в кодах программ), которые при определенных условиях приводят к сбоям, в том числе, к сбоям функционирования средств и систем защиты информации Вид 2.1.4 – уязвимости ПО организации взаимодействия с ОПО Группа 2.2 – уязвимости конфигурации общесистемного ПО Вид 2.2.1 – уязвимости конфигурации операционной системы Тип 2.2.1.1 – уязвимости в средствах ОС, обеспечивающих выполнение функций управления процессами Тип 2.2.1.2 – уязвимости в средствах ОС, обеспечивающих выполнение функций управления памятью 58
  59. 59. Общее видение типов уязвимостей и дефектов 59
  60. 60. Предложение по отображению элементов отечественных стандартов на международные системы 60
  61. 61. Предложение по стандарту классификации: Класс 1 - Обработка и представление данных Класс 2 - Внутренняя структура и зависимости Класс 3 - Обработка событий и состоянийТип 1 - Уязвимости вызванные дефектами кода и Класс 4 - Ресурсы и внутренние механизмы проектирования системы системы Класс 5 - Внедренные объекты (закладки) Класс 6 - Качество проектирования, реализации, документирования Класс 7 - Конфигурация Тип 2 - Уязвимости вызванные дефектами конфигурирования и управления системой, а также её окружением Класс 8 - Окружение 61
  62. 62. Обсуждение и развитие стандарта Предварительная версия документа и обсуждение: http://s3r.ru/it-sec-std/ Рабочие материалы и результаты: https://github.com/it-sec-std/ 62
  63. 63. Контакты докладчика:Вопросы? 63
  64. 64. Материалы, методы, процедурыАНАЛИЗ БЕЗОПАСНОСТИПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 64
  65. 65. Уязвимость информационной системыУязвимость (информационной системы);брешь - свойство информационной системы,обусловливающее возможность реализацииугроз безопасности обрабатываемой в нейинформации.ГОСТ Р 50922-2006. Защита информации. Основныетермины и определения Унифицированныесистемы документации. 65
  66. 66. Типовые уязвимости. Переполнение буфераПереполнения буфера (buffer overrun) представляют собойнаиболее известный и распространённый классуязвимостей программного обеспечения. Первые попыткиприменения переполнения буфера относятся к 60-м годампрошлого века. Первая атака с применением даннойуязвимости использовалась в вирусе-черве Морриса в 1988году. С тех пор их число увеличивается с каждым годом. Подготовка кода, который будет выполняться в контексте привилегированной программы Изменение последовательности выполнения программы с передачей управления подготовленному коду 66
  67. 67. Типовые уязвимости. Переполнение буфераСхема атаки «Срыв стека» 67
  68. 68. Методы борьбы с переполнениями буфера корректировка исходных текстов использование неисполняемых буферов использование динамических систем проверки выхода за границы применение статических проверок выхода за границы 68
  69. 69. Использование систем квази- постоянства (Quasi-invariant)PointGuard. StackGuard 69
  70. 70. Ошибки, связанные с форматной строкой#include <stdio.h>int main(int argc, char* argv[]){ if(argc > 1) printf(argv[1]); return 0;} 70
  71. 71. Запуск на выполнение:E:progformat_bug.exe “%x %x”12ffc0 4011e5 71
  72. 72. Борьба с ошибками форматной строкиВалидация пользовательского вводаФильтрация пользователского ввода 72
  73. 73. Подходы к анализу безопасности ПО Анализ архитектуры системы (design review) Рецензирование, Статический анализ инспекция кода (code (static analysis) review, code inspection) Поиск потенциально Структурное опасных конструкций с тестирование помощью анализаторов кода (white-box testing) Пример: РД НДВ Taint-mode analysisАудит безопасности ПО Динамический анализ (application security (dynamic analysis) Контроль выполнения audit) функциональных Тестирование работы объектов (РД) Функциональное механизмов тестирование безопасности (black-box testing) Пример: РД НСД, РДВ Фаззинг (fuzzing testing) 73
  74. 74. Требования проведения структурного тестированияРД по НДВ Гостехкомиссии (1999) 3.3.3 Статический анализ исходных текстов программ 3.3.4 Динамический анализ исходных текстов программГОСТ Р МЭК 61508-7-2007 (IEC 61508) Функциональнаябезопасность (Safe Integrity Level) B .6.4 Статический анализ Анализ управления потоком, интерфейсов, потока данныхPCI DSS Requirement 6.6 “Reviewing public-facing web applications via manual or automated application vulnerability security assessment tools or methods, at least annually and after any changes”PA DSS 5.1.7 Review of payment application code prior to release ... -NISTIR 4909: Software Quality Assurance 4.6.2.Source Code Documentation: B.2.3.Source Code Review
  75. 75. Статический анализобъекты исследования исходные тексты ПО исполняемый код ПО материалы производства ПО (отладочная информация, логи сборки, вывод внешних средств) параметры программного проекта (проектные файлы, манифесты)особенности подхода не требует запуска ПО ограниченный набор проверяемых свойств ПО (проблема «останова», теорема Райса) сложность анализа нелинейно возрастает с ростом объема анализируемого ПО 75
  76. 76. Области применения статического анализакомпиляция, интерпретацияисследование архитектуры (CASE-средства) иалгоритмов программы, автодокументированиеформатирование кодавычисление программных метрик, общая оценкакачестваоптимизация, распараллеливание, профилировкапреобразования (трансформации) программ,метапрограммированиеобфускация/деобфускация программобнаружение дефектов 76
  77. 77. Направления статического анализа1.1 Декомпозиция и анализ структуры ПО В рамках анализа архитектуры системы (design review) В рамках рецензирования, инспекции кода (code review)1.2 Проверка стиля программирования, подсчетметрик Рецензирование, инспекции кода1.3 Проверка свойств (ограничений) программы намоделях Поиск потенциальных дефектов ПО с помощью анализаторов кода1.4 Поиск багов/дефектов по образцу (cигнатурныйанализ) Поиск потенциальных дефектов ПО с помощью анализаторов кода 77
  78. 78. РД. Защита от НСД к информации. ПО СЗИ. Классификация по уровню контроля отсутствия недекларированных возможностей (Гостехкомиссия России, 1999). http://www.fstec.ru/_docs/doc_3_3_010.htm Уровень контроля Выполняемые проверки 4 3 2 11.Контроль состава и содержания документации + + + +2.Контроль исходного состояния + = = =3.1.Контроль отсутствия избыточности исходных текстов + + + =3.2.Контроль соответствия исходных текстов загрузочному коду + = = +3.3.Контроль связей функциональных объектов по управлению - + = =3.4.Контроль связей функциональных объектов по информации - + = =3.5.Контроль информационных объектов - + = +3.6.Контроль наличия заданных конструкций - - + +3.7.Формирование перечня маршрутов выполнения ФО - + + =3.8.Анализ критических маршрутов выполнения ФО - - + =3.9.Анализ алгоритма работы на основе блок-схем, построенных по - - + =исходным текстам контролируемого ПО4.1.Контроль выполнения функциональных объектов - + + =4.2.Сопоставление фактических маршрутов и маршрутов, - + + =построенных в процессе проведения статического анализа 78
  79. 79. Этапы построения модели программы1) Исходный текст программы2) Лексический анализ 79
  80. 80. Этапы построения модели программы3) Синтаксический анализ. Дерево разбора 80
  81. 81. Этапы построения модели программы4) Абстрактное дерево разбора (AST) 81
  82. 82. Граф потока управления (CFG) и граф зависимостей по данным (DFG)1 int m(int x, int y) {2 while (x > 10) {3 x -= 10; // x = x - 10;4 if (x == 10) {5 break;6 }7 }8 x = square(x);9 if (y < 20 && x%2 == 0) {10 y += 20; // y = y + 20;11 }12 else {13 y -= 20; // y = y - 20; 14 }15 return 2*x + y;16 } 82
  83. 83. Однократное статическое присваивание (SSA) 83
  84. 84. Абстрактный семантический граф 84
  85. 85. Сигнатурный анализПроисхождение термина «сигнатурный анализ» (signatureanalysis) диагностика электронных схем путем сопоставления входного и выходного сигнала метод анализа подчерка в графологииСигнатурный анализ программного кода Поиск программных дефектов в исходных текстах или исполняемых модулях путем сопоставления фрагментов кода или его представления с образцами из базы шаблонов (сигнатур) 85
  86. 86. Требования руководящего документа Для второго уровня контроля необходимо выполнять синтаксический контроль наличия заданных конструкций в исходных текстах ПО из списка (базы) потенциально опасных конструкций. Для первого уровня контроля необходимо выполнять семантический контроль наличия заданных конструкций в исходных текстах ПО из списка (базы) потенциально опасных конструкций. 86
  87. 87. Нормативная база применения метода сигнатурного анализа РД. Защита от НСД к информации. ПО СЗИ. Классификация по уровню контроля отсутствия недекларированных возможностей (Гостехкомиссия России, 1999). Уровень контроля Выполняемые проверки 4 3 2 11.Контроль состава и содержания документации + + + +2.Контроль исходного состояния + = = =3.1.Контроль отсутствия избыточности исходных текстов + + + =3.2.Контроль соответствия исходных текстов загрузочному коду + = = +3.3.Контроль связей функциональных объектов по управлению - + = =3.4.Контроль связей функциональных объектов по информации - + = =3.5.Контроль информационных объектов - + = +3.6.Контроль наличия заданных конструкций - - + +3.7.Формирование перечня маршрутов выполнения ФО - + + =3.8.Анализ критических маршрутов выполнения ФО - - + =3.9.Анализ алгоритма работы на основе блок-схем, построенных по - - + =исходным текстам контролируемого ПО4.1.Контроль выполнения функциональных объектов - + + =4.2.Сопоставление фактических маршрутов и маршрутов, - + + =построенных в процессе проведения статического анализа 87
  88. 88. Процесс работы статического анализатора кода Предварительный обзор материалов проекта и Препроцессинг Лексический анализ формирование пакетов задач Семантический Синтаксический Сигнатурный анализ анализ анализПостроение отчетов ипоследующиепреобразования•Отчеты по структуре•Отчеты по сигнатурному анализу•Экспорт моделей (e.g. UML)•Преобразование (e.g. XMLVM)
  89. 89. Динамический анализ ПОДинамический анализ ПО (англ. Dynamic program analysis) — анализпрограммного обеспечения, выполняемый при помощи выполненияпрограмм на реальном или виртуальном процессоре.Dowson, M. (March 1997). "The Ariane 5 Software Failure". SoftwareEngineering Notes 22Динамический анализ исходных текстов программ – совокупностьметодов контроля (не)соответствия реализованных и декларированных вдокументации функциональных возможностей ПО, основанных наидентификации фактических маршрутов выполнения функциональныхобъектов с последующим сопоставлением маршрутам, построенным впроцессе проведения статического анализа.Руководящий документ Защита от несанкционированного доступа кинформации Часть 1. Программное обеспечение средств защитыинформации Классификация по уровню контроля отсутствиянедекларированных возможностей. Методы проведения динамического анализа Внедрение датчиков в исходные тексты Внедрение датчиков в исполняемый код (до или после загрузки кода в ОЗУ) Установка точек останова (breakpoints) или перехватчиков вызовов (hooks) Степень покрытия, метрики структурные и функциональные критерии Взаимодействие статического и динамического анализа (Tainted mode) 89
  90. 90. Понятия CWEПродукт (PRODUCT) Механизм защиты (PROTECTIONФунк. возможность (FEATURE) MECHANISM)Ресурс (RESOURCE) Атака, Атакующий (ATTACK, ATTACKER)Поведение (BEHAVIOR) Последствие (CONSEQUENCE)Манипуляции (MANIPULATIONS) Изъян (WEAKNESS)Свойства (PROPERTIES) Уязвимость (VULNERABILITY)Деятели (ACTORS) Цепь (CHAIN)Роли (ROLES) Композиция (COMPOSITE)Директивы (DIRECTIVES) Слои (LAYERS)Каналы (CHANNELS) Отказы защитного механизма, ОЗМТопология (TOPOLOGY) (Protection Mechanism Failures, PMF)Сфера контроля (CONTROL SPHERE) Санация (SANITIZATION)Политика безопасности (SECURITYPOLICY) 90
  91. 91. Понятия CWE(1)Продукт (PRODUCT)Функ. возможность (FEATURE)Ресурс (RESOURCE)Поведение (BEHAVIOR)Манипуляции (MANIPULATIONS) Изменение ресурса деятелемСвойства (PROPERTIES) Связанный с безопасностью атрибут данных, поведений, кода, который в определенных случаях меняется во время работы продукта.Деятели (ACTORS) Типы деятелей: Пользователь, Сервис, Посторонний(Outsider), Информатор (Consultant), Наблюдатель (Monitor/Observer) 91
  92. 92. Характеристики свойствКорректность (VALIDITY) GET index.html (no version) non-existent username "<SCRIPT" without closing tag inconsistent length/payload packet with length field inconsistent with actual length "US3R" token when only A-Z characters are expectedЭквивалентность (EQUIVALENCE) "../.." == "%2e%2e/%2e%2e" (in URIs) "filename.txt" == "FileName.txt." (in Windows) $_GET[x] == $_REQUEST[x] (in PHP) step equivalence: (A->B->C) == (A->C) "/tmp/abc" and a symlink to /tmp/abc "localhost" and "localhost.example.com" (fully qualified domain name) 127.0.0.1 and "hostname.example.com" (IP address and its domain name)Изменчивость (MUTABILITY)Доступность (ACCESSIBILITY)Доверенность(TRUSTABILITY)Уникальность (UNIQUENESS)Предсказуемость (PREDICTABILITY) 92
  93. 93. Измерения корректности (dimensions of validity)Оригинал: GET index.html HTTP/1.1 Лексическая некорректность: G#T index.html HTTP/1.a Синтаксическая некорректность: Доменная некорректность GITCHY index.html ABCD/1.1 Относительная некорректность POST запрос с полем Content-Length, несовпадающим с реальным размером запроса 93
  94. 94. Понятия CWE(2)Роли (ROLES) Жертва, атакующий, свидетель, сообщник, проводникДирективы (DIRECTIVES) запрос, команда, сигнал и др.Каналы (CHANNELS)Топология (TOPOLOGY) SQL-инъекция: пользователь (роль: атакующий) отправляет сфабрикованный запрос к веб-приложению (роль: проводник) по одному каналу (TCP порт 80), а веб-сервер отправляет SQL-запрос по другому каналу к серверу БД (роль: жертва )Сфера контроля (CONTROL SPHERE) 94
  95. 95. Понятия CWE(3)Цепь (CHAIN) Пример: целочисленное переполнение (CWE-190) при вычислении объема выделяемой памяти, что приводит к меньшему объему буфера и его переполнению (CWE-120)Композиция (COMPOSITE) Атака «следование символическим ссылкам» (CWE-61) требует одновременно: предсказуемось имен файлов (CWE-340) неправильные права доступа (CWE-275) гонка условий (CWE-362) 95
  96. 96. Понятия CWE(4)Политика безопасности (SECURITY POLICY)Механизм защиты (PROTECTIONMECHANISM)Атака, Атакующий (ATTACK, ATTACKER)Последствие (CONSEQUENCE)Изъян (WEAKNESS)Уязвимость (VULNERABILITY) 96
  97. 97. Понятия CWE(5)Слои (LAYERS) Слой Системы (память, диски, файлы, процессор; поведения: систем вызовы, запуск процессов) Слой Кода (переменные, структуры, сокеты, дескрипторы, строки; поведения: присваивания,вызовы функций, обработка исключений) Слой Приложения ( cookies, сообщения, профили, базы данных; поведения: хранение данных, аутентификация, отправка сообщений). 97
  98. 98. Пример использования слоёв в анализе кода/* ignore group ID for this example */old_id = getuid();setuid(0);AttachToPrivilegedDevice();/* CWE-252 [code layer], CWE-273[application layer] */setuid(old_id);filename = GetUntrustedFilename();WriteToFile(filename, "Hello world");На уровне кода (CWE-252) отсутствие провероквозвращаемых значений.На уровне приложений (CWE-273) – недостаточнаяпроверка оставленных привилегий 98
  99. 99. Понятия CWE(5)Отказы защитного механизма, ОЗМ (ProtectionMechanism Failures, PMF) Отсутствие реализации Некорректная реализацияСанация (SANITIZATION), виды: Верификация (VERIFICATION) Косвенный выбор (INDIRECT SELECTION) Очистка (CLEANSING) Приведение по конвертированию (ENFORCEMENT BY CONVERSION) Использование «песочницы» (sandboxing) Пример: web-application firewall 99
  100. 100. Механизмы используемые в санации Приведение (enforcement) Фильтрация Abdk*fff? -> Abdkfff Выдача сообщений об ошибке Стандартизация (canonicalization) ../xyz -> /home/xyz 100
  101. 101. Пример кода (comments.cgi) 1 printf("<title>Blissfully Ignorant, Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200);Размещение на сайте: http://foo.com/comments.cgi?MessageType=3 Какие есть изъяны в этом коде? 101
  102. 102. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200);CWE-120: Классическое переполнение буфера(Classic Buffer Overflow) 102
  103. 103. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200); CWE-23: Обход относительного пути (Relative Path Traversal) 103
  104. 104. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200);CWE-79: Отказ в сохранении структуры веб-страницы. Межсайтовый скриптинг. Failure toPreserve Web Page Structure (XSS) 104
  105. 105. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200); CWE-134: Неконтролируемая форматная строка. Uncontrolled Format String 105
  106. 106. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200); CWE-476: Разыменование нулевого указателя. NULL Pointer Dereference (6->7) 106
  107. 107. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200); CWE-20: Неверная проверка входных значений Improper Input Validation (2 & 8) 107
  108. 108. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200); CWE-116: Неправильное кодирование или экранирование вывода Improper Encoding or Escaping of Output (7->9) 108
  109. 109. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200); CWE-73: Внешний контроль имени файла или всего пути External Control of File Name or Path (2->4->6) 109
  110. 110. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200); CWE-404: Неправильное освобождение или отключение ресурса. Improper Resource Shutdown or Release (6->10) 110
  111. 111. Пример кода 1 printf("<title>Blissfully Ignorant,Inc.</title>"); 2 ftype = Get_Query_Param("MessageType"); 3 strcpy(fname, "/home/cwe/"); 4 strcat(fname, ftype); 5 strcat(fname, ".dat"); 6 handle = fopen(fname, "r"); 7 while(fgets(line, 512, handle)) { 8 if (strncmp(line,"<script>",8)) { 9 printf(line); } } 10 return(200); CWE-252: Отсутствие проверки возвращаемого значения. Unchecked Return Value (2->4->6) 111
  112. 112. ИнструментарийСтатический анализ (static analysis) Open-source OWASP SWAAT http://goo.gl/LO5C8 RIPS http://goo.gl/ZVPs9 FindBugs http://goo.gl/b057 Flawfinder http://goo.gl/mCViy Коммерческие IBM AppScan, HP Fortify, VeraCode Static http://goo.gl/BwtOr АК-ВС http://goo.gl/SMmOJ PVS-Studio http://goo.gl/Btg6yИнспекции кода (code review) Gerrit http://goo.gl/ES2xp Rietvield http://goo.gl/P3ri Groogle http://goo.gl/hrxKF 112
  113. 113. Компонентный анализ ПОособенности современного ПО разделено на компоненты (подкомпоненты) четко заданные интерфейсы разные уровни доверия и требования к безопасности компонентованализ архитектуры сокращение расходов на рецензирование и тестированиепарадигмы программирования. структуры. 113
  114. 114. Виды аудита безопасности программных системЭтап жизненного цикла Анализа архитектуры системы (design review) Инспекции кода (code review)Время проведения Тематические инспекции Регулярные инспекции «Парное» программирование Pre-commit review Post-commit reviewСтандарты и руководства OWASP Code Review Guide OWASP Application Security Verification Standard (ASVS) 114
  115. 115. Метрики безопасности ПО.Для обеспечения постоянного контроля качествавсех процессов во время жизненного цикла ПОнеобходимы индикаторы, системасбалансированных метрик, позволяющая оценитьтекущую ситуацию и качество процесса в целом.От верификации до системы контроля качества.Метрическое пространствоМетрика - числовое значение, инструмент оценкипоказателей системы или ее отдельныхкомпонентов 115
  116. 116. Повышение эффективности существующих руководящих документов.С момента введение в действие РД по НДВ прошло околодесяти лет, время не стоит на месте.Каких проверок нам не хватает? Антивирусная проверка Проверка лицензионной чистоты Контроль платформы Контроль зависимостей Проверка всех этапов эксплуатации и развертывания ПО Компоненты и структура связей ПО Контроль исходного состояния. Проблемы существующего ПО в этой области. 116
  117. 117. Литература: монографииМетоды оценки несоответствия средств защиты информации / МарковА.С.,Цирлов В.Л.,Барабанов А. В. - Изд-во "Радио и связь", 2012. — 192 с.CISSP Study Guide 6th Edition / J.M. Stewart, M. Chapple, D. Gibson, 2012.Official (ISC)2 Guide to the CISSP CBK, 3rd Edition / (ISC)2 Press, 2012.Основы информационной безопасности: Краткий курс / В.Л. Цирлов. – Изд-во«Феникс», 2008. – 172 с. 117
  118. 118. Литература: публикацииФадин А.А. Рекомендации по контролю наличия заданных конструкций. //Методы оценки несоответствия средств защиты информации. /под.ред.А.С.Маркова. М.: Радио и связь. 2012. C.180-185. ISBN 5-89776-0152.Барабанов А.В., Марков А.С., Фадин А.А. Сертификация программ без исходныхтекстов // Открытые системы. СУБД. 2011. № 4. С.38-41.Марков А.С., Барабанов А.В., Фадин А.А. Выявление недекларированныхвозможностей в декомпилированных текстах программного обеспечения.//Известия Института инженерной физики. 2010. Т. 4. № 18. С. 24-26.Марков А.С., Миронов С.В., Цирлов В.Л. Выявление уязвимостей в программномкоде. // Открытые системы. СУБД. 2005. № 12. С.64-69. 118
  119. 119. Литература: тезисы и выступления конференций безопасности методомМарков А.С., Фадин А.А. К вопросу о выявлении дефектовстатического сигнатурного анализа // Материалы XII Международнойконференции "Информационная безопасность" - Таганрог: Изд-во ТРТУ, 2012.Веряев А.С., Фадин А.А., Цирлов В.Л. К вопросу об аудите безопасности WI-FIсетей // Материалы XII Международной конференции "Информационнаябезопасность" - Таганрог: Изд-во ТРТУ, 2012.Обзор таксономий уязвимостей программного обеспечения / Марков А.С., ФадинА.А. – II Международная конференция «ИТ-Стандарт 2011», 2011.Подход к решению проблемы аудита информационной безопасности /Барабанов А.В. - Конференция "Студенческая научная весна 2011», МГТУим.Н.Э.Баумана, 2011.Средства и технологии анализа защищенности / А.С.Марков, А.А.Фадин,В.Л.Цирлов // XХ Конференции "Информатизация и информационнаябезопасность правоохранительных органов». – М.: Академия управления МВДРоссии, 2011.Специальные технологии анализа защищенности / А.С.Марков, А.А.Фадин //Межведомственная научная Юбилейная конференция «Современные тенденцииразвития теории и практики управления в системах специального назначения»,ФГУП «Концерн «Системпром», 2011 119
  120. 120. Спасибо за внимание! Контакты докладчика: Вопросы? 120

×