Проект

Общее

Профиль

Безопасная разработка » История » Версия 12

С. Антошкин, 04.06.2026 05:20

1 1 С. Антошкин
{{>TOC}}
2
3
h1. Безопасность в разработке программного обеспечения
4
5
h2. Введение
6
7 6 С. Антошкин
По данным исследований, более 70% успешных кибератак эксплуатируют уязвимости в программном коде, а не в сетевой инфраструктуре. При этом устранение уязвимости на этапе проектирования обходится в 30–100 раз дешевле, чем после выпуска продукта.
8 1 С. Антошкин
9 6 С. Антошкин
Традиционный подход «сначала разработаем, потом проверим безопасность» порождает два хронических сбоя: безопасность приходит слишком поздно, когда архитектурные решения уже закреплены, и работает в режиме блокировщика, тормозя выпуск. Оба сбоя ведут к одному результату — безопасность игнорируется под давлением сроков.
10 1 С. Антошкин
11 6 С. Антошкин
bq. Безопасность в разработке — это подход, при котором требования, практики и инструменты ИБ интегрируются в каждый этап жизненного цикла создания ПО, а не добавляются к уже готовому продукту.
12 1 С. Антошкин
13 6 С. Антошкин
Этот подход известен под несколькими названиями: Secure SDLC, DevSecOps, «сдвиг влево». По сути, все они описывают одно: безопасность должна присутствовать с первого дня разработки.
14 1 С. Антошкин
15 8 С. Антошкин
bq. Эта тема завершает курс. Она связывает воедино оценочные стандарты из темы [[Оценочные_стандарты_в_информационной_безопасности|Оценочные стандарты]] (Common Criteria, ОУД), управление рисками из темы [[Управление_рисками_информационной_безопасности|Управление рисками ]] (моделирование угроз как частный случай оценки рисков), криптографию из темы [[Протоколирование_и_аудит_шифрование_контроль_целостности|Аудит и криптография]] (подпись артефактов, хранение секретов) и технические меры из темы [[Программно-технические_меры_обеспечения_информационной_безопасности|Управление доступом]] (WAF, SIEM, аутентификация в приложениях).
16 6 С. Антошкин
17 1 С. Антошкин
---
18
19 6 С. Антошкин
h2. Почему безопасность нельзя «добавить потом»
20
21
Стоимость исправления уязвимости нелинейно возрастает с течением цикла разработки. Ошибка в требованиях, обнаруженная на этапе проектирования, исправляется за час. Та же ошибка, обнаруженная после выпуска в продакшн, потребует обновления продукта, уведомления пользователей, возможно — регуляторного расследования.
22
23
Но дело не только в деньгах. Многие архитектурные решения необратимы: если система спроектирована без разграничения доступа между модулями, добавить его после завершения разработки значит переписать ядро системы. Именно поэтому безопасность должна закладываться в архитектуру, а не накладываться поверх неё.
24
25
---
26
27 1 С. Антошкин
h2. Жизненный цикл разработки и меры безопасности
28
29 6 С. Антошкин
Жизненный цикл разработки ПО (SDLC(Software Development Life Cycle)) состоит из шести фаз. На каждой из них существуют специфические меры безопасности — дешевле и эффективнее применять их именно здесь.
30 1 С. Антошкин
31
!clipboard-202606031235-9yttc.png!
32
33
h3. Фаза 1. Требования
34
35 6 С. Антошкин
На этапе сбора требований формулируются *требования безопасности* наравне с функциональными:
36 1 С. Антошкин
37 6 С. Антошкин
* какие данные обрабатывает система и какой им присвоен класс защиты (персональные данные по 152-ФЗ, объекты КИИ по 187-ФЗ, коммерческая тайна по 98-ФЗ);
38
* каким регуляторным требованиям должна соответствовать система (приказы ФСТЭК, требования ЦБ для финансовых систем, PCI DSS для систем, обрабатывающих платёжные карты);
39
* нужна ли сертификация по ОУД и какой уровень требуется;
40
* применяется ли принцип *Privacy by Design* — конфиденциальность данных закладывается в архитектуру, а не добавляется потом.
41
42 1 С. Антошкин
Отсутствие требований безопасности на этом этапе означает, что разработчики принимают решения о безопасности неявно, руководствуясь привычками, а не политикой.
43
44
h3. Фаза 2. Проектирование
45
46 6 С. Антошкин
На этапе архитектурного проектирования применяется *моделирование угроз* — систематический процесс выявления потенциальных угроз для проектируемой системы.
47 1 С. Антошкин
48 6 С. Антошкин
bq. Моделирование угроз — это, по сути, оценка рисков применительно к конкретной системе. Методология та же, что описана в теме [[Управление_рисками_информационной_безопасностью|5. Управление рисками ИБ]]: идентификация активов → выявление угроз → оценка вероятности и ущерба → выбор мер. Разница — в уровне детализации и специфике инструментов.
49 1 С. Антошкин
50 6 С. Антошкин
Наиболее распространённые методологии моделирования угроз:
51 1 С. Антошкин
52 6 С. Антошкин
*STRIDE(Spoofing,Tampering,Repudiation,Information Disclosure,Denial of Service,Elevation of Privilege)* — классификация угроз по шести категориям: подмена идентичности, изменение данных, отказ от совершённых действий, утечка информации, отказ в обслуживании, повышение привилегий. Каждая категория STRIDE соответствует нарушению одного из свойств триады КДЦ или смежных свойств безопасности.
53 1 С. Антошкин
54 6 С. Антошкин
*PASTA(Process for Attack Simulation and Threat Analysis)* — ориентированный на бизнес-риски подход с семью этапами, включая имитацию атак с точки зрения злоумышленника.
55 1 С. Антошкин
56 6 С. Антошкин
*DREAD(Damage, Reproducibility, Exploitability, Affected Users, Discoverability)* — методика количественной оценки серьёзности угрозы по пяти параметрам. Позволяет приоритизировать меры защиты.
57 1 С. Антошкин
58 6 С. Антошкин
По результатам моделирования закладываются принципы *минимальных привилегий* (рассмотренный в теме 9) и *эшелонированной защиты* (Defense in Depth): несколько независимых рубежей защиты, компрометация одного не означает компрометацию всей системы.
59 1 С. Антошкин
60 6 С. Антошкин
h3. Фаза 3. Реализация (кодирование)
61 1 С. Антошкин
62 6 С. Антошкин
*Стандарты безопасного кодирования* — задокументированные правила для разработчиков: как обрабатывать пользовательский ввод, как работать с криптографией, как избегать конкретных классов уязвимостей. Примеры: CERT Coding Standards, OWASP Cheat Sheet Series.
63 1 С. Антошкин
64 6 С. Антошкин
*SAST(Static Application Security Testing)* — статическое тестирование безопасности. Инструменты анализируют исходный код без его выполнения, выявляя SQL-инъекции, XSS, небезопасное использование криптографических функций, жёстко заданные пароли в коде. Примеры: SonarQube, Checkmarx, Semgrep. SAST интегрируется в IDE(Integrated Development Environment) — разработчик видит предупреждение сразу при написании уязвимого кода.
65
66
*SCA(Software Composition Analysis)* — анализ состава ПО. Выявляет уязвимые сторонние компоненты и open-source библиотеки. Результатом является *SBOM(Software Bill of Materials)* — реестр всех компонентов продукта с версиями и лицензиями. Инцидент Log4Shell (CVE-2021-44228, декабрь 2021) затронул тысячи продуктов именно потому, что организации не знали, используют ли они Log4j: SBOM позволяет ответить на этот вопрос за минуты.
67
68
*Code Review с фокусом на безопасность* — ручная проверка кода коллегами. Особенно эффективна для логических ошибок, которые не обнаруживают автоматические инструменты: неправильно реализованный контроль доступа, некорректная обработка граничных случаев бизнес-логики.
69
70 1 С. Антошкин
h3. Фаза 4. Тестирование
71
72 6 С. Антошкин
*DAST(Dynamic Application Security Testing)* — динамическое тестирование работающего приложения. Инструменты имитируют действия злоумышленника: отправляют вредоносные запросы, проверяют реакцию. Находят уязвимости, незаметные при статическом анализе: проблемы конфигурации, логические ошибки в бизнес-процессах, небезопасные заголовки HTTP. Примеры: OWASP ZAP, Burp Suite.
73 1 С. Антошкин
74 6 С. Антошкин
*Penetration Testing (пентест)* — ручная имитация атаки профессиональными специалистами. Наиболее глубокий вид тестирования: выявляет цепочки уязвимостей, которые по отдельности кажутся незначительными, и бизнес-логические проблемы, невидимые автоматическим инструментам. Проводится перед значимыми релизами и не реже раза в год.
75 1 С. Антошкин
76 6 С. Антошкин
*Fuzzing* — автоматизированная подача случайных и некорректных данных на вход системы для обнаружения сбоев и уязвимостей. Эффективен для API, парсеров, протоколов передачи данных.
77 1 С. Антошкин
78 6 С. Антошкин
Именно на этапе тестирования наиболее значимы требования ОУД 4 — подробнее в соответствующем разделе ниже.
79 1 С. Антошкин
80
h3. Фаза 5. Выпуск и деплой
81
82 6 С. Антошкин
*Security Gates в CI(Continuous Integration)/CD(Continuous Delivery)* — автоматические проверки, останавливающие выпуск, если найдены уязвимости выше заданного порога серьёзности. Это операциональное воплощение принципа «безопасность как код»: политики безопасности выражены в форме кода, версионируются и применяются автоматически.
83 1 С. Антошкин
84 9 С. Антошкин
*Подпись артефактов* — криптографическая подпись собранных пакетов и образов контейнеров. Гарантирует целостность цепочки поставок: потребитель может проверить, что артефакт создан именно тем, кем заявлено, и не был изменён после подписания. Механизм ЭЦП для этого — тот же, что описан в теме [[Протоколирование_и_аудит_шифрование_контроль_целостности|Аудит и криптография]]. Фреймворк *SLSA(Supply-chain Levels for Software Artifacts)* определяет четыре уровня зрелости этих практик.
85 1 С. Антошкин
86 9 С. Антошкин
*Secrets Management* — секреты (пароли, токены, ключи API) не хранятся в коде или переменных среды, а управляются специализированными инструментами: HashiCorp Vault, AWS Secrets Manager, CyberArk Conjur. Это продолжение темы управления привилегированным доступом из темы [[Программно-технические_меры_обеспечения_информационной_безопасности|Управление доступом]] применительно к машинным идентичностям.
87 1 С. Антошкин
88 6 С. Антошкин
*Hardened Configuration* — минимизация поверхности атаки: отключение неиспользуемых сервисов, применение принципа наименьших привилегий для сервисных учётных записей, шифрование данных в покое.
89 1 С. Антошкин
90 2 С. Антошкин
h3. Фаза 6. Эксплуатация
91 1 С. Антошкин
92 6 С. Антошкин
*Patch Management* — систематическое отслеживание и применение обновлений безопасности. Связан с SCA: обнаружение новой CVE в используемом компоненте должно автоматически инициировать процесс обновления.
93 1 С. Антошкин
94 6 С. Антошкин
*WAF(Web Application Firewall) и RASP(Runtime Application Self-Protection)* — WAF защищает приложение на уровне HTTP-трафика, блокируя атаки из OWASP Top 10. RASP  встраивается внутрь приложения и перехватывает атаки прямо в среде выполнения.
95 1 С. Антошкин
96 10 С. Антошкин
*Мониторинг безопасности приложения* — интеграция с SIEM, отслеживание аномалий в поведении пользователей, журналирование критических операций. Применение SIEM для этой задачи подробно рассмотрено в теме [[Программно-технические_меры_обеспечения_информационной_безопасности|Управление доступом]].
97 1 С. Антошкин
98 6 С. Антошкин
*VDP(Vulnerability Disclosure Policy) и Bug Bounty* — политика ответственного раскрытия уязвимостей  и программы вознаграждения за найденные баги. Организованный механизм приёма сообщений от независимых исследователей безопасности — зрелая практика, принятая в крупных технологических компаниях.
99 1 С. Антошкин
100
---
101
102 6 С. Антошкин
h2. OWASP Top 10
103 1 С. Антошкин
104 6 С. Антошкин
*OWASP(Open Web Application Security Project)* — некоммерческий фонд, публикующий открытые материалы по безопасности веб-приложений. Его наиболее известный документ — *OWASP Top 10* — список десяти наиболее критичных классов уязвимостей, обновляемый каждые 3–4 года.
105 1 С. Антошкин
106 6 С. Антошкин
Текущая версия (2021):
107 1 С. Антошкин
108 6 С. Антошкин
|_.Код|_.Категория|_.Типичный пример|_.Связь с курсом|
109
|A01|Broken Access Control|Пользователь меняет ID в URL и получает чужие данные|Нарушение DAC/RBAC из темы 9|
110
|A02|Cryptographic Failures|Пароли хранятся в MD5 без соли|Уязвимость, описанная в теме 10|
111
|A03|Injection|SQL-инъекция через поле поиска|SAST обнаруживает при статическом анализе|
112
|A04|Insecure Design|Нет ограничений на число попыток входа|Выявляется при моделировании угроз (фаза 2)|
113
|A05|Security Misconfiguration|Открытый порт отладчика в продакшне|Устраняется Hardened Configuration (фаза 5)|
114
|A06|Vulnerable Components|Библиотека с известной CVE|Выявляется SCA; управляется через SBOM|
115
|A07|Authentication Failures|Сессионные токены не инвалидируются при выходе|MFA и управление сессиями из темы 9|
116
|A08|Software Integrity Failures|Обновления загружаются без проверки подписи|Подпись артефактов, ЭЦП из темы 10|
117
|A09|Logging Failures|Неудачные попытки входа не фиксируются|Требования к протоколированию из темы 10|
118
|A10|SSRF|Сервер делает запросы к внутренним ресурсам по URL из запроса|Выявляется DAST; блокируется WAF|
119 1 С. Антошкин
120 6 С. Антошкин
OWASP также публикует специализированные Top 10 для API, мобильных приложений, LLM-приложений и облачных сред.
121 1 С. Антошкин
122
---
123
124 6 С. Антошкин
h2. ОУД 4 и Common Criteria в контексте разработки
125 1 С. Антошкин
126 11 С. Антошкин
Стандарт Common Criteria (ISO/IEC 15408, в России — ГОСТ Р ИСО/МЭК 15408) подробно рассмотрен в теме [[Оценочные_стандарты_в_информационной_безопасности|Оценочные стандарты]]. Здесь рассматриваем его с точки зрения разработчика: что конкретно нужно делать, чтобы продукт мог быть сертифицирован по ОУД 4.
127 1 С. Антошкин
128 6 С. Антошкин
h3. Требования ОУД 4 к процессу разработки
129 1 С. Антошкин
130 6 С. Антошкин
ОУД 4 — «методично спроектированный, протестированный и проверенный» — является практическим максимумом для коммерческих продуктов. Он требует не просто наличия хороших практик, а их документального подтверждения и независимой верификации.
131 1 С. Антошкин
132 6 С. Антошкин
Требования к разработчику, релевантные для каждой фазы SDLC:
133 1 С. Антошкин
134 6 С. Антошкин
|_.Фаза SDLC|_.Требование ОУД 4|_.Артефакт для оценщика|
135
|Проектирование|Полная спецификация функций безопасности — описание всех внешних интерфейсов безопасности|Функциональная спецификация, описание архитектуры|
136
|Проектирование|Описание архитектуры безопасности — как механизмы защиты соотносятся друг с другом|ADV_ARC.1: документ архитектуры безопасности|
137
|Реализация|Предоставление исходного кода критических функций безопасности оценщику|Исходный код подсистем аутентификации, управления доступом, криптографии|
138
|Тестирование|Анализ покрытия тестами — соответствие между тестами и функциями безопасности из спецификации|ATE_COV.2: анализ покрытия|
139
|Тестирование|Независимое тестирование оценщиком — оценщик воспроизводит часть тестов разработчика и проводит собственные|ATE_IND.2: независимое тестирование|
140
|Тестирование|Анализ уязвимостей — поиск очевидных уязвимостей в публичных базах и через анализ документации|AVA_VAN.3: анализ уязвимостей|
141
|Процесс разработки|Управление конфигурацией — каждая версия продукта документирована, изменения отслеживаются|ACM: документация управления конфигурацией|
142
|Процесс разработки|Управление жизненным циклом — безопасность процесса разработки и дистрибуции продукта|ALC: свидетельства безопасности процессов|
143 1 С. Антошкин
144 6 С. Антошкин
h3. Почему ОУД 4 не означает «продукт безопасен»
145 1 С. Антошкин
146 6 С. Антошкин
Сертификация по ОУД 4 фиксирует состояние на момент оценки. Оценка занимает от нескольких месяцев до двух лет для крупного продукта. За это время в продукте или его зависимостях могут появиться новые уязвимости. После выхода CVE на сертифицированный продукт организация должна оценить, затрагивает ли уязвимость сертифицированную конфигурацию, и при необходимости инициировать поддержание сертификата.
147 1 С. Антошкин
148 6 С. Антошкин
bq. Сертификат ОУД 4 означает: «процесс разработки и тестирования соответствовал строгим требованиям стандарта, а заявленные функции безопасности независимо проверены на момент оценки». Это необходимое условие доверия к продукту — но не достаточное условие отсутствия уязвимостей.
149 1 С. Антошкин
150
---
151
152 6 С. Антошкин
h2. Фреймворки зрелости безопасной разработки
153 1 С. Антошкин
154 6 С. Антошкин
h3. OWASP SAMM
155 1 С. Антошкин
156 6 С. Антошкин
*OWASP SAMM(Software Assurance Maturity Model)* — модель оценки и улучшения зрелости практик безопасности ПО в организации. SAMM описывает 15 практик безопасности, сгруппированных в пять бизнес-функций: 
157
# Governance, 
158
# Design, 
159
# Implementation, 
160
# Verification,
161
# Operations. 
162 1 С. Антошкин
163 6 С. Антошкин
Каждая практика имеет три уровня зрелости — от базовых мер до систематической оптимизации.
164 1 С. Антошкин
165 6 С. Антошкин
SAMM используется как инструмент оценки текущего состояния («где мы находимся?») и как дорожная карта улучшений («куда двигаться?»).
166 1 С. Антошкин
167 6 С. Антошкин
h3. NIST SSDF
168 1 С. Антошкин
169 6 С. Антошкин
*NIST SSDF(Secure Software Development Framework, SP 800-218)* — руководство NIST(National Institute of Standards and Technology) по практикам безопасной разработки, обязательное для поставщиков ПО в адрес федеральных органов США и де-факто ставшее международным ориентиром. 
170
SSDF организован вокруг четырёх групп практик: 
171
# Prepare the Organisation, 
172
# Protect the Software, 
173
# Produce Well-Secured Software, 
174
# Respond to Vulnerabilities.
175 1 С. Антошкин
176 6 С. Антошкин
h3. PCI Software Security Framework 
177 1 С. Антошкин
178 6 С. Антошкин
*PCI SSF(Software Security Framework)* — стандарт Совета по стандартам безопасности платёжных карт (PCI SSC(Payment Card Industry Security Standards Council)) для безопасной разработки платёжного ПО. Пришёл на смену стандарту PA-DSS в 2022 году.
179 1 С. Антошкин
180 6 С. Антошкин
PCI SSF состоит из двух стандартов. *SSS(Secure Software Standard)* определяет требования безопасности к самому платёжному ПО: защита данных держателей карт, управление аутентификацией, криптографическая защита, защита от вредоносного кода, управление уязвимостями. *SLC(Secure Software Lifecycle Standard)* определяет требования к процессу разработки: моделирование угроз, анализ кода, тестирование безопасности, управление изменениями.
181 1 С. Антошкин
182 6 С. Антошкин
Для организаций, обрабатывающих платёжные данные, PCI SSF является обязательным требованием при разработке или выборе платёжного ПО. Сертификация по PCI SSF проводится аккредитованными оценщиками и даёт право включения продукта в глобальный реестр PCI SSC.
183 1 С. Антошкин
184
---
185
186
h2. DevSecOps: операционализация безопасной разработки
187
188 6 С. Антошкин
*DevSecOps* — культура и практика интеграции безопасности в DevOps-процессы, при которой каждый член команды несёт ответственность за безопасность, а проверки автоматизированы и встроены в конвейер доставки.
189 1 С. Антошкин
190 6 С. Антошкин
*Shift Left* («сдвиг влево») — выявлять и устранять проблемы безопасности как можно раньше. Стоимость исправления уязвимости на этапе требований — условная единица. На этапе проектирования — пять. На этапе кодирования — десять. После выпуска — сотни.
191 1 С. Антошкин
192 6 С. Антошкин
*Security as Code* — политики безопасности выражаются в форме кода: правила SAST, пороги Security Gates, конфигурации WAF. Код версионируется, проверяется и применяется автоматически — никакого «ручного нажатия кнопки» для применения политики безопасности.
193 1 С. Антошкин
194 6 С. Антошкин
*Security Champion* — разработчик внутри команды, проходящий углублённое обучение по безопасности и помогающий коллегам применять практики безопасного кодирования в ежедневной работе. Это масштабируемая модель: один Security Champion на команду из 8–10 разработчиков эффективнее одного централизованного эксперта на всю организацию.
195 1 С. Антошкин
196 6 С. Антошкин
*Metrics-Driven Security* — измеримые показатели зрелости: MTTR уязвимостей (среднее время устранения), плотность уязвимостей на 1000 строк кода, процент критических уязвимостей, закрытых в течение SLA, покрытие тестами безопасности.
197 1 С. Антошкин
198
199
---
200
201 6 С. Антошкин
h2. Что дальше
202 1 С. Антошкин
203 6 С. Антошкин
Этот курс охватил полный цикл управления информационной безопасностью — от фундаментальных понятий до практики безопасной разработки. Понимание каждой темы становится полнее в контексте остальных: угрозы определяют риски, риски определяют контроли, контроли реализуются техническими и организационными мерами, а безопасная разработка встраивает всё это непосредственно в создаваемые системы.
204 1 С. Антошкин
205 12 С. Антошкин
* *Оценочные стандарты:* [[Оценочные_стандарты_в_информационной_безопасности|Оценочные стандарты]] — Common Criteria, ОУД, TCSEC
206
* *Управление рисками:* [[Управление_рисками_информационной_безопасности|Управление рисками ИБ]] — ISO 27005, реестр рисков, ALE
207
* *Технические меры:* [[Программно-технические_меры_обеспечения_информационной_безопасности|Управление доступом]] — аутентификация, управление доступом, EDR, SIEM
208
* *Криптография:* [[Протоколирование_и_аудит_шифрование_контроль_целостности|Аудит и криптография]] — ЭЦП, PKI, TLS, хеширование паролей
209 1 С. Антошкин
210 6 С. Антошкин
Так же, можете ознакомиться с курсом [[audit:wiki|Аудит ИБ]], который рассказывает о нескольких стандартах с которыми я работаю и методологией проведения аудитов информационной безопасности. 
211 1 С. Антошкин
212
---
213
214
h2. Список литературы и стандартов
215
216 6 С. Антошкин
* "ISO/IEC 15408-1:2022":https://www.iso.org/standard/72891.html (ГОСТ Р ИСО/МЭК 15408) — Общие критерии
217 1 С. Антошкин
* "OWASP Top 10 2021":https://owasp.org/Top10/
218 6 С. Антошкин
* "OWASP SAMM v2":https://owaspsamm.org/ — Software Assurance Maturity Model
219
* "NIST SP 800-218":https://csrc.nist.gov/publications/detail/sp/800-218/final — Secure Software Development Framework
220
* "PCI Software Security Framework":https://www.pcisecuritystandards.org/document_library/?category=software_security — Secure Software Standard и SLC Standard
221
* "SLSA Framework":https://slsa.dev/ — Supply-chain Levels for Software Artifacts
222
* "OWASP Cheat Sheet Series":https://cheatsheetseries.owasp.org/ — практические руководства по безопасному кодированию
223
* McGraw G. — Software Security: Building Security In. Addison-Wesley, 2006
224
* Kim G., Humble J., Debois P. — The DevOps Handbook. IT Revolution Press, 2016
225
* Руководящий документ ФСТЭК России — Методология оценки безопасности ИТ