<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ivan's Cybersecurity Notes</title>
    <description>The latest articles on DEV Community by Ivan's Cybersecurity Notes (@ivan-piskunov).</description>
    <link>https://dev.to/ivan-piskunov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4047006%2Fbc3c9c19-22ee-4dae-96ea-1883aad7b468.jpg</url>
      <title>DEV Community: Ivan's Cybersecurity Notes</title>
      <link>https://dev.to/ivan-piskunov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ivan-piskunov"/>
    <language>en</language>
    <item>
      <title>Учимся триажить баги и оценивать их влияние на продукт. Или о том как Product Security превращает finding в риск-решение</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Sat, 31 Oct 2026 23:00:00 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/uchimsia-triazhit-baghi-i-otsienivat-ikh-vliianiie-na-produkt-ili-o-tom-kak-product-security-prievrashchaiet-41hd</link>
      <guid>https://dev.to/ivan-piskunov/uchimsia-triazhit-baghi-i-otsienivat-ikh-vliianiie-na-produkt-ili-o-tom-kak-product-security-prievrashchaiet-41hd</guid>
      <description>&lt;p&gt;&lt;em&gt;Практический ProdSec  Vuln Triage playbook: triage → applicability → exposure → reachability → exploitability → blast radius → business impact → treatment → verification.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Когда я работал SecOps инженером, одна из самых полезных вещей, которую мне пришлось усвоить, была довольно простой: &lt;strong&gt;красная цифра на счетчике CVSS или алерт Hight Impact в отчете сканера — это еще не доказуемый факт бага&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;По классике все выглядит примерно так: Сканер уязвимостей или другая тула ассесмента может сказать, что у нас, например, рейт CVSS 9.8. Далее SCA может подсветить vulnerable dependency. А SAST может найти потенциальный sink. И еще круче, DAST может подтвердить поведение на работающем приложении. CNAPP может показать misconfiguration в инфраструктуре. Ну, а Bug bounty researcher может прислать PoC и запросить денежку:)&lt;/p&gt;

&lt;p&gt;Только вот, как оказалось, это "не все" что нужно для принятиях технического решения. Нормальная адекватная инженерная работа — это не переслать finding разрабу со словами «Critical, fix ASAP». Инженерная работа Mid+\Senior SecOps — &lt;strong&gt;понять, что именно найдено, применимо ли это к продукту, достижим ли vulnerable path, кто может его атаковать, какие права получит атакующий, куда он сможет pivot’нуться дальше, что реально потеряет бизнес и какой response уменьшит риск быстрее всего&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Именно этим mindset я хочу поделиться в этой статье.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Главная идея такая:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;CVSS — это severity signal. Приоритет ремонта появляется только после добавления контекста.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;И современный контекст — это не одна дополнительная колонка в треке Jira. Это целая live цепочка: &lt;strong&gt;applicability, exposure, reachability, exploitability, threat intelligence, asset criticality, blast radius, compensating controls, business impact и confidence&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Разберем все по косточкам! Погнали!:)&lt;/p&gt;

&lt;h2&gt;
  
  
  DISCLAIMER
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Архитектуры и часть scenarios в статье намеренно упрощены и используются как учебные модели. Реальные CVE и vendor statements отмечены отдельно. Reachability verdict никогда не должен строиться только на одном scanner signal: качество решения зависит от полноты evidence и понимания конкретного runtime environment.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Field card: карта triage, которую удобно держать перед глазами
&lt;/h2&gt;

&lt;p&gt;Если нужно быстро объяснить весь mindset одним скрином, я бы оставил себе такую карточку:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FINDING
   |
   v
[Real / Valid?]
   |
   v
[Affected in our build / runtime?]
   |
   v
[Where is it deployed?]
   |
   v
[Who can reach it?]
   |
   v
[Is the vulnerable path reachable?]
   |
   v
[Possible -&amp;gt; Feasible -&amp;gt; Weaponized -&amp;gt; Active?]
   |
   v
[What identity / privileges does compromise give?]
   |
   v
[What can the attacker reach next?]
   |
   v
[Business impact / blast radius]
   |
   v
[Which control can break the path now?]
   |
   v
[Priority -&amp;gt; Treatment -&amp;gt; Owner -&amp;gt; SLA / Expiry]
   |
   v
[Verify -&amp;gt; Reassess -&amp;gt; Reopen if assumptions change]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это не checklist. Это короткая модель мышления (т.е. ты можешь ее адаптировать под свой стек\архитектуру\продукт). Если на одном из шагов нет ответа, то просто пишем &lt;strong&gt;&lt;code&gt;Unknown&lt;/code&gt;&lt;/strong&gt;, а не автоматически превращаем неизвестность в &lt;code&gt;Low risk&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Еще один полезный operational signal из реальной работы — &lt;strong&gt;age / time at risk&lt;/strong&gt;: сколько finding уже живёт в production и сколько времени актив остается под экспозицией. Возраст проблемы\бага сам по себе не превращает Medium в Critical, но помогает управлять очередью, метриками SLA breaches и накопленным security debt (что очень важно для Lead и Head).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx2m7gufxxuu738lcamis.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx2m7gufxxuu738lcamis.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Почему классическая модель «CVSS = Priority» больше не работает
&lt;/h2&gt;

&lt;p&gt;Модель старой школы (лет так 10 назад) выглядела просто:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scanner -&amp;gt; CVE -&amp;gt; CVSS -&amp;gt; SLA -&amp;gt; Patch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Например:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CVSS 9.0-10.0 -&amp;gt; Critical -&amp;gt; fix in 24/48h
CVSS 7.0-8.9  -&amp;gt; High     -&amp;gt; fix in 7 days
CVSS 4.0-6.9  -&amp;gt; Medium   -&amp;gt; fix in 30 days
CVSS &amp;lt; 4.0     -&amp;gt; Low      -&amp;gt; backlog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Для отчетности это красиво. Для реальной Product Security — слишком грубо, не качественно. Нужен экспертный взгляд, парсинг профессионала.&lt;/p&gt;

&lt;p&gt;Метода &lt;strong&gt;FIRST&lt;/strong&gt; в актуальном CVSS v4.0 прямо подчёркивает, что &lt;strong&gt;CVSS-B измеряет severity, а не risk&lt;/strong&gt;. В версии 4.0 &lt;em&gt;(актуальна на на момент написания материала)&lt;/em&gt; появились отдельные Base, Threat, Environmental и Supplemental metrics, и сама модель фактически говорит потребителю: &lt;strong&gt;Base Score — это только начало анализа.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;То есть даже стандарт, который часто ошибочно используют как готовый risk score, говорит обратное.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Смотрим практический пример:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CVSS 9.8 в library, которую приложение физически не вызывает, может быть ниже по operational priority;&lt;/li&gt;
&lt;li&gt;CVSS 6.5 на internet-facing API, который позволяет cross-tenant data exposure, может быть для бизнеса гораздо опаснее;&lt;/li&gt;
&lt;li&gt;CVSS 8.x на внутреннем CI/CD controller может стать P0, если через него доступны signing keys, registry, production deploy tokens и Kubernetes;&lt;/li&gt;
&lt;li&gt;CVSS 10.0 на package, которого нет в runtime artifact, вообще может оказаться false positive или &lt;code&gt;not_affected&lt;/code&gt; для данного продукта.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Поэтому предпочитаю мыслить вот так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Priority = f(
    Technical Severity,
    Applicability,
    Exposure,
    Reachability,
    Exploitability,
    Threat Intelligence,
    Asset Criticality,
    Blast Radius,
    Compensating Controls,
    Business Impact,
    Confidence
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это &lt;strong&gt;не математическая формула&lt;/strong&gt; и не предложение умножать один subjective score на другой. Это скорее список вопросов, которые инженер должен пройти до того, как назвать vulnerability «Critical для нас\продукта».&lt;/p&gt;




&lt;h1&gt;
  
  
  Полевая терминология
&lt;/h1&gt;

&lt;p&gt;Если вы только входите в Product Security, то часть терминов сначала звучит как корпоративная магия. На практике они довольно конкретны. Ценим ниже, разбираем по косточкам.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Термин&lt;/th&gt;
&lt;th&gt;Что это означает в работе&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Finding&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Любой security signal: CVE, SAST finding, DAST issue, misconfiguration, pentest finding, bug bounty report&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CVE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Идентификатор публично раскрытой vulnerability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CWE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Класс слабости: SSRF, path traversal, auth bypass, deserialization и т.д.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CVSS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Стандартизированная оценка технической severity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SCA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Software Composition Analysis — поиск vulnerable third-party dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SAST&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Static Application Security Testing — анализ исходников/IR без запуска приложения&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DAST&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dynamic Application Security Testing — тестирование работающего приложения&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SBOM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Software Bill of Materials — inventory компонентов продукта&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VEX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vulnerability Exploitability eXchange — machine-readable statement о применимости/эксплуатируемости vulnerability в конкретном продукте&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;EPSS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Вероятность наблюдаемой эксплуатации CVE в ближайшие 30 дней по модели FIRST&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KEV&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CISA Known Exploited Vulnerabilities — каталог уязвимостей с подтверждённой эксплуатацией in the wild&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PoC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Proof of Concept exploit; доказательство, что primitive действительно работает&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pre-auth / unauth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Эксплуатация до аутентификации / без учётной записи&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exposure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Насколько система доступна атакующему: Internet, partner, VPN, internal, namespace-local и т.д.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reachability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Может ли attacker-controlled flow дойти до vulnerable code/function/sink&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Entry point&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Точка входа: HTTP route, message queue consumer, CLI, file parser, RPC method, webhook и т.д.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sink&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Опасная операция: command execution, SQL query, deserialization, file write, SSRF request и т.д.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Source-to-sink&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Поток данных от attacker-controlled input к dangerous sink&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Call graph&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Граф вызовов функций, полезный для code-level reachability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Taint flow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Анализ распространения недоверенных данных по коду&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Attack path&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Реальная цепочка от точки входа до security impact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exploit chain&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Несколько primitives/vulnerabilities, объединённых в один attack scenario&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blast radius&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Масштаб последствий после успешной compromise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pivot / lateral movement&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Переход с одного скомпрометированного узла к другим системам&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Crown jewel&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Актив с непропорционально высокой ценностью: CI/CD, IAM, secrets manager, signing infrastructure, production control plane&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compensating control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Контроль, который реально ломает attack path или снижает impact, когда прямой fix пока невозможен&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Residual risk&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Риск, остающийся после mitigation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Risk acceptance / exception&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Формальное временное принятие residual risk с owner, rationale и expiry date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SLA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Срок remediation, согласованный по классу риска&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ASPM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Application Security Posture Management — агрегация и корреляция AppSec signals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CNAPP / CSPM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cloud-native / cloud security posture tooling, где findings уже приходят с cloud context&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Mindset инженера: не «закрыть CVE», а доказать (бизнес) риск
&lt;/h1&gt;

&lt;p&gt;Когда я разбирал vulnerability, я старался не начинать с фразы:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«У нас Critical». «Нужен фикс от разрабов, включаем тикет в спринт»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Я начинал с другого, а точнее спрашивал себя и коллег по SecOps:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;«Что именно должно произойти, чтобы attacker превратил этот finding в реальный impact?»&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Это резко меняет качество анализа. Вместо красной карточки в scanner dashboard появляется attack story:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Actor
  -&amp;gt; Entry point
  -&amp;gt; Trust boundary
  -&amp;gt; Vulnerable component/function
  -&amp;gt; Required privileges/configuration
  -&amp;gt; Exploit primitive
  -&amp;gt; Initial impact
  -&amp;gt; Pivot
  -&amp;gt; Crown jewel / data / production
  -&amp;gt; Business consequence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Если я не мог хотя бы приблизительно построить эту цепочку, значит triage ещё не закончен. И надо парсить дальше, искать доп инфу, консультироваться, а сейчас даже перетереть это с ИИ:)&lt;/p&gt;




&lt;h1&gt;
  
  
  Восемь вопросов, которые я задаю до назначения priority
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Finding настоящий?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Сначала sanity check:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;правильный ли package/version;&lt;/li&gt;
&lt;li&gt;не stale ли SBOM;&lt;/li&gt;
&lt;li&gt;не false positive ли fingerprint;&lt;/li&gt;
&lt;li&gt;попадает ли binary/image, который реально деплоится, под affected range;&lt;/li&gt;
&lt;li&gt;совпадает ли OS/distro/build;&lt;/li&gt;
&lt;li&gt;не vendor-patched ли package при старом upstream version string;&lt;/li&gt;
&lt;li&gt;присутствует ли component только в build stage, но не в runtime image.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это &lt;strong&gt;applicability&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Плохой triage начинается, когда команда тратит два дня на CVE, которого в production artifact вообще нет.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Где этот компонент живёт (слой, сегмент, сервис)?
&lt;/h2&gt;

&lt;p&gt;Дальше нужен deployment context.&lt;/p&gt;

&lt;p&gt;Например:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;repo -&amp;gt; build -&amp;gt; image -&amp;gt; registry -&amp;gt; Kubernetes -&amp;gt; pod -&amp;gt; service -&amp;gt; route
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Нужно понимать про:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dev / test / staging / prod;&lt;/li&gt;
&lt;li&gt;public или internal;&lt;/li&gt;
&lt;li&gt;tenant-facing или back-office;&lt;/li&gt;
&lt;li&gt;container, VM, serverless, bare metal;&lt;/li&gt;
&lt;li&gt;ephemeral worker или long-lived controller;&lt;/li&gt;
&lt;li&gt;есть ли state, secrets, customer data;&lt;/li&gt;
&lt;li&gt;какие identities/service accounts привязаны к workload.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Слово &lt;strong&gt;asset criticality&lt;/strong&gt; начинается именно здесь. Да, мэн, держать четкую карту продукта\инфраструктуры в голове.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Есть ли exposure?
&lt;/h2&gt;

&lt;p&gt;Exposure — это не только «торчит ли порт 443 в Интернет».&lt;/p&gt;

&lt;p&gt;Вот полезная шкала оценки в процессе рассуждения:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet unauthenticated
        ↓
Internet authenticated
        ↓
Partner / customer private network
        ↓
VPN / corporate network
        ↓
Internal service-to-service
        ↓
Namespace / host local
        ↓
Offline / build-only
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Иногда internal system опаснее public endpoint, потому что у него намного больше downstream privileges. Например, Jenkins может быть доступен только через VPN, но иметь:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitLab token;&lt;/li&gt;
&lt;li&gt;kubeconfig;&lt;/li&gt;
&lt;li&gt;registry credentials;&lt;/li&gt;
&lt;li&gt;AWS role;&lt;/li&gt;
&lt;li&gt;artifact signing key.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;В таком случае «internal only» — не аргумент для автоматического downgrade. Можно найти решение гибче.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Reachable ли vulnerable path?
&lt;/h2&gt;

&lt;p&gt;ЗАПОМНИ: Package presence не равна exploitability. Это аксиома. Нужно уметь отличать несколько уровней доказательства. Юзаем шпаргалку ниже.&lt;/p&gt;

&lt;h3&gt;
  
  
  Лестница reachability evidence
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Уровень&lt;/th&gt;
&lt;th&gt;Evidence&lt;/th&gt;
&lt;th&gt;Что мы реально знаем&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;L0 — Presence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;package/version есть в SBOM&lt;/td&gt;
&lt;td&gt;компонент присутствует&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;L1 — Imported/Linked&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;код импортирует package&lt;/td&gt;
&lt;td&gt;dependency реально используется где-то в приложении&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;L2 — Function reachability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;call graph ведёт к affected symbol&lt;/td&gt;
&lt;td&gt;vulnerable function может быть вызвана&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;L3 — Source-to-sink&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;taint/data-flow от attacker input к vulnerable sink&lt;/td&gt;
&lt;td&gt;controlled data может достичь опасной операции&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;L4 — Route/exposure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;entry point опубликован и reachable через trust boundaries&lt;/td&gt;
&lt;td&gt;attacker может инициировать этот flow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;L5 — Runtime evidence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;tracing/coverage/eBPF/telemetry подтверждает execution path&lt;/td&gt;
&lt;td&gt;path реально исполнялся в deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Чем выше уровень evidence, тем сильнее вывод. Но важно и обратное: &lt;strong&gt;отсутствие статического path не всегда доказывает невозможность эксплуатации&lt;/strong&gt;. Reflection, dynamic loading, plugin systems, native calls, dependency internals, runtime code generation могут ломать простые call graph assumptions.&lt;/p&gt;

&lt;p&gt;Поэтому хороший verdict инженера выглядит не так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;NOT REACHABLE = SAFE&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;а больше вот так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;No reachable path found with current evidence; confidence: Medium. Reassess if feature/config/runtime changes.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Из open-source tooling хороший пример такого подхода — OSV-Scanner с call analysis: он умеет отделять vulnerabilities в вызываемом коде от package findings, где affected code path не обнаружен. OWASP dep-scan также развивает reachability-aware prioritization и VEX output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3wloqpneq95xyxh4n646.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3wloqpneq95xyxh4n646.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Насколько exploit weaponizable?
&lt;/h2&gt;

&lt;p&gt;Technical severity отвечает не на всё. Это тоже аксиома. Запомни это.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Поэтому я смотрю на еще и:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;есть ли public PoC;&lt;/li&gt;
&lt;li&gt;есть ли functional exploit;&lt;/li&gt;
&lt;li&gt;насколько exploit stable;&lt;/li&gt;
&lt;li&gt;нужен ли rare prerequisite;&lt;/li&gt;
&lt;li&gt;pre-auth ли это;&lt;/li&gt;
&lt;li&gt;можно ли автоматизировать массовый scanning;&lt;/li&gt;
&lt;li&gt;попал ли CVE в CISA KEV;&lt;/li&gt;
&lt;li&gt;какой EPSS probability и percentile;&lt;/li&gt;
&lt;li&gt;есть ли vendor warning об active exploitation;&lt;/li&gt;
&lt;li&gt;есть ли exploitation в threat reports.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  EPSS: probability != percentile
&lt;/h3&gt;

&lt;p&gt;Здесь есть одна ловушка, на которой регулярно спотыкаются даже люди, уже работающие с vulnerability data. Эти два термина похоже, но сука, по разному воспринимаются м путать их НИ-Ни!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EPSS probability&lt;/strong&gt; и &lt;strong&gt;EPSS percentile&lt;/strong&gt; — не одно и то же.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Probability&lt;/strong&gt; — абсолютная модельная вероятность наблюдаемой эксплуатации CVE в ближайшие 30 дней. Значение &lt;code&gt;0.10&lt;/code&gt; означает примерно &lt;strong&gt;10%&lt;/strong&gt;, а не «низкий балл 0.1 из 10».&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Percentile&lt;/strong&gt; — относительный rank этой probability среди всех CVE, для которых FIRST публикует EPSS. Например, &lt;code&gt;percentile = 0.95&lt;/code&gt; означает, что score выше примерно 95% текущей популяции, &lt;strong&gt;а не 95% вероятность эксплуатации&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Из-за того что большая часть CVE никогда не наблюдается в реальной эксплуатации, distribution сильно смещён к нулю. Поэтому даже на первый взгляд небольшая probability может находиться очень высоко по percentile.&lt;/p&gt;

&lt;p&gt;Я обычно сохраняю оба значения вместе:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EPSS probability:  0.10 (10%)
EPSS percentile:   0.95 (95th percentile)
EPSS checked_at:   YYYY-MM-DD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;checked_at&lt;/code&gt; полезен потому, что EPSS обновляется ежедневно: threat signal — не статический атрибут CVE.&lt;/p&gt;

&lt;p&gt;И еще одно важное правило: &lt;strong&gt;не надо умножать EPSS на CVSS и называть результат risk score&lt;/strong&gt;. EPSS — калиброванная probability, а CVSS Base — severity model. Такое перемножение создаёт красивое число без понятной статистической интерпретации — FIRST прямо относит подобную практику к misuse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Здесь полезно различать:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Possible&lt;/strong&gt; — теоретически возможно.&lt;br&gt;
&lt;strong&gt;Feasible&lt;/strong&gt; — практически реализуемо.&lt;br&gt;
&lt;strong&gt;Weaponized&lt;/strong&gt; — есть готовый exploit / tooling.&lt;br&gt;
&lt;strong&gt;Active&lt;/strong&gt; — уже эксплуатируется in the wild.&lt;/p&gt;

&lt;p&gt;Эти состояния требуют разного operational response. Но это уже несколько другая тема и выхолит за скоуп статьи.&lt;/p&gt;


&lt;h2&gt;
  
  
  6. Что получит attacker после первого шага?
&lt;/h2&gt;

&lt;p&gt;Это вопрос про &lt;strong&gt;privilege context&lt;/strong&gt;. Например, RCE в pod не всегда равно cluster compromise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Нужно проверить:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UID/root/non-root;&lt;/li&gt;
&lt;li&gt;privileged container;&lt;/li&gt;
&lt;li&gt;Linux capabilities;&lt;/li&gt;
&lt;li&gt;hostNetwork / hostPID / hostPath;&lt;/li&gt;
&lt;li&gt;service account token;&lt;/li&gt;
&lt;li&gt;Kubernetes RBAC;&lt;/li&gt;
&lt;li&gt;cloud IAM role;&lt;/li&gt;
&lt;li&gt;mounted secrets;&lt;/li&gt;
&lt;li&gt;access to metadata service;&lt;/li&gt;
&lt;li&gt;outbound egress;&lt;/li&gt;
&lt;li&gt;access to control plane;&lt;/li&gt;
&lt;li&gt;registry permissions;&lt;/li&gt;
&lt;li&gt;CI/CD secrets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Один и тот же RCE, который:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RCE in isolated non-root pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;и который:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RCE in privileged deployment controller with cluster-admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;— два разных бизнес-события. Вот тут то видно кто Jun, кто Mid, а кто скиловый прошедший огонь и воду Senior:)&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Какой blast radius?
&lt;/h2&gt;

&lt;p&gt;После initial access я мысленно спрашиваю себя:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;«Что attacker сможет сделать следующим?»&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ценим пример:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
   |
   v
[Nginx]
   |
   v
[API Pod]
   |
   +--&amp;gt; service account
   |
   +--&amp;gt; internal DB
   |
   +--&amp;gt; internal admin API
   |
   +--&amp;gt; container registry
   |
   +--&amp;gt; secrets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Если vulnerability дает только локальный DoS одного stateless replica — один риск. Если она открывает путь к:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cross-tenant data;&lt;/li&gt;
&lt;li&gt;production secrets;&lt;/li&gt;
&lt;li&gt;signing keys;&lt;/li&gt;
&lt;li&gt;build system;&lt;/li&gt;
&lt;li&gt;registry write;&lt;/li&gt;
&lt;li&gt;IAM privilege escalation;&lt;/li&gt;
&lt;li&gt;production deployments;&lt;/li&gt;
&lt;li&gt;customer PII;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ТО приоритет резко РАСТЕТ. Это и есть &lt;strong&gt;blast radius analysis&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Как быстрее всего разорвать attack path?
&lt;/h2&gt;

&lt;p&gt;Здесь важный инженерный shift у себя в мозгу: &lt;strong&gt;remediation не равно patch&lt;/strong&gt;. Patch — это , да, отличный вариант, но не единственный.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Иногда самый быстрый risk reduction:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;отключить feature flag;&lt;/li&gt;
&lt;li&gt;закрыть route;&lt;/li&gt;
&lt;li&gt;убрать Internet exposure;&lt;/li&gt;
&lt;li&gt;выключить CLI;&lt;/li&gt;
&lt;li&gt;применить WAF/gateway rule;&lt;/li&gt;
&lt;li&gt;заблокировать egress;&lt;/li&gt;
&lt;li&gt;deny access к metadata;&lt;/li&gt;
&lt;li&gt;урезать IAM/RBAC;&lt;/li&gt;
&lt;li&gt;убрать secret mount;&lt;/li&gt;
&lt;li&gt;изолировать namespace;&lt;/li&gt;
&lt;li&gt;rollbackнуть component;&lt;/li&gt;
&lt;li&gt;удалить vulnerable package;&lt;/li&gt;
&lt;li&gt;rotate credentials;&lt;/li&gt;
&lt;li&gt;поставить vendor hotfix;&lt;/li&gt;
&lt;li&gt;временно вывести node/service из эксплуатации.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;А потом спокойно сделать permanent fix. Именно поэтому хороший Security Engineer влияет не только на &lt;strong&gt;что чинить, как закинуть таск в спринт&lt;/strong&gt;, но и на &lt;strong&gt;как уменьшить risk прямо сейчас&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Полный processing chain: как finding превращается в решение
&lt;/h1&gt;

&lt;p&gt;Ниже — pipeline, который я бы дал junior engineer как рабочую карту.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[SCA / SAST / DAST / CNAPP / Pentest / Bug Bounty / Vendor Advisory]
                              |
                              v
                    1. Intake / Normalize
                              |
                              v
                    2. Validate / Dedupe
                              |
                              v
                       3. Applicability
                              |
                              v
                  4. Exposure / Reachability
                              |
                              v
                5. Exploitability / Threat Intel
                              |
                              v
                 6. Asset / Identity / Blast Radius
                              |
                              v
                     7. Business Impact
                              |
                              v
                 8. Compensating Controls
                              |
                              v
                    9. Priority Decision
                              |
                              v
                 10. Treatment / Ownership
                              |
                              v
                    11. Fix Verification
                              |
                              v
               12. Evidence / Exception / Recheck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Теперь разберём, что происходит на каждом шаге. По сути, тебе можно держать эту табличку как шпаргалку &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Этап&lt;/th&gt;
&lt;th&gt;Главный вопрос&lt;/th&gt;
&lt;th&gt;Типичный output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Intake&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;откуда пришёл signal?&lt;/td&gt;
&lt;td&gt;finding ID, source, asset&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Validate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;finding реальный и уникальный?&lt;/td&gt;
&lt;td&gt;confirmed / duplicate / false positive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Applicability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;affected ли наш version/build/runtime?&lt;/td&gt;
&lt;td&gt;affected / not affected / unknown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exposure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;кто может достучаться?&lt;/td&gt;
&lt;td&gt;Internet / auth / VPN / internal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reachability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;можно ли дойти до affected path?&lt;/td&gt;
&lt;td&gt;call path / route / taint evidence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exploitability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;насколько реально exploit сделать сейчас?&lt;/td&gt;
&lt;td&gt;PoC, EPSS, KEV, active exploitation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blast radius&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;что будет после compromise?&lt;/td&gt;
&lt;td&gt;identities, secrets, downstream systems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Business impact&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;что теряет бизнес?&lt;/td&gt;
&lt;td&gt;data, money, uptime, compliance, trust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Controls&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;что ломает цепочку?&lt;/td&gt;
&lt;td&gt;WAF, segmentation, IAM, disabled feature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Priority&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;насколько срочно действовать?&lt;/td&gt;
&lt;td&gt;P0/P1/P2/P3 или Critical/High/Medium/Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Treatment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;что делаем?&lt;/td&gt;
&lt;td&gt;patch, mitigate, contain, accept, avoid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Verification&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;риск действительно уменьшился?&lt;/td&gt;
&lt;td&gt;retest / scan / telemetry evidence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recheck&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;что может сделать решение невалидным?&lt;/td&gt;
&lt;td&gt;expiry, reopen triggers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Как выглядит хороший triage ticket
&lt;/h1&gt;

&lt;p&gt;Один из лучших навыков Senior Engineer — уметь превратить шумный scanner output в короткий decision-ready record.&lt;/p&gt;

&lt;p&gt;Я бы использовал примерно такой шаблон:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Finding ID:
Source: SCA / SAST / DAST / Pentest / Vendor / Bug Bounty
Asset / Service:
Environment: prod / staging / dev
Owner:

CVE / CWE:
Affected component + version:
CVSS-B / vector:
EPSS probability / percentile:
CISA KEV: yes/no
Public PoC: yes/no/unknown
Active exploitation: yes/no/unknown

Exposure:
Authentication required:
Entry point:
Reachability evidence:
Exploit prerequisites:
Assessment confidence: High / Medium / Low

Runtime identity:
IAM / RBAC context:
Secrets available:
Downstream systems:
Blast radius:
Data classification:

Existing controls:
Control verification evidence:
Residual risk:

Final priority:
Recommended treatment:
Security owner:
Engineering owner:
Due date / SLA:
Exception expiry:
Reopen triggers:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Сравни два handoff’а. И ты поймешь в чем разница:)&lt;/p&gt;

&lt;h3&gt;
  
  
  Плохой ответ
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Critical CVE 9.8. Please patch ASAP.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Хороший ответ
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;CVE-X&lt;/code&gt; присутствует в production image &lt;code&gt;orders-api:v312&lt;/code&gt;. Package affected, но vulnerable XML import function не reachable из published routes; feature disabled, call graph path отсутствует, runtime trace не показывает загрузку parser. Internet exposure сервиса есть, но affected route отсутствует. CVE не в KEV; public exploit не обнаружен. Impact при гипотетическом exploit высокий из-за customer data. Priority: P2. Upgrade dependency в ближайшем release train; VEX &lt;code&gt;not_affected/code_not_reachable&lt;/code&gt; с expiry 30 дней. Reopen при включении import feature, появлении KEV/working exploit или изменении route table.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Второй вариант позволяет Tech Lead принять решение. Первый — работает либо Jun либо олух. Либо происходит что-то еще:) но не очень хорошее:))&lt;/p&gt;




&lt;h1&gt;
  
  
  Severity, Risk и Priority — не путайте эти слова
&lt;/h1&gt;

&lt;p&gt;Это одна из самых частых проблем на интервью и в реальной работе.&lt;/p&gt;

&lt;h3&gt;
  
  
  Severity
&lt;/h3&gt;

&lt;p&gt;Насколько тяжёлым &lt;strong&gt;может быть technical impact&lt;/strong&gt; vulnerability. Обычно здесь CVSS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Risk
&lt;/h3&gt;

&lt;p&gt;Комбинация likelihood + impact &lt;strong&gt;в конкретном контексте организации&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Priority
&lt;/h3&gt;

&lt;p&gt;Насколько быстро мы должны действовать &lt;strong&gt;относительно других задач, рисков и ресурсов&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Можно иметь:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;High Severity + Low Reachability + Strong Controls = Medium Priority
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;или:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Medium Severity + Internet Exposure + High Exploitability + Crown Jewel Impact = Critical Priority
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;И это не противоречие. Это нормальная risk-based prioritization.&lt;/p&gt;




&lt;h1&gt;
  
  
  Risk Priority != Remediation Difficulty
&lt;/h1&gt;

&lt;p&gt;Это Lead-level нюанс, который очень легко потерять, когда security и engineering начинают спорить о сроках.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;То, что vulnerability сложно исправить, не делает её менее рискованной.&lt;/strong&gt; Сложность fix влияет на treatment plan, но не должна задним числом переписывать assessment.&lt;/p&gt;

&lt;p&gt;Я стараюсь держать отдельно минимум пять осей:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ось&lt;/th&gt;
&lt;th&gt;На какой вопрос отвечает&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Risk / Priority&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Насколько опасно и насколько срочно нужно снизить exposure?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Engineering effort&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Сколько работы требует permanent fix?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Change / availability risk&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Может ли remediation сломать production, вызвать regression или downtime?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fix availability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Есть ли patch/upgrade/hotfix или нужен собственный redesign?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Time at risk&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Как долго актив уже остаётся под этим риском?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Это даёт гораздо более честную decision model:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Low remediation effort&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;High remediation effort / change risk&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;High risk / high priority&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Fix now.&lt;/strong&gt; Это идеальный P0/P1 quick win.&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Contain now, engineer the permanent fix next.&lt;/strong&gt; Remove exposure, disable feature, reduce privilege, isolate, add a verified control, then patch/redesign safely.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Lower risk / lower priority&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Take the quick win&lt;/strong&gt; если это почти бесплатно и не создаёт regression.&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Plan, accept temporarily, or redesign&lt;/strong&gt; с owner, rationale, expiry и reopen triggers.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Самая опасная ошибка выглядит так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Да, это P0, но patch сложный, поэтому давайте назовём finding Medium.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Нет. Если risk действительно P0, он остаётся P0. Просто immediate response может быть не &lt;code&gt;patch&lt;/code&gt;, а &lt;strong&gt;containment / mitigation&lt;/strong&gt;, который быстро разрывает attack path, пока engineering готовит безопасный permanent fix.&lt;/p&gt;

&lt;p&gt;И обратная сторона тоже важна: дешёвый fix не обязан автоматически становиться P0. Его можно сделать как quick win, но &lt;strong&gt;remediation convenience не является measure of risk&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Смог это объяснить на тех интервью!? Поздравляю, мен, +15% к базовой ставке оффера!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Практическая decision matrix
&lt;/h1&gt;

&lt;p&gt;Я не люблю псевдоточность вида &lt;code&gt;Risk Score = 8.736&lt;/code&gt; из десяти субъективных коэффициентов. Что б**ть за цифры, мы же люди, не машины, говорить нужно понятно. Для инженерной коммуникации часто лучше прозрачная qualitative matrix. Вот она, цени ниже.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Low&lt;/th&gt;
&lt;th&gt;Medium&lt;/th&gt;
&lt;th&gt;High&lt;/th&gt;
&lt;th&gt;Critical signal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Severity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;limited impact&lt;/td&gt;
&lt;td&gt;material impact&lt;/td&gt;
&lt;td&gt;major C/I/A&lt;/td&gt;
&lt;td&gt;RCE, auth bypass, systemic compromise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exposure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;offline/local&lt;/td&gt;
&lt;td&gt;internal&lt;/td&gt;
&lt;td&gt;customer/partner reachable&lt;/td&gt;
&lt;td&gt;Internet unauthenticated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reachability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;proven unreachable&lt;/td&gt;
&lt;td&gt;uncertain&lt;/td&gt;
&lt;td&gt;static reachable&lt;/td&gt;
&lt;td&gt;input-to-sink / runtime confirmed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exploit maturity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;theoretical&lt;/td&gt;
&lt;td&gt;PoC with constraints&lt;/td&gt;
&lt;td&gt;functional exploit&lt;/td&gt;
&lt;td&gt;KEV / active exploitation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Asset criticality&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;disposable&lt;/td&gt;
&lt;td&gt;internal supporting&lt;/td&gt;
&lt;td&gt;important production&lt;/td&gt;
&lt;td&gt;IAM, CI/CD, secrets, control plane&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blast radius&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;isolated&lt;/td&gt;
&lt;td&gt;one service&lt;/td&gt;
&lt;td&gt;several systems/data&lt;/td&gt;
&lt;td&gt;supply chain / cross-tenant / org-wide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Controls&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;strong verified&lt;/td&gt;
&lt;td&gt;partial&lt;/td&gt;
&lt;td&gt;weak&lt;/td&gt;
&lt;td&gt;absent/bypassable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Confidence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;low evidence&lt;/td&gt;
&lt;td&gt;mixed&lt;/td&gt;
&lt;td&gt;strong&lt;/td&gt;
&lt;td&gt;multiple independent evidence sources&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Я бы затем переводил это в operational class. Разберем их ниже.&lt;/p&gt;

&lt;h3&gt;
  
  
  P0 / Critical
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Типичный профиль:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internet-facing или easy lateral reach;&lt;/li&gt;
&lt;li&gt;pre-auth / unauth;&lt;/li&gt;
&lt;li&gt;reachable vulnerable path;&lt;/li&gt;
&lt;li&gt;KEV / active exploitation / reliable weaponized exploit;&lt;/li&gt;
&lt;li&gt;crown-jewel asset;&lt;/li&gt;
&lt;li&gt;большой blast radius;&lt;/li&gt;
&lt;li&gt;controls отсутствуют или обходятся.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; containment сейчас, remediation emergency lane, incident-assumption при необходимости, credential rotation, IOC review.&lt;/p&gt;

&lt;h3&gt;
  
  
  P1 / High
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;exploit path реален;&lt;/li&gt;
&lt;li&gt;asset важный;&lt;/li&gt;
&lt;li&gt;exploitation feasible;&lt;/li&gt;
&lt;li&gt;impact высокий;&lt;/li&gt;
&lt;li&gt;есть частичный mitigation или active exploitation пока не подтверждена.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; expedited fix, short SLA, named owner, tracking до closure.&lt;/p&gt;

&lt;h3&gt;
  
  
  P2 / Medium
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;vulnerability применима;&lt;/li&gt;
&lt;li&gt;требует authentication/config/prerequisite;&lt;/li&gt;
&lt;li&gt;blast radius ограничен;&lt;/li&gt;
&lt;li&gt;controls действительно работают.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; normal release cycle с конкретной датой.&lt;/p&gt;

&lt;h3&gt;
  
  
  P3 / Low / Temporarily Accepted
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;component присутствует, но affected function недостижима с хорошим evidence;&lt;/li&gt;
&lt;li&gt;feature отключена;&lt;/li&gt;
&lt;li&gt;required configuration отсутствует;&lt;/li&gt;
&lt;li&gt;exposure минимален;&lt;/li&gt;
&lt;li&gt;compensating controls подтверждены.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Action:&lt;/strong&gt; документированный exception/risk acceptance, owner, expiry и reopen conditions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Risk acceptance без срока пересмотра — это не risk management. Это архивирование проблемы.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdvbsc7papb8t2mpba55s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdvbsc7papb8t2mpba55s.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Где здесь CVSS v4, EPSS, KEV, SSVC и VEX и как, с*ка это все запомнить
&lt;/h1&gt;

&lt;p&gt;Эти инструменты не конкурируют. Они отвечают на разные вопросы. Если забыл про один, но помнишь два других - ОК. Важно не столько "помнить" сколько "понимать", никто не запрещает юзать шпоры) Да же я когда преподавал в универе, то разрешал ребятам на экзамене использовать конспекты&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework / Signal&lt;/th&gt;
&lt;th&gt;На какой вопрос отвечает&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CVSS-B&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;насколько vulnerability тяжёлая технически сама по себе?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CVSS Threat metrics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;как меняется threat state / exploit maturity?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CVSS Environmental&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;как deployment и importance системы меняют severity context?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;EPSS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;какова модельная вероятность observed exploitation в ближайшие 30 дней?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CISA KEV&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;есть ли подтверждённая exploitation in the wild?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SSVC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;какое response decision принять через decision tree?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VEX&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;affected ли конкретный product и как формально передать exploitability status?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;CISA SSVC особенно полезен как mindset: вместо «score worship» он использует &lt;strong&gt;decision tree&lt;/strong&gt; и учитывает состояние эксплуатации и impact. В модели CISA возможны outcomes вроде &lt;code&gt;Track&lt;/code&gt;, &lt;code&gt;Track*&lt;/code&gt;, &lt;code&gt;Attend&lt;/code&gt;, &lt;code&gt;Act&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Я не предлагаю копировать SSVC один в один в любую компанию. Но сама идея очень правильная: &lt;strong&gt;цель assessment — не получить красивое число, а принять response decision&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Кейс 1: CVSS 9.8, но attack path отсутствует
&lt;/h1&gt;

&lt;p&gt;Представим production platform. Анонимно, детали под NDA, но суть сохранена.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                         Internet
                            |
                            v
                       [Cloud LB]
                            |
                            v
                     [Nginx Ingress]
                            |
                            v
                     [Istio Gateway]
                            |
                            v
                  +-------------------+
                  | orders-api Pod    |
                  | app + sidecar     |
                  +-------------------+
                     |            |
                     v            v
                [PostgreSQL]   [Kafka/MQ]

CI/CD:
Developer -&amp;gt; GitLab -&amp;gt; Jenkins -&amp;gt; Registry -&amp;gt; Kubernetes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SCA находит vulnerable XML parsing dependency с &lt;strong&gt;CVSS 9.8&lt;/strong&gt;. Scanner dashboard становится красным. Формальный SLA говорит «Critical».&lt;/p&gt;

&lt;h3&gt;
  
  
  Что делает inexperienced engineer
&lt;/h3&gt;

&lt;p&gt;Создаёт Jira:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Upgrade immediately. CVSS 9.8.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Что делает Senior Product Security Engineer
&lt;/h3&gt;

&lt;p&gt;Проверяет applicability и path.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Package действительно есть в runtime image.&lt;/li&gt;
&lt;li&gt;Affected function используется только модулем legacy XML import.&lt;/li&gt;
&lt;li&gt;Feature flag &lt;code&gt;xml_import=false&lt;/code&gt; в production.&lt;/li&gt;
&lt;li&gt;Route для import отсутствует в Nginx/Istio config.&lt;/li&gt;
&lt;li&gt;Static call graph не находит path от HTTP handlers к affected parser.&lt;/li&gt;
&lt;li&gt;Runtime tracing не показывает загрузку этого parser за наблюдаемый период.&lt;/li&gt;
&lt;li&gt;NetworkPolicy не является главным justification, но дополнительно ограничивает lateral path.&lt;/li&gt;
&lt;li&gt;Нет KEV / active exploitation signal, который бы заставил пересмотреть conservative assumptions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Reachability verdict
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Package present:        YES
Affected version:       YES
Imported:               YES
Affected function:      NOT REACHED by current static evidence
Published route:        NO
Feature enabled:        NO
Runtime observed path:  NO
Confidence:             MEDIUM-HIGH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Решение
&lt;/h3&gt;

&lt;p&gt;Technical severity остаётся &lt;strong&gt;Critical&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Operational priority может стать &lt;strong&gt;P2&lt;/strong&gt;, потому что текущий deployed product не предоставляет attacker path к affected function.&lt;/p&gt;

&lt;p&gt;Но я бы не делал &lt;code&gt;close and forget&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Я бы сделал:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;upgrade dependency в ближайшем release train;&lt;/li&gt;
&lt;li&gt;VEX statement &lt;code&gt;not_affected&lt;/code&gt; с justification типа &lt;code&gt;code_not_reachable&lt;/code&gt;, если ваша схема VEX это поддерживает;&lt;/li&gt;
&lt;li&gt;приложил evidence;&lt;/li&gt;
&lt;li&gt;назначил expiry;&lt;/li&gt;
&lt;li&gt;добавил reopen triggers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Например:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reopen if:
- XML import feature enabled;
- route published;
- dependency behavior changes;
- working exploit changes assumptions;
- CVE enters KEV;
- architecture / call path changes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Урок:&lt;/strong&gt; мы не «проигнорировали Critical». Мы доказали текущую неэксплуатируемость с заданным confidence и поставили автоматические условия пересмотра.&lt;/p&gt;




&lt;h1&gt;
  
  
  Кейс 2: формально «не RCE», но priority становится Critical
&lt;/h1&gt;

&lt;p&gt;Теперь противоположный пример. Ценим, мотаем на ус:)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
   |
   v
[CDN / WAF]
   |
   v
[Nginx Ingress]
   |
   v
[image-preview API]
   |
   |  outbound fetch
   v
[internal/cloud endpoints]
   |
   +--&amp;gt; metadata / workload identity (if reachable)
   +--&amp;gt; internal admin services
   +--&amp;gt; storage
   +--&amp;gt; registry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;В функции preview обнаружен &lt;strong&gt;SSRF&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Первое впечатление:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;прямого RCE нет;&lt;/li&gt;
&lt;li&gt;endpoint «всего лишь качает картинку»;&lt;/li&gt;
&lt;li&gt;scanner может присвоить Medium/High;&lt;/li&gt;
&lt;li&gt;команда хочет положить issue в обычный backlog.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Теперь context review.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exposure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;endpoint Internet-facing;&lt;/li&gt;
&lt;li&gt;account не требуется;&lt;/li&gt;
&lt;li&gt;requests легко автоматизировать.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Reachability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;attacker controls URL;&lt;/li&gt;
&lt;li&gt;URL попадает в outbound HTTP client;&lt;/li&gt;
&lt;li&gt;egress unrestricted;&lt;/li&gt;
&lt;li&gt;allowlist отсутствует.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Identity context
&lt;/h3&gt;

&lt;p&gt;Workload имеет cloud identity и доступ к internal resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blast radius
&lt;/h3&gt;

&lt;p&gt;Успешный SSRF потенциально превращается в:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet actor
   -&amp;gt; SSRF primitive
   -&amp;gt; internal/cloud endpoint access
   -&amp;gt; credentials / internal service access
   -&amp;gt; data or registry compromise
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Что делать
&lt;/h3&gt;

&lt;p&gt;Патчить код нужно. Но fast containment может быть быстрее:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;disable preview feature;&lt;/li&gt;
&lt;li&gt;outbound allowlist;&lt;/li&gt;
&lt;li&gt;block link-local/metadata destinations;&lt;/li&gt;
&lt;li&gt;egress NetworkPolicy;&lt;/li&gt;
&lt;li&gt;reduce workload IAM;&lt;/li&gt;
&lt;li&gt;separate fetcher into isolated workload;&lt;/li&gt;
&lt;li&gt;require auth/rate limits если это соответствует продукту;&lt;/li&gt;
&lt;li&gt;затем permanent code fix.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Итог
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Technical severity:   Medium/High
Internet exposure:    Critical signal
Reachability:         Confirmed
Exploit automation:   High
Business impact:      High/Critical
Controls:             Weak
Priority:             P0/P1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Урок:&lt;/strong&gt; отсутствие RCE не делает vulnerability «некритичной». В Product Security важен exploit chain, а не название CWE.&lt;/p&gt;




&lt;h1&gt;
  
  
  Кейс 3: TeamCity CVE-2023-42793 — когда почти все сигналы смотрят в одну сторону
&lt;/h1&gt;

&lt;p&gt;Теперь реальный пример. Можешь сам погуглить:)&lt;/p&gt;

&lt;p&gt;В 2023 году вендор JetBrains раскрыл &lt;strong&gt;CVE-2023-42793&lt;/strong&gt; в TeamCity On-Premises. Vendor описал scenario, при котором unauthenticated attacker с HTTP(S) access мог получить RCE и административный контроль TeamCity server. JetBrains выпустила исправление в 2023.05.4 и patch plugin для старых версий. Херовая бага... для них:) И сейчас поймешь почему.&lt;/p&gt;

&lt;p&gt;Позже JetBrains сообщила о наблюдаемой эксплуатации, включая активность nation-state actors. CISA добавила CVE в KEV.&lt;/p&gt;

&lt;p&gt;Представим enterprise deployment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet / Corp Network
          |
          v
   [TeamCity Server]
          |
          +----&amp;gt; GitLab repos
          |
          +----&amp;gt; Build agents
          |
          +----&amp;gt; Docker Registry
          |
          +----&amp;gt; Artifact repository
          |
          +----&amp;gt; Kubernetes deploy token
          |
          +----&amp;gt; Cloud secrets / IAM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Здесь contextual signals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Severity:&lt;/strong&gt; Critical;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exposure:&lt;/strong&gt; если public — Critical; если internal — всё равно material;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reachability:&lt;/strong&gt; direct HTTP(S);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth requirement:&lt;/strong&gt; pre-auth/unauth в vulnerable scenario;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Threat intel:&lt;/strong&gt; active exploitation;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KEV:&lt;/strong&gt; yes;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asset criticality:&lt;/strong&gt; CI/CD crown jewel;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blast radius:&lt;/strong&gt; source + artifacts + deployments + secrets;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supply-chain impact:&lt;/strong&gt; возможен downstream compromise.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;В этот момент спор «9.8 или 10.0?» практически бесполезен.&lt;/p&gt;

&lt;h3&gt;
  
  
  Хороший response
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Contain&lt;/strong&gt; — убрать public exposure/ограничить access, если patch не мгновенный.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Patch/upgrade&lt;/strong&gt; — применить vendor fix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hunt&lt;/strong&gt; — проверить IOCs, логи, abnormal behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assume credential exposure where justified&lt;/strong&gt; — оценить, какие secrets были доступны TeamCity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rotate&lt;/strong&gt; — deployment tokens, registry creds, cloud credentials при необходимости.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspect downstream&lt;/strong&gt; — build agents, artifacts, releases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restore&lt;/strong&gt; — только после проверки.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Урок:&lt;/strong&gt; mature vulnerability management иногда должен перейти из обычного remediation в incident-response mode.&lt;/p&gt;




&lt;h1&gt;
  
  
  Ещё три коротких real-world anchor’а
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Jenkins CVE-2024-23897
&lt;/h3&gt;

&lt;p&gt;Jenkins описал arbitrary file read через CLI, который в определённых условиях мог приводить к более серьёзным последствиям, включая RCE scenarios. Vendor отдельно описал prerequisites и workaround: временное отключение CLI могло предотвратить exploitation до upgrade.&lt;/p&gt;

&lt;p&gt;Что это хорошо показывает:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;название finding’а «file read» может недооценивать downstream impact;&lt;/li&gt;
&lt;li&gt;prerequisites важны;&lt;/li&gt;
&lt;li&gt;configuration и encoding могли влиять на практическую exploitability;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;temporary mitigation может быть правильным first response&lt;/strong&gt;, пока идёт patching.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  XZ Utils CVE-2024-3094
&lt;/h3&gt;

&lt;p&gt;XZ backdoor показал другую сторону contextual analysis: громкое событие не означает, что every Linux host одинаково affected.&lt;/p&gt;

&lt;p&gt;Нужно было выяснять:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;exact version;&lt;/li&gt;
&lt;li&gt;distro/build;&lt;/li&gt;
&lt;li&gt;package provenance;&lt;/li&gt;
&lt;li&gt;runtime interaction;&lt;/li&gt;
&lt;li&gt;присутствует ли malicious build в конкретной системе.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Red Hat, например, отдельно указывала affected Fedora builds и то, что RHEL не был затронут.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Урок:&lt;/strong&gt; inventory + provenance + applicability могут быть важнее самой headline severity.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTP/2 Rapid Reset CVE-2023-44487
&lt;/h3&gt;

&lt;p&gt;Для public high-volume edge сервисов availability issue может быть P0, даже если речь не идёт о code execution или data theft.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Урок:&lt;/strong&gt; CIA impact должен оцениваться относительно business function. Availability иногда важнее Confidentiality.&lt;/p&gt;




&lt;h1&gt;
  
  
  Compensating controls: не верьте архитектурной диаграмме на слово
&lt;/h1&gt;

&lt;p&gt;Одна из самых опасных фраз на triage call:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«У нас же WAF».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Хорошо. Какой rule? Какой exploit primitive он блокирует? Проверяли ли bypass? На каком edge? Доходит ли traffic в обход него? Есть ли alternate route?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;То же самое с:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NetworkPolicy;&lt;/li&gt;
&lt;li&gt;service mesh authz;&lt;/li&gt;
&lt;li&gt;VPN;&lt;/li&gt;
&lt;li&gt;MFA;&lt;/li&gt;
&lt;li&gt;EDR;&lt;/li&gt;
&lt;li&gt;runtime protection;&lt;/li&gt;
&lt;li&gt;least privilege;&lt;/li&gt;
&lt;li&gt;egress deny;&lt;/li&gt;
&lt;li&gt;secret isolation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compensating control должен быть связан с attack path. Иначе, простите, это Г**но, а не контроль:))&lt;/p&gt;

&lt;p&gt;Например:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Attacker
   |
   v
[Ingress]
   |
   v
[API Pod]
   |
   +------X------&amp;gt; Metadata
          |
      egress deny
      VERIFIED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Здесь control действительно ломает конкретный edge в attack graph. А запись «WAF enabled» без proof — почти ничего не значит.&lt;/p&gt;




&lt;h1&gt;
  
  
  Что значит «влиять на решение» как Senior Engineer
&lt;/h1&gt;

&lt;p&gt;Когда я говорю, что инженер должен влиять на решение, я не имею в виду, что Security единолично решает судьбу релиза. Хорошая модель выглядит так:&lt;/p&gt;

&lt;h3&gt;
  
  
  Security приносит описание\расшифровку
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;exploit mechanics;&lt;/li&gt;
&lt;li&gt;reachability evidence;&lt;/li&gt;
&lt;li&gt;threat intel;&lt;/li&gt;
&lt;li&gt;likely attack path;&lt;/li&gt;
&lt;li&gt;blast radius;&lt;/li&gt;
&lt;li&gt;mitigation options;&lt;/li&gt;
&lt;li&gt;residual risk.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Engineering (DEV) приносит
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;implementation reality;&lt;/li&gt;
&lt;li&gt;release constraints;&lt;/li&gt;
&lt;li&gt;regression risk;&lt;/li&gt;
&lt;li&gt;patch complexity;&lt;/li&gt;
&lt;li&gt;feature dependencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Product / Business owner приносит
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;customer impact;&lt;/li&gt;
&lt;li&gt;contractual commitments;&lt;/li&gt;
&lt;li&gt;revenue/availability context;&lt;/li&gt;
&lt;li&gt;acceptable downtime;&lt;/li&gt;
&lt;li&gt;risk appetite.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Leadership принимает или делегирует decision
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;fix now;&lt;/li&gt;
&lt;li&gt;ship with mitigation;&lt;/li&gt;
&lt;li&gt;feature off;&lt;/li&gt;
&lt;li&gt;rollback;&lt;/li&gt;
&lt;li&gt;emergency maintenance;&lt;/li&gt;
&lt;li&gt;documented exception;&lt;/li&gt;
&lt;li&gt;accept residual risk.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security Engineer здесь — &lt;strong&gt;decision enabler&lt;/strong&gt;, а не человек, который только генерирует "красные тикеты". Короче, хоть грейд у него и ниже, а ЗП меньше чем у Head, без его оценки никуда, без его работы никак!&lt;/p&gt;




&lt;h1&gt;
  
  
  Risk treatment: у вас больше вариантов, чем «patch / no patch»
&lt;/h1&gt;

&lt;p&gt;В NIST risk management обычно встречаются базовые стратегии: mitigate, avoid, transfer, accept. В vulnerability workflow их можно перевести в более инженерный язык.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Treatment&lt;/th&gt;
&lt;th&gt;Пример&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Remediate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;upgrade/fix code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mitigate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;WAF rule, egress block, auth requirement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Contain&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;isolate host, remove Internet exposure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Avoid&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;disable/remove vulnerable feature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reduce privilege&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IAM/RBAC hardening, remove secrets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Detect&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;compensating monitoring/alerting while patch is pending&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rollback&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;return to safe version&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rotate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;invalidate potentially exposed creds&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Accept temporarily&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;documented exception with expiry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Redesign&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;architectural change to eliminate class of risk&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Очень важно: &lt;strong&gt;mitigation должен снижать either likelihood or impact&lt;/strong&gt;. Если он не меняет attack path и не уменьшает последствия — это не mitigation, а чувство безопасности.&lt;/p&gt;




&lt;h1&gt;
  
  
  Кто участвует в assessment
&lt;/h1&gt;

&lt;p&gt;Хороший triage редко делается одним человеком. Это вероятно только для очень не зрелых команд и маленктих компаний\стартапов.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Роль&lt;/th&gt;
&lt;th&gt;Что она знает лучше других&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Product Security / AppSec&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;vulnerability mechanics, code path, abuse case&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Senior Developer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;actual implementation, feature flags, call paths&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Platform / Cloud Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IAM, network, Kubernetes, cloud controls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SRE / Infra&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;deployment reality, topology, operational impact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Service Owner&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;customer/business criticality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Threat Intel / SOC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;exploitation activity, IOCs, campaigns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Security Lead&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;risk appetite, exceptions, cross-team priority&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Зрелость (mature) — это не когда Security знает все и может процитировать на память. Зрелость — когда процесс быстро собирает нужный context у правильных владельцев. Дальше это все коллегиально обсуждается, принимается общее решение основанное на фактах, верстается оно в action plan. И далее раздается на уровни ниже для реализации (Sec, Dev, Ops, QA, etc)&lt;/p&gt;




&lt;h1&gt;
  
  
  Три уровня мышления: Junior, Senior, Lead
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Если вы Junior / кандидат, новичок
&lt;/h2&gt;

&lt;p&gt;Ваша цель — научиться &lt;strong&gt;не верить одному scanner output&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Минимальный набор:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;понять CVE/CWE;&lt;/li&gt;
&lt;li&gt;найти affected version;&lt;/li&gt;
&lt;li&gt;определить asset;&lt;/li&gt;
&lt;li&gt;проверить exposure;&lt;/li&gt;
&lt;li&gt;понять auth/prerequisites;&lt;/li&gt;
&lt;li&gt;проверить PoC/KEV/EPSS;&lt;/li&gt;
&lt;li&gt;поговорить с developer о code path;&lt;/li&gt;
&lt;li&gt;описать impact;&lt;/li&gt;
&lt;li&gt;предложить remediation + mitigation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Если вы это умеете, вы уже мыслите намного ближе к Product Security Engineer, чем человек, который просто сортирует CVEs по CVSS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flbrbhhho1dmjzlt7h7hl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flbrbhhho1dmjzlt7h7hl.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Если вы Senior Engineer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;От вас ждут:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ownership triage;&lt;/li&gt;
&lt;li&gt;attack-path reasoning;&lt;/li&gt;
&lt;li&gt;confidence-based conclusions;&lt;/li&gt;
&lt;li&gt;хорошую коммуникацию с dev/platform;&lt;/li&gt;
&lt;li&gt;business translation;&lt;/li&gt;
&lt;li&gt;viable treatment options;&lt;/li&gt;
&lt;li&gt;verification after fix;&lt;/li&gt;
&lt;li&gt;правильный exception process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Senior не просто говорит «все плохо или все норм». Senior говорит:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;«Вот path, вот evidence, вот impact, вот три способа снизить risk, вот самый дешёвый по времени, вот residual risk.»&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Если вы Tech Lead / Security Lead
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Вопрос уже не только про один finding. Нужно построить систему:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;common triage rubric;&lt;/li&gt;
&lt;li&gt;risk taxonomy;&lt;/li&gt;
&lt;li&gt;ownership model;&lt;/li&gt;
&lt;li&gt;SLAs;&lt;/li&gt;
&lt;li&gt;exception workflow;&lt;/li&gt;
&lt;li&gt;KEV/EPSS enrichment;&lt;/li&gt;
&lt;li&gt;SBOM/VEX integration;&lt;/li&gt;
&lt;li&gt;duplicate suppression;&lt;/li&gt;
&lt;li&gt;re-open triggers;&lt;/li&gt;
&lt;li&gt;metrics качества.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Полезные lead-level metrics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MTTR по &lt;strong&gt;risk class&lt;/strong&gt;, а не просто CVSS;&lt;/li&gt;
&lt;li&gt;age of reachable Critical/High findings;&lt;/li&gt;
&lt;li&gt;KEV exposure time;&lt;/li&gt;
&lt;li&gt;Internet-exposed exploitable findings;&lt;/li&gt;
&lt;li&gt;exceptions past expiry;&lt;/li&gt;
&lt;li&gt;percentage findings with confirmed owner;&lt;/li&gt;
&lt;li&gt;false-positive/duplicate rate;&lt;/li&gt;
&lt;li&gt;percentage SCA findings с reachability evidence;&lt;/li&gt;
&lt;li&gt;time from finding to containment;&lt;/li&gt;
&lt;li&gt;recurrence rate по CWE/root cause.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это уже vulnerability management как &lt;strong&gt;engineering system&lt;/strong&gt;, а не spreadsheet. Вообщем, здесь уже меньше технарьщины и больше про outcomes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Рекомендации для молодого инженера
&lt;/h1&gt;

&lt;p&gt;Если завтра получил finding, не спеши говорить «Critical». Пройдите этот mini-checklist:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ ] Is it real?
[ ] Are we affected?
[ ] Where is it deployed?
[ ] Who can reach it?
[ ] Can input reach the vulnerable sink?
[ ] Is there a PoC / EPSS / KEV signal?
[ ] What identity/privileges does the workload have?
[ ] What can attacker reach next?
[ ] What is the business impact?
[ ] Which controls actually break the path?
[ ] What is the fastest safe treatment?
[ ] Who owns it and when do we recheck?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Если можешь ответить на эти вопросы — то уже есть основа для defensible risk decision. Иначе искать доп материал, парсить и\или качать профессиоанльный скилл.&lt;/p&gt;




&lt;h1&gt;
  
  
  Как ответить на интервью: «How do you prioritize vulnerabilities?»
&lt;/h1&gt;

&lt;p&gt;Короткий хороший ответ на уровне Product Security:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Я не использую CVSS как единственный priority signal. Сначала подтверждаю applicability и deployment context, затем смотрю exposure и reachability до vulnerable function, после этого добавляю exploit intelligence — EPSS, KEV, public PoC и active exploitation. Дальше оцениваю asset criticality, runtime identity, blast radius и business impact, проверяю compensating controls и только потом назначаю remediation priority. Для меня главное — построить attack path и выбрать response, который быстрее всего снижает residual risk: patch, isolation, feature disablement, IAM reduction или временный documented exception.»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Если кандидат отвечает примерно так — я понимаю, что он уже мыслит не scanner’ом, а &lt;strong&gt;risk system&lt;/strong&gt;. И это Mid как минимум, а то и Mid+ or Senior. Больше скилл = больше экспертизы = больше ответственности = больше salary:)&lt;/p&gt;




&lt;h1&gt;
  
  
  Что автоматизировать, а что оставить человеку
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Автоматизация (ИИ в том числе) отлично справляется с:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;inventory;&lt;/li&gt;
&lt;li&gt;SCA/CVE matching;&lt;/li&gt;
&lt;li&gt;CVSS enrichment;&lt;/li&gt;
&lt;li&gt;EPSS;&lt;/li&gt;
&lt;li&gt;KEV flags;&lt;/li&gt;
&lt;li&gt;Internet exposure signals;&lt;/li&gt;
&lt;li&gt;cloud asset metadata;&lt;/li&gt;
&lt;li&gt;basic reachability;&lt;/li&gt;
&lt;li&gt;duplicate correlation;&lt;/li&gt;
&lt;li&gt;SLA routing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Человек всё ещё нужен для:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;business impact;&lt;/li&gt;
&lt;li&gt;strange architecture;&lt;/li&gt;
&lt;li&gt;dynamic code paths;&lt;/li&gt;
&lt;li&gt;exploit-chain reasoning;&lt;/li&gt;
&lt;li&gt;control validation;&lt;/li&gt;
&lt;li&gt;exception justification;&lt;/li&gt;
&lt;li&gt;trade-off между risk и delivery;&lt;/li&gt;
&lt;li&gt;confidence assessment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Поэтому ASPM/CNAPP/SCA evolution идёт в сторону &lt;strong&gt;context correlation&lt;/strong&gt;, но полностью «автоматический risk score» всё ещё нужно воспринимать осторожно.&lt;/p&gt;




&lt;h1&gt;
  
  
  Типовые ошибки\заблуждения, которые могут сэконоить время
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Ошибка 1. CVSS = риск
&lt;/h3&gt;

&lt;p&gt;Нет. Это severity input.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ошибка 2. Package present = vulnerable path reachable
&lt;/h3&gt;

&lt;p&gt;Нет. Нужен applicability/reachability analysis.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ошибка 3. Internal = safe
&lt;/h3&gt;

&lt;p&gt;Нет. Internal crown jewel может быть опаснее edge service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ошибка 4. Есть WAF = mitigated
&lt;/h3&gt;

&lt;p&gt;Только если конкретный rule действительно ломает exploit primitive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ошибка 5. Нет public PoC = можно забыть
&lt;/h3&gt;

&lt;p&gt;Нет. PoC — только один threat signal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ошибка 6. Patch deployed = ticket можно закрыть
&lt;/h3&gt;

&lt;p&gt;Нет. Нужен verification: новая версия, rescan/retest, отсутствие vulnerable artifact/path.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ошибка 7. Risk accepted = навсегда
&lt;/h3&gt;

&lt;p&gt;Нет. Нужны owner, expiry и reopen trigger.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ошибка 8. Security должен всегда требовать fix
&lt;/h3&gt;

&lt;p&gt;Нет. Security должен обеспечить &lt;strong&gt;правильное решение по риску&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Небольшой practical model для команды
&lt;/h1&gt;

&lt;p&gt;Если строишь процесс с нуля (from scratch), я бы начал не с сложного scoring engine, а с пяти обязательных полей:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Exposure
2. Reachability
3. Exploit status
4. Asset/business criticality
5. Verified controls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;И добавил meta-field:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Assessment Confidence: Low / Medium / High
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Почему confidence важен?&lt;/p&gt;

&lt;p&gt;Потому что:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Not reachable, confidence HIGH"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;и&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Not reachable, because scanner didn't find anything, confidence LOW"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ТУТ, как видишь, совершенно разные решения.&lt;/p&gt;




&lt;h1&gt;
  
  
  Финальная модель
&lt;/h1&gt;

&lt;p&gt;Я бы визуализировал современный vulnerability triage так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    +----------------------+
                    | Finding / CVE / CWE  |
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Applicability        |
                    | version/build/runtime|
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Exposure             |
                    | Internet/Auth/Trust  |
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Reachability         |
                    | route/call/taint     |
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Exploitability       |
                    | CVSS/EPSS/KEV/PoC    |
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Identity + Blast     |
                    | Radius + Crown Jewels|
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Business Impact      |
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Verified Controls    |
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Risk / Priority      |
                    | P0 / P1 / P2 / P3    |
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Treatment            |
                    | Fix/Mitigate/Accept  |
                    +----------+-----------+
                               |
                               v
                    +----------------------+
                    | Verify + Reassess    |
                    +----------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;И здесь CVSS остаётся важным. Просто он больше не сидит на вершине трона. Он занимает своё правильное место: &lt;strong&gt;один из входных signals в инженерную систему принятия решений&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpw5s82jx8sahesxgykqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpw5s82jx8sahesxgykqa.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Главное
&lt;/h1&gt;

&lt;p&gt;Когда я был инженером, моя задача не сводилась к тому, чтобы найти vulnerability и назвать её Critical.&lt;/p&gt;

&lt;p&gt;Моя задача была &lt;strong&gt;сделать проблему понятной и помочь команде принять правильное решение&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Иногда правильное решение — emergency patch.&lt;br&gt;
Иногда — выключить feature за 15 минут и patch сделать завтра.&lt;br&gt;
Иногда — закрыть Internet route.&lt;br&gt;
Иногда — урезать IAM и разорвать exploit chain.&lt;br&gt;
Иногда — задокументировать, что vulnerable code path в нашем продукте реально недостижим, и спокойно исправить dependency в следующем release.&lt;/p&gt;

&lt;p&gt;Но любое из этих решений должно быть основано на evidence, а не на ощущении.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Не спрашивай только: «Какой CVSS?»&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Спрашивай: «Это применимо к нам? Может ли attacker добраться до vulnerable path? Насколько вероятна эксплуатация? Что он получит после первого шага? Какой blast radius? Что потеряет бизнес? И как быстрее всего разорвать attack path?»&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Вот в этот момент vulnerability management перестаёт быть сортировкой красных строк в dashboard и становится настоящей &lt;strong&gt;Product Security engineering discipline&lt;/strong&gt;.&lt;/p&gt;


&lt;h1&gt;
  
  
  Бесплатный toolbox: куда я захожу во время vulnerability triage
&lt;/h1&gt;

&lt;p&gt;Ни один внешний портал не знает вашу architecture, identities, trust boundaries и business impact. Но несколько бесплатных источников могут очень быстро закрыть часть fact-finding.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;Для чего я бы использовал&lt;/th&gt;
&lt;th&gt;Что помнить&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://www.first.org/epss/" rel="noopener noreferrer"&gt;FIRST EPSS&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Probability + percentile, history, API и ежедневный CSV. Отличный enrichment для большого backlog.&lt;/td&gt;
&lt;td&gt;Это forecast exploitation, а не ваш полный risk score.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;CISA KEV&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Быстро проверить, есть ли подтверждённая exploitation in the wild.&lt;/td&gt;
&lt;td&gt;KEV — сильный threat signal, но всё равно нужно подтвердить applicability к вашему продукту.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://www.rapid7.com/db/" rel="noopener noreferrer"&gt;Rapid7 Vulnerability &amp;amp; Exploit Database&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Очень удобный визуальный CVE browser: CVSS v3/v4, EPSS, &lt;code&gt;Exploited in the Wild&lt;/code&gt;, наличие Metasploit module и emergent-threat research.&lt;/td&gt;
&lt;td&gt;Хорош для быстрого analyst view; final verdict всё равно сверяйте с vendor advisory и вашим environment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://osv.dev/" rel="noopener noreferrer"&gt;OSV.dev&lt;/a&gt; + &lt;a href="https://google.github.io/osv-scanner/" rel="noopener noreferrer"&gt;OSV-Scanner&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open-source dependencies, lockfiles/SBOM/container images, fixed versions, HTML/JSON/SARIF; для поддерживаемых языков есть call analysis.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;called=false&lt;/code&gt; или отсутствие найденного path — evidence, а не абсолютное доказательство безопасности. Dynamic loading/reflection всё ещё важны.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;a href="https://github.com/projectdiscovery/cvemap" rel="noopener noreferrer"&gt;ProjectDiscovery CVEMap&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Быстрый CLI/enrichment: CVSS, EPSS, KEV, PoC, Nuclei coverage, age и фильтрация; удобно для shell/JSON automation.&lt;/td&gt;
&lt;td&gt;Это агрегатор. Для critical decision проверяйте первоисточники и vendor advisory.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;И я всё равно держу рядом &lt;strong&gt;&lt;a href="https://nvd.nist.gov/" rel="noopener noreferrer"&gt;NVD&lt;/a&gt;&lt;/strong&gt; как хороший baseline для CVE/CVSS/CWE/CPE и references. Сам NVD отдельно подчёркивает, что CVSS — это severity, а не risk.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmc01k4fsarso9e828csq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmc01k4fsarso9e828csq.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Zero-budget triage в Excel / Google Sheets
&lt;/h2&gt;

&lt;p&gt;Если ASPM/VM platform пока нет, можно собрать surprisingly useful workflow буквально из CSV и нескольких enrichment sources.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Выгрузить findings из SCA/VM/scanner в CSV.&lt;/li&gt;
&lt;li&gt;Подтянуть EPSS probability + percentile из FIRST API/CSV.&lt;/li&gt;
&lt;li&gt;Добавить флаг KEV.&lt;/li&gt;
&lt;li&gt;Заполнить руками или из asset inventory локальный context.&lt;/li&gt;
&lt;li&gt;Фильтровать backlog уже не только по CVSS.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Я бы использовал такие колонки:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CVE / Finding ID
Asset / Service
Environment
Owner
CVSS + Vector
EPSS Probability
EPSS Percentile
EPSS Checked At
KEV Y/N
Public PoC / Exploit Y/N
Internet Exposure
Authentication Required
Reachability
Reachability Evidence
Runtime Identity / Privileges
Asset Criticality
Blast Radius
Business Impact
Compensating Controls
Assessment Confidence
Risk Priority
Remediation Effort
Change Risk
Treatment
SLA / Due Date
Exception Expiry
Reopen Triggers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;FIRST публикует EPSS как API и daily CSV, поэтому его легко &lt;code&gt;JOIN&lt;/code&gt;-нуть по CVE даже без коммерческого tooling. Главное — не пытаться превратить spreadsheet в магический formula engine: &lt;strong&gt;таблица должна сохранять evidence и помогать принять решение, а не скрывать reasoning за непрозрачным score&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fflo8wabyuwptl3nmnp6a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fflo8wabyuwptl3nmnp6a.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  References and further reading
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;FIRST — &lt;strong&gt;CVSS v4.0 User Guide&lt;/strong&gt;
&lt;a href="https://www.first.org/cvss/v4.0/user-guide" rel="noopener noreferrer"&gt;https://www.first.org/cvss/v4.0/user-guide&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FIRST — &lt;strong&gt;CVSS v4.0 Specification&lt;/strong&gt;
&lt;a href="https://www.first.org/cvss/v4.0/specification-document" rel="noopener noreferrer"&gt;https://www.first.org/cvss/v4.0/specification-document&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FIRST — &lt;strong&gt;Exploit Prediction Scoring System (EPSS)&lt;/strong&gt;
&lt;a href="https://www.first.org/epss/" rel="noopener noreferrer"&gt;https://www.first.org/epss/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FIRST — &lt;strong&gt;EPSS FAQ&lt;/strong&gt;
&lt;a href="https://www.first.org/epss/faq" rel="noopener noreferrer"&gt;https://www.first.org/epss/faq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CISA — &lt;strong&gt;Known Exploited Vulnerabilities Catalog&lt;/strong&gt;
&lt;a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;https://www.cisa.gov/known-exploited-vulnerabilities-catalog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CISA — &lt;strong&gt;Stakeholder-Specific Vulnerability Categorization (SSVC)&lt;/strong&gt;
&lt;a href="https://www.cisa.gov/stakeholder-specific-vulnerability-categorization-ssvc" rel="noopener noreferrer"&gt;https://www.cisa.gov/stakeholder-specific-vulnerability-categorization-ssvc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CISA — &lt;strong&gt;SBOM / VEX Resources Library&lt;/strong&gt;
&lt;a href="https://www.cisa.gov/topics/cyber-threats-and-advisories/sbom/sbomresourceslibrary" rel="noopener noreferrer"&gt;https://www.cisa.gov/topics/cyber-threats-and-advisories/sbom/sbomresourceslibrary&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CycloneDX — &lt;strong&gt;Vulnerability Exploitability eXchange (VEX)&lt;/strong&gt;
&lt;a href="https://cyclonedx.org/capabilities/vex/" rel="noopener noreferrer"&gt;https://cyclonedx.org/capabilities/vex/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST SP 800-40 Rev. 4 — &lt;strong&gt;Guide to Enterprise Patch Management Planning&lt;/strong&gt;
&lt;a href="https://csrc.nist.gov/pubs/sp/800/40/r4/final" rel="noopener noreferrer"&gt;https://csrc.nist.gov/pubs/sp/800/40/r4/final&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST IR 8179 — &lt;strong&gt;Criticality Analysis Process Model&lt;/strong&gt;
&lt;a href="https://csrc.nist.gov/pubs/ir/8179/final" rel="noopener noreferrer"&gt;https://csrc.nist.gov/pubs/ir/8179/final&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST IR 8286B — &lt;strong&gt;Prioritizing Cybersecurity Risk for Enterprise Risk Management&lt;/strong&gt;
&lt;a href="https://www.nist.gov/publications/prioritizing-cybersecurity-risk-enterprise-risk-management-0" rel="noopener noreferrer"&gt;https://www.nist.gov/publications/prioritizing-cybersecurity-risk-enterprise-risk-management-0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP — &lt;strong&gt;Risk Rating Methodology&lt;/strong&gt;
&lt;a href="https://owasp.org/www-community/OWASP_Risk_Rating_Methodology" rel="noopener noreferrer"&gt;https://owasp.org/www-community/OWASP_Risk_Rating_Methodology&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP — &lt;strong&gt;Vulnerable Dependency Management Cheat Sheet&lt;/strong&gt;   &lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Vulnerable_Dependency_Management_Cheat_Sheet.html" rel="noopener noreferrer"&gt;https://cheatsheetseries.owasp.org/cheatsheets/Vulnerable_Dependency_Management_Cheat_Sheet.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google — &lt;strong&gt;OSV-Scanner Call Analysis&lt;/strong&gt;
&lt;a href="https://google.github.io/osv-scanner/output/" rel="noopener noreferrer"&gt;https://google.github.io/osv-scanner/output/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP dep-scan — &lt;strong&gt;Reachability-aware dependency analysis&lt;/strong&gt;
&lt;a href="https://github.com/owasp-dep-scan/dep-scan" rel="noopener noreferrer"&gt;https://github.com/owasp-dep-scan/dep-scan&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;JetBrains — &lt;strong&gt;CVE-2023-42793 TeamCity security issue&lt;/strong&gt;
&lt;a href="https://blog.jetbrains.com/teamcity/2023/09/critical-security-issue-affecting-teamcity-on-premises-update-to-2023-05-4-now/" rel="noopener noreferrer"&gt;https://blog.jetbrains.com/teamcity/2023/09/critical-security-issue-affecting-teamcity-on-premises-update-to-2023-05-4-now/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;JetBrains — &lt;strong&gt;CVE-2023-42793 exploitation update&lt;/strong&gt;
&lt;a href="https://blog.jetbrains.com/teamcity/2023/10/cve-2023-42793-vulnerability-in-teamcity-october-18-2023-update/" rel="noopener noreferrer"&gt;https://blog.jetbrains.com/teamcity/2023/10/cve-2023-42793-vulnerability-in-teamcity-october-18-2023-update/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Jenkins — &lt;strong&gt;Security Advisory 2024-01-24 / CVE-2024-23897&lt;/strong&gt;
&lt;a href="https://www.jenkins.io/security/advisory/2024-01-24/" rel="noopener noreferrer"&gt;https://www.jenkins.io/security/advisory/2024-01-24/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Red Hat — &lt;strong&gt;CVE-2024-3094 / XZ Utils alert&lt;/strong&gt;
&lt;a href="https://www.redhat.com/en/blog/urgent-security-alert-fedora-40-and-rawhide-users" rel="noopener noreferrer"&gt;https://www.redhat.com/en/blog/urgent-security-alert-fedora-40-and-rawhide-users&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FIRST — &lt;strong&gt;EPSS Get the Data (API + daily CSV)&lt;/strong&gt;
&lt;a href="https://www.first.org/epss/data" rel="noopener noreferrer"&gt;https://www.first.org/epss/data&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rapid7 — &lt;strong&gt;Vulnerability &amp;amp; Exploit Database&lt;/strong&gt;
&lt;a href="https://www.rapid7.com/db/" rel="noopener noreferrer"&gt;https://www.rapid7.com/db/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ProjectDiscovery — &lt;strong&gt;CVEMap&lt;/strong&gt;
&lt;a href="https://github.com/projectdiscovery/cvemap" rel="noopener noreferrer"&gt;https://github.com/projectdiscovery/cvemap&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST — &lt;strong&gt;National Vulnerability Database (NVD)&lt;/strong&gt;
&lt;a href="https://nvd.nist.gov/" rel="noopener noreferrer"&gt;https://nvd.nist.gov/&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>bug</category>
      <category>cybersecurity</category>
      <category>infosec</category>
      <category>security</category>
    </item>
    <item>
      <title>Software Integrity глазами Security Director или нескромный вопрос о том как искать backdoors и недекларированные возможности в коммерческом ПО</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Tue, 27 Oct 2026 05:00:00 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/software-integrity-ghlazami-security-director-ili-nieskromnyi-vopros-o-tom-kak-iskat-backdoors-i-4laf</link>
      <guid>https://dev.to/ivan-piskunov/software-integrity-ghlazami-security-director-ili-nieskromnyi-vopros-o-tom-kak-iskat-backdoors-i-4laf</guid>
      <description>&lt;p&gt;&lt;em&gt;Software Integrity глазами Security Director ИЛИ размышления о том как искать backdoors и недекларированные возможности (НДВ в терминологии ФСБ и ФСТЭК РФ), проверять source → build → binary → update chain и снижать риск скрытого поведения в критичном коммерческом ПО&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Проблема гораздо старше DevSecOps и серьезнее чем просто AppSec
&lt;/h2&gt;

&lt;p&gt;Во времена, когда software supply chain ещё не называли supply chain (лет так 15 назад, а то и более), государства уже задавались тем же вопросом: &lt;strong&gt;можно ли доверять устройству, если его спроектировал, изготовил или обновляет кто-то другой?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk34wacitz0j4ziyfvw9u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk34wacitz0j4ziyfvw9u.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Хороший исторический пример — швейцарская &lt;strong&gt;Crypto AG&lt;/strong&gt;. Расследование, опубликованное в 2020 году, показало, что компания десятилетиями поставляла криптографическое оборудование множеству государств, при этом CIA и западногерманская разведка тайно контролировали производителя и могли использовать ослабленные системы для чтения защищённых коммуникаций. Документы указывали, что оборудование Crypto AG использовали более 120 стран. &lt;a href="https://www.washingtonpost.com/graphics/2020/world/national-security/cia-crypto-encryption-machines-espionage/" rel="noopener noreferrer"&gt;The Washington Post — The intelligence coup of the century&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Это не AppSec в современном смысле термина и тем более не DevSecOps. Там не было pull request, SAST gate или SBOM. Однако, внимание, фундаментальная проблема была той же:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Trust in the supplier becomes trust in the product.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;В 1984 году Ken Thompson в знаменитой лекции &lt;em&gt;Reflections on Trusting Trust&lt;/em&gt; показал ещё более неприятную версию той же идеи: даже чистый source code не гарантирует чистый binary, если компилятор или toolchain уже скомпрометирован. Его короткая фраза до сих пор звучит современно: &lt;strong&gt;“You can't trust code that you did not totally create yourself.”&lt;/strong&gt; &lt;a href="https://doi.org/10.1145/358198.358210" rel="noopener noreferrer"&gt;ACM — Reflections on Trusting Trust&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;А проблема аппаратного доверия никуда не исчезла после холодной войны (70-е и 80-е годы технологического противостояния США и Великого СССР). DARPA, например, запускала программу &lt;strong&gt;TRUST in Integrated Circuits&lt;/strong&gt; именно для разработки методов обнаружения malicious circuits в микросхемах, спроектированных или произведённых в недоверенной среде. &lt;a href="https://www.darpa.mil/research/programs/trusted-integrated-circuits" rel="noopener noreferrer"&gt;DARPA — TRUST&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Сегодня тот же вопрос пришёл в коммерческий Product Security.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Возьмём не военный объект, а обычный &lt;strong&gt;enterprise product:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;core banking platform;&lt;/li&gt;
&lt;li&gt;payment switch;&lt;/li&gt;
&lt;li&gt;electronic trading platform;&lt;/li&gt;
&lt;li&gt;database engine;&lt;/li&gt;
&lt;li&gt;IAM/IdP;&lt;/li&gt;
&lt;li&gt;HSM management software;&lt;/li&gt;
&lt;li&gt;EDR или network appliance;&lt;/li&gt;
&lt;li&gt;industrial control software;&lt;/li&gt;
&lt;li&gt;SaaS agent с privileged access на тысячи endpoints.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Такие продукты работают с PII, ключами, платёжными инструкциями, order books, privileged credentials и customer data. Они автоматически обновляются, получают remote configuration, загружают plugins, телеметрию и policy. И очень часто один vendor binary получает доверие на тысячи или миллионы систем.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Обычный Product Security задаёт знакомый вопрос:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Можно ли похэкать наш продукт из-за ошибки\бага?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для этого у нас есть SAST, DAST, SCA, secret scanning, threat modeling, fuzzing, IaC scanning, container security и API testing. Все ОК! Да!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Но Software Integrity задаёт другой вопрос:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;А что если опасное поведение — не ошибка? Что если оно было добавлено намеренно или появилось в source, dependency, build process, release artifact, firmware или update channel?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;NIST SP 800-161 Rev. 1 формулирует этот риск буквально как возможность того, что приобретаемые продукты и сервисы могут содержать &lt;strong&gt;“potentially malicious functionality.”&lt;/strong&gt; &lt;a href="https://csrc.nist.gov/pubs/sp/800/161/r1/upd1/final" rel="noopener noreferrer"&gt;NIST SP 800-161 Rev. 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Именно поэтому я рассматриваю эту задачу не как «ещё один scanner», а как отдельный, ВНИМАНИЕ, отдельный assurance track внутри трека Product Security:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SOFTWARE INTEGRITY &amp;amp; MALICIOUS FUNCTIONALITY ASSURANCE&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для меня он должен отвечать на четыре вопроса:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Что продукту вообще разрешено делать?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Соответствует ли проверенный source тому artifact, который реально получил клиент?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Что shipping binary действительно делает во время выполнения?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Что произойдёт, если vendor, update channel или control plane окажется hostile?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Если ответы на эти вопросы доказуемы, разговор о backdoors (НДВ в терминологии ФСТЭК) перестаёт быть конспирологией и становится обычной инженерией доверия.&lt;/p&gt;

&lt;h2&gt;
  
  
  Что я называю backdoor или недекларированной возможностью
&lt;/h2&gt;

&lt;p&gt;Терминология здесь неидеальна. Backdoor обычно означает механизм, позволяющий обойти нормальные security controls или получить скрытый доступ. Но реальный класс проблем шире.&lt;/p&gt;

&lt;p&gt;MITRE CWE использует, например:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CWE-506 — Embedded Malicious Code&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CWE-510 — Trapdoor&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CWE-506 описывает продукт, содержащий код, который выглядит вредоносным по своей природе. &lt;a href="https://cwe.mitre.org/data/definitions/506.html" rel="noopener noreferrer"&gt;MITRE CWE-506&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;На практике я разделяю потенциально недекларированное поведение как минимум на несколько типов. Смотрим внимательно! Товарищ майор на экзамене будет спрашивать :)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Тип&lt;/th&gt;
&lt;th&gt;Пример&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hidden authentication bypass&lt;/td&gt;
&lt;td&gt;специальный token/header/credential открывает административный доступ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logic bomb&lt;/td&gt;
&lt;td&gt;функция активируется по дате, hostname, license ID или другому триггеру&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remote kill switch&lt;/td&gt;
&lt;td&gt;удалённая конфигурация может отключить критическую функцию&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Undocumented admin/debug interface&lt;/td&gt;
&lt;td&gt;скрытый API, port, command или maintenance account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Covert data exfiltration&lt;/td&gt;
&lt;td&gt;данные отправляются на endpoint, которого нет в архитектуре продукта&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build-time injection&lt;/td&gt;
&lt;td&gt;source repository чистый, payload добавляется при сборке&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Malicious dependency&lt;/td&gt;
&lt;td&gt;вредоносная логика приходит из npm/PyPI/Maven/Go module и т.д.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Binary-only modification&lt;/td&gt;
&lt;td&gt;shipping artifact содержит код, отсутствующий в проверенном source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Malicious update&lt;/td&gt;
&lt;td&gt;легитимный update channel доставляет вредоносную версию&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firmware implant&lt;/td&gt;
&lt;td&gt;поведение находится ниже OS/app layer: UEFI, BMC, controller firmware и т.п.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Важно отделять &lt;strong&gt;намеренный backdoor&lt;/strong&gt; от просто плохого дизайна. Например, undocumented maintenance endpoint может быть создан инженером для поддержки и не иметь злого умысла. Но с точки зрения Product Security результат может быть практически тем же: появляется привилегированный путь, который не учитывался в threat model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Intent сложнее доказать, чем capability.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Поэтому на практике я предпочитаю начинать не с вопроса «кто это сделал и зачем?», а с более инженерного:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Какие security-sensitive capabilities существуют в продукте, какие из них задекларированы и какие доказательства у нас есть, что shipping artifact соответствует ожидаемому поведению?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Почему классика в виде SAST и DAST не решают эту задачу
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;SAST отлично ищет классы ошибок:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;injection;&lt;/li&gt;
&lt;li&gt;path traversal;&lt;/li&gt;
&lt;li&gt;insecure deserialization;&lt;/li&gt;
&lt;li&gt;memory corruption;&lt;/li&gt;
&lt;li&gt;SSRF;&lt;/li&gt;
&lt;li&gt;broken crypto;&lt;/li&gt;
&lt;li&gt;unsafe API usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Но backdoor может быть &lt;strong&gt;идеально корректным кодом&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Условный пример:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;normal_policy_allows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;feature_flags&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;emergency_support_mode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; \
       &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-Support-Token&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;SECRET_VALUE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Здесь может не быть ни SQL injection, ни buffer overflow. С точки зрения компилятора и SAST всё прекрасно. Проблема в другом: &lt;strong&gt;должна ли такая capability вообще существовать?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DAST сталкивается с другой проблемой — &lt;strong&gt;trigger space&lt;/strong&gt;. Если скрытая функция активируется только когда одновременно выполняются условия:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;date &amp;gt; X
AND region == Y
AND hostname hash == Z
AND remote configuration contains flag Q
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;обычный dynamic scan может никогда не попасть в нужное состояние. Есть ещё три распространённых заблуждения.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code signing не означает, что код безопасен
&lt;/h3&gt;

&lt;p&gt;Подпись отвечает примерно на вопрос:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Этот artifact действительно подписан ожидаемой identity».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Она &lt;strong&gt;не отвечает&lt;/strong&gt; на вопрос:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Эта identity не подписала вредоносный artifact».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Authenticity и benignness — разные свойства.&lt;/p&gt;

&lt;h3&gt;
  
  
  SBOM не доказывает отсутствие backdoor
&lt;/h3&gt;

&lt;p&gt;SBOM отвечает:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Что входит в продукт?»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Это критически важно, но SBOM сам по себе не говорит:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Поведение всех этих компонентов безопасно и соответствует спецификации».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Проверка source не доказывает, что именно этот source попал клиенту
&lt;/h3&gt;

&lt;p&gt;Между Git commit и &lt;code&gt;product-7.4.1.tar.gz&lt;/code&gt; находятся:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI runner;&lt;/li&gt;
&lt;li&gt;compiler;&lt;/li&gt;
&lt;li&gt;build scripts;&lt;/li&gt;
&lt;li&gt;package manager;&lt;/li&gt;
&lt;li&gt;artifact repository;&lt;/li&gt;
&lt;li&gt;signing system;&lt;/li&gt;
&lt;li&gt;release automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;И любой из этих элементов может стать точкой внедрения.&lt;/p&gt;




&lt;h1&gt;
  
  
  Семь кейсов: одна проблема, разные точки внедрения
&lt;/h1&gt;

&lt;p&gt;Теория полезна, но реальные incident patterns намного лучше объясняют, зачем нужен отдельный Software Integrity track.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Crypto AG: доверие к поставщику как часть модели угроз
&lt;/h2&gt;

&lt;p&gt;Crypto AG — исторический, но очень чистый пример. Пользователь покупал security product именно потому, что доверял его криптографической функции. Если сам поставщик или его design process находится под чужим контролем, обычная проверка эксплуатации продукта не отвечает на главный вопрос: &lt;strong&gt;соответствует ли заявленная security property реальной?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Урок: &lt;strong&gt;vendor trust — это security dependency.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. M.E.Doc / NotPetya: финансовое приложение как канал доставки
&lt;/h2&gt;

&lt;p&gt;В июне 2017 года Microsoft сообщила, что первоначальная доставка Petya/NotPetya шла через update service украинского финансового приложения &lt;strong&gt;M.E.Doc&lt;/strong&gt;. &lt;a href="https://www.microsoft.com/en-us/msrc/blog/2017/06/update-on-petya-malware-attacks/" rel="noopener noreferrer"&gt;Microsoft MSRC — Update on Petya malware attacks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Для банковского или финансового threat model это особенно наглядно: бухгалтерское/финансовое ПО само по себе может быть trusted business dependency, но его update mechanism становится privileged distribution channel внутри customer network.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Урок: &lt;strong&gt;secure application + insecure update chain = insecure product.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  3. CCleaner: valid signature не означает benign artifact
&lt;/h2&gt;

&lt;p&gt;В 2017 году Cisco Talos обнаружила, что &lt;strong&gt;легитимно подписанный CCleaner 5.33&lt;/strong&gt;, распространявшийся с официальных download servers, содержал multi-stage malware payload. &lt;a href="https://blog.talosintelligence.com/avast-distributes-malware/" rel="noopener noreferrer"&gt;Cisco Talos — CCleanup: A Vast Number of Machines at Risk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Это очень полезный контрпример для любого release process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;valid signature
      !=
benign software
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Code signing доказывает identity и integrity после подписи. Оно не доказывает, что подписывающая сторона не подписала уже скомпрометированный artifact.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. SolarWinds Orion: trusted update масштабирует компрометацию
&lt;/h2&gt;

&lt;p&gt;В 2020 году CISA квалифицировала инцидент SolarWinds как software supply-chain compromise. В SEC filing SolarWinds указывала, что до &lt;strong&gt;18 000 клиентов&lt;/strong&gt; могли скачать затронутые версии Orion, хотя число организаций, реально скомпрометированных через SUNBURST, было существенно меньше. &lt;a href="https://www.cisa.gov/news-events/alerts/2020/12/13/active-exploitation-solarwinds-software" rel="noopener noreferrer"&gt;CISA&lt;/a&gt; · &lt;a href="https://www.sec.gov/Archives/edgar/data/1739942/000173994221000080/swi-20210331.htm" rel="noopener noreferrer"&gt;SolarWinds SEC filing&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Урок: &lt;strong&gt;legitimate distribution channel масштабирует не только fixes, но и compromise.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  5. XZ Utils: Git repository — ещё не весь release source
&lt;/h2&gt;

&lt;p&gt;XZ стал почти идеальным учебным кейсом. Andres Freund вышел на проблему не потому, что scanner написал &lt;em&gt;backdoor detected&lt;/em&gt;, а потому что увидел странные runtime symptoms: необычную загрузку CPU при SSH login и ошибки Valgrind. В исходном сообщении он отдельно отметил, что часть backdoor chain находилась &lt;strong&gt;только в distributed tarballs&lt;/strong&gt; и отсутствовала в Git tree. &lt;a href="https://www.openwall.com/lists/oss-security/2024/03/29/4" rel="noopener noreferrer"&gt;oss-security — Andres Freund, 29 March 2024&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Уроки сразу два:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;review Git ≠ verify release artifact&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;иногда performance anomaly или behavioral diff обнаруживает то, чего не нашёл static gate.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  6. X_TRADER → 3CX: supply-chain compromise может быть каскадным
&lt;/h2&gt;

&lt;p&gt;В 2023 году Mandiant описала редкий и очень показательный сценарий: первоначальная компрометация 3CX началась с trojanized &lt;strong&gt;X_TRADER&lt;/strong&gt;, software package компании Trading Technologies. Затем attackers получили доступ в 3CX и скомпрометировали уже её Windows и macOS build environments, после чего malicious code распространялся через 3CX Desktop App. Mandiant назвала это первым известным ей случаем, когда одна software supply-chain compromise привела к другой. &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/3cx-software-supply-chain-compromise" rel="noopener noreferrer"&gt;Mandiant — 3CX Software Supply Chain Compromise&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Особенно неприятная деталь: 3CX сообщала, что X_TRADER installer был &lt;strong&gt;digitally signed valid certificate&lt;/strong&gt; и загружен с сайта vendor. &lt;a href="https://www.3cx.com/blog/news/mandiant-security-update2/" rel="noopener noreferrer"&gt;3CX incident update&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Для electronic trading / fintech threat model это почти готовый tabletop scenario.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Juniper ScreenOS: unauthorized code внутри security product (е#ть  дела!)
&lt;/h2&gt;

&lt;p&gt;В 2015 году Juniper сообщила, что internal code review обнаружил &lt;strong&gt;“unauthorized code in ScreenOS”&lt;/strong&gt;, которое могло позволить knowledgeable attacker получить administrative access к NetScreen devices и расшифровывать VPN traffic. &lt;a href="https://community.juniper.net/browse/blogs/blogviewer?BlogKey=e0a62f51-c793-4e7e-98e8-c5ac081f2c18" rel="noopener noreferrer"&gt;Juniper — Important Announcement about ScreenOS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Здесь особенно важен класс продукта: security appliance сам является trust anchor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzbfgs38ainlh57oywl7b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzbfgs38ainlh57oywl7b.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Все эти случаи разные:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Crypto AG     -&amp;gt; product design / supplier trust
M.E.Doc       -&amp;gt; update channel
CCleaner      -&amp;gt; signed release artifact
SolarWinds    -&amp;gt; build + trusted distribution
XZ            -&amp;gt; release tarball / build-time chain
X_TRADER/3CX  -&amp;gt; cascading supplier + build compromise
ScreenOS      -&amp;gt; unauthorized code in security product
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Но общий вопрос один:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Какие доказательства показывают, что shipped product — именно тот продукт, который мы думаем, что проверили?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Threat model для критичного коммерческого продукта
&lt;/h1&gt;

&lt;p&gt;Возьмём условную &lt;strong&gt;банковскую платформу / платёжный processing system / electronic trading platform&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;У неё есть:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;customer PII;&lt;/li&gt;
&lt;li&gt;transaction data;&lt;/li&gt;
&lt;li&gt;credentials;&lt;/li&gt;
&lt;li&gt;API keys;&lt;/li&gt;
&lt;li&gt;signing keys;&lt;/li&gt;
&lt;li&gt;balances;&lt;/li&gt;
&lt;li&gt;order books;&lt;/li&gt;
&lt;li&gt;payment instructions;&lt;/li&gt;
&lt;li&gt;audit trail;&lt;/li&gt;
&lt;li&gt;privileged administrative functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Классический AppSec рассматривает внешнего attacker. Но для backdoor assurance threat model должен быть шире.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjsthr35wp7zhtydhgk7u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjsthr35wp7zhtydhgk7u.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Potential adversaries
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Malicious insider&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compromised developer account&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compromised OSS maintainer&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compromised CI/CD&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compromised artifact repository&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compromised signing infrastructure&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compromised software supplier&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State-sponsored actor&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Malicious or coerced vendor&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compromised firmware/hardware supplier&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;И attack surface выглядит уже не так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet -&amp;gt; Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;а так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
   |
Source repository
   |
Dependencies
   |
Build system
   |
Compiler / toolchain
   |
Artifact repository
   |
Signing service
   |
Update service
   |
Customer environment
   |
Runtime control plane
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Product Security должен контролировать всю цепочку, а не только application code.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Два разных assurance-сценария: мы вендор или мы покупатель\юзер?
&lt;/h1&gt;

&lt;p&gt;Здесь часто смешивают две очень разные задачи.&lt;/p&gt;

&lt;h3&gt;
  
  
  Если продукт разрабатываем мы
&lt;/h3&gt;

&lt;p&gt;У нас потенциально есть доступ к:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source
code review history
CI/CD
compiler/toolchain
build workers
artifact repository
signing service
release metadata
runtime telemetry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Поэтому мы можем строить &lt;strong&gt;source-to-artifact evidence chain&lt;/strong&gt; и достаточно глубоко проверять происхождение релиза.&lt;/p&gt;

&lt;h3&gt;
  
  
  Если мы покупаем closed-source enterprise software
&lt;/h3&gt;

&lt;p&gt;У нас может быть только:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;installer / container / appliance
vendor documentation
SBOM
signature
network traffic
runtime behavior
contractual evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;В этом случае цель меняется. Мы не можем честно сказать «мы доказали отсутствие backdoor». &lt;strong&gt;Зато можем:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;проверить provenance и vendor security process;&lt;/li&gt;
&lt;li&gt;анализировать финальный binary/package;&lt;/li&gt;
&lt;li&gt;запускать продукт в sandbox/lab;&lt;/li&gt;
&lt;li&gt;строить network и syscall baseline;&lt;/li&gt;
&lt;li&gt;ограничить outbound connectivity;&lt;/li&gt;
&lt;li&gt;staged-rollout обновления;&lt;/li&gt;
&lt;li&gt;фиксировать hashes и release deltas;&lt;/li&gt;
&lt;li&gt;отключить необязательные vendor control-plane connections;&lt;/li&gt;
&lt;li&gt;получить договорные права на audit / incident notification / SBOM / vulnerability disclosure;&lt;/li&gt;
&lt;li&gt;минимизировать blast radius, если наше доверие ошибочно.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Для Security Director это принципиальное различие:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Producer assurance пытается доказать происхождение. Buyer assurance управляет остаточным доверием.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Именно поэтому я бы не писал спекулятивные фразы вроде «а вдруг в Oracle или Microsoft есть backdoor». Без доказательств это просто предположение.&lt;/p&gt;

&lt;p&gt;Правильная постановка гораздо звучит сильнее:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Какой уровень доверия получает любой closed-source database/OS/security product, какие privileged capabilities ему доступны и какие независимые evidence мы можем получить от vendor и из собственного наблюдения?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Эта формулировка одинаково применима к любому поставщику.&lt;/p&gt;

&lt;h1&gt;
  
  
  Контроль №1: определить, что продукту вообще разрешено уметь
&lt;/h1&gt;

&lt;p&gt;Это, на мой взгляд, один из самых недооценённых controls. Перед тем как искать «плохой код», нужно определить &lt;strong&gt;allowed behavior&lt;/strong&gt;.&lt;br&gt;
Например, для database engine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MAY:
- listen on configured database ports
- read database files
- perform configured replication
- connect to explicitly configured backup endpoint

MUST NOT:
- spawn arbitrary shell
- connect to arbitrary Internet hosts
- read SSH private keys
- enable hidden administrative users
- download executable code at runtime
- disable audit logging through remote configuration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Это можно назвать:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;capability baseline;&lt;/li&gt;
&lt;li&gt;security invariants;&lt;/li&gt;
&lt;li&gt;negative requirements;&lt;/li&gt;
&lt;li&gt;prohibited behavior specification.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Без этого security team часто видит опасную capability, но не может ответить:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Это bug или feature?»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для critical product я бы делал &lt;strong&gt;Declared Security-Sensitive Capabilities Register&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Пример:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Expected&lt;/th&gt;
&lt;th&gt;Owner&lt;/th&gt;
&lt;th&gt;Justification&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Outbound Internet&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Architecture&lt;/td&gt;
&lt;td&gt;Product works offline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Child process execution&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Platform&lt;/td&gt;
&lt;td&gt;No operational need&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dynamic library loading&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Core&lt;/td&gt;
&lt;td&gt;Plugins only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remote configuration&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;SRE&lt;/td&gt;
&lt;td&gt;Signed config only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debug interface&lt;/td&gt;
&lt;td&gt;No in production&lt;/td&gt;
&lt;td&gt;Engineering&lt;/td&gt;
&lt;td&gt;Dev builds only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auto-update&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Release&lt;/td&gt;
&lt;td&gt;TUF-protected&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;После этого многие «backdoor-like» возможности становятся формально проверяемыми.&lt;/p&gt;




&lt;h1&gt;
  
  
  Контроль №2: source-code assurance, ориентированный на capability
&lt;/h1&gt;

&lt;p&gt;Обычные CodeQL/Semgrep rules стоит дополнить custom queries.&lt;/p&gt;

&lt;p&gt;Я бы искал:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;process creation
shell execution
dynamic code loading
reflection / eval
raw sockets
new outbound HTTP clients
hardcoded IP addresses
hardcoded credentials
hidden feature flags
alternate authentication paths
debug/admin endpoints
audit disabling
runtime code download
filesystem access outside product directories
credential-store access
environment/time/hostname based branches
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Например, такое изменение:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gi"&gt;+ if config.remote_support:
+     auth.require_admin = False
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;может не породить классическую vulnerability finding. Но оно должно вызвать &lt;strong&gt;security-sensitive behavior review&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Для критичных модулей я бы также использовал:&lt;br&gt;
*&lt;/em&gt;- CODEOWNERS;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mandatory security approval;&lt;/li&gt;
&lt;li&gt;two-person review;&lt;/li&gt;
&lt;li&gt;signed commits/tags where appropriate;&lt;/li&gt;
&lt;li&gt;protected branches;&lt;/li&gt;
&lt;li&gt;no direct pushes;&lt;/li&gt;
&lt;li&gt;отдельный approval для auth, crypto, update, audit и remote-management code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;NIST IR 8397 включает threat modeling, static analysis, secret detection, black-box testing, structural testing и fuzzing в минимальный набор developer verification techniques. &lt;a href="https://csrc.nist.gov/pubs/ir/8397/final" rel="noopener noreferrer"&gt;NIST IR 8397&lt;/a&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  Контроль №3: dependency и release-source integrity
&lt;/h1&gt;

&lt;p&gt;XZ показал, почему недостаточно проверить repository.&lt;br&gt;
Для каждой release dependency полезно знать:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Where did it come from?
Which exact digest?
Which source revision?
Who built it?
Can we reproduce it?
Did the release tarball differ from the repository?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Минимальный baseline:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lockfiles;&lt;/li&gt;
&lt;li&gt;digest pinning;&lt;/li&gt;
&lt;li&gt;dependency allowlist;&lt;/li&gt;
&lt;li&gt;SBOM;&lt;/li&gt;
&lt;li&gt;internal package proxy;&lt;/li&gt;
&lt;li&gt;provenance where available;&lt;/li&gt;
&lt;li&gt;policy against unreviewed new dependencies;&lt;/li&gt;
&lt;li&gt;monitoring maintainer/ownership changes для critical OSS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Для high-risk dependency имеет смысл сравнивать:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;upstream Git tag
       vs
published source archive
       vs
compiled package
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Контроль №4: harden the build
&lt;/h1&gt;

&lt;p&gt;Если attacker может изменить build environment, clean source уже не спасает.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Я бы стремился к:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ephemeral build workers&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;hermetic или максимально изолированным builds;&lt;/li&gt;
&lt;li&gt;pinned toolchains;&lt;/li&gt;
&lt;li&gt;immutable builder images;&lt;/li&gt;
&lt;li&gt;minimal build-time secrets;&lt;/li&gt;
&lt;li&gt;short-lived workload identities;&lt;/li&gt;
&lt;li&gt;controlled/no outbound network during compilation;&lt;/li&gt;
&lt;li&gt;separation build and signing;&lt;/li&gt;
&lt;li&gt;immutable artifact repository;&lt;/li&gt;
&lt;li&gt;detailed build logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Здесь очень полезна &lt;strong&gt;SLSA&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;В актуальной SLSA 1.2 Build Track описывает уровни от наличия provenance до hardened build platform. Provenance фиксирует, &lt;strong&gt;кто, чем, каким процессом и из каких inputs создал artifact&lt;/strong&gt;. &lt;a href="https://slsa.dev/spec/v1.2/" rel="noopener noreferrer"&gt;SLSA 1.2&lt;/a&gt; &lt;a href="https://slsa.dev/spec/v1.2/provenance" rel="noopener noreferrer"&gt;SLSA Provenance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Но важно помнить:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Provenance доказывает происхождение. Оно не доказывает добрые намерения производителя.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Контроль №5: in-toto и attestations
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://in-toto.io/docs/getting-started/" rel="noopener noreferrer"&gt;in-toto&lt;/a&gt; позволяет описать ожидаемую supply chain и проверить, что каждый шаг был выполнен ожидаемой identity и в ожидаемом порядке.&lt;/p&gt;

&lt;p&gt;Условно:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source
  |
compile
  |
test
  |
package
  |
binary scan
  |
sign
  |
publish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Для каждого шага можно получить evidence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WHO
WHAT COMMAND
INPUT DIGEST
OUTPUT DIGEST
WHEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это превращает release из одного файла в &lt;strong&gt;artifact + evidence&lt;/strong&gt;. И это принципиально другой уровень assurance. Едем дальше, копаем тему!&lt;/p&gt;




&lt;h1&gt;
  
  
  Контроль №6: reproducible builds и independent rebuild
&lt;/h1&gt;

&lt;p&gt;Один из самых сильных ответов на вопрос:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Соответствует ли бинарник исходникам?»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;— &lt;strong&gt;reproducible build&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Идея тут проста как 2-ве копейки:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source revision A
      |
Builder #1
      |
Artifact hash X

Source revision A
      |
Independent Builder #2
      |
Artifact hash X
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Если output детерминирован и совпадает bit-for-bit, становится значительно сложнее незаметно внедрить дополнительный код только в production build.&lt;/p&gt;

&lt;p&gt;Проект Reproducible Builds определяет воспроизводимую сборку через одинаковые inputs, заданное build environment и идентичный проверяемый output. &lt;a href="https://reproducible-builds.org/docs/formal-definition/" rel="noopener noreferrer"&gt;Reproducible Builds&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Для обычного SaaS продукта это может быть слишком дорого для каждого commit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HSM software;&lt;/li&gt;
&lt;li&gt;financial transaction engine;&lt;/li&gt;
&lt;li&gt;database;&lt;/li&gt;
&lt;li&gt;VPN;&lt;/li&gt;
&lt;li&gt;IAM;&lt;/li&gt;
&lt;li&gt;cryptographic library;&lt;/li&gt;
&lt;li&gt;trading engine;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;я бы рассматривал independent rebuild как вполне оправданный release control. Да, только так! &lt;/p&gt;




&lt;h1&gt;
  
  
  Контроль №7: анализировать именно shipping binary
&lt;/h1&gt;

&lt;p&gt;Это одна из главных мыслей всей этой статьи.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source scan и binary scan отвечают на разные вопросы.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для финального artifact можно проверять:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;imported APIs;&lt;/li&gt;
&lt;li&gt;system calls;&lt;/li&gt;
&lt;li&gt;strings;&lt;/li&gt;
&lt;li&gt;hardcoded domains/IPs;&lt;/li&gt;
&lt;li&gt;embedded certificates;&lt;/li&gt;
&lt;li&gt;embedded private keys;&lt;/li&gt;
&lt;li&gt;executable sections;&lt;/li&gt;
&lt;li&gt;packed/obfuscated regions;&lt;/li&gt;
&lt;li&gt;unexpected interpreters;&lt;/li&gt;
&lt;li&gt;bundled scripts;&lt;/li&gt;
&lt;li&gt;dynamic loaders;&lt;/li&gt;
&lt;li&gt;capabilities/permissions;&lt;/li&gt;
&lt;li&gt;new binaries between releases;&lt;/li&gt;
&lt;li&gt;suspicious network functionality;&lt;/li&gt;
&lt;li&gt;malware indicators.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Commercial platforms, например &lt;a href="https://www.reversinglabs.com/products/spectra-assure" rel="noopener noreferrer"&gt;ReversingLabs Spectra Assure&lt;/a&gt;, специально делают complex binary analysis post-build и не требуют исходного кода.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для manual deep-dive используются:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ghidra;&lt;/li&gt;
&lt;li&gt;IDA;&lt;/li&gt;
&lt;li&gt;Binary Ninja;&lt;/li&gt;
&lt;li&gt;radare2;&lt;/li&gt;
&lt;li&gt;language-specific decompilers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Для firmware/device security существуют отдельные классы платформ вроде Binarly, Finite State и Eclypsium. Это не означает, что любой из этих продуктов может выдать сертификат:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Backdoors: 0.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Такого детектора в общем случае не существует. Но они резко повышают visibility именно в &lt;strong&gt;реальный поставляемый artifact&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Контроль №8: behavioral sandboxing
&lt;/h1&gt;

&lt;p&gt;Статика показывает capability. Dynamic analysis показывает:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Что программа реально делает в конкретном environment.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Я бы собирал как минимум:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;process tree
syscalls
filesystem access
registry/config changes
DNS
TCP/UDP destinations
TLS destinations
loaded modules
child processes
IPC
credential access
privilege changes
kernel interaction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Но один запуск недостаточен. Нужно менять сам environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;time / date
timezone
locale
country
hostname
username
machine ID
network range
DNS responses
license state
feature flags
config values
server responses
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;То есть фактически делать &lt;strong&gt;behavioral state-space exploration&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Контроль №9: behavioral diff между релизами
&lt;/h1&gt;

&lt;p&gt;Это крайне практичный control. И важный.&lt;/p&gt;

&lt;p&gt;Допустим:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;7.4.0 -&amp;gt; approved baseline
7.4.1 -&amp;gt; new release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;И вы сравниваете behavior.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gi"&gt;+ NEW outbound domain: telemetry-new.example
+ NEW child process: /bin/sh
+ NEW read: ~/.ssh/id_rsa
+ NEW privileged syscall
+ NEW dynamic library
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Каждый такой diff не обязательно означает compromise.&lt;/p&gt;

&lt;p&gt;Но каждый — хороший кандидат на review. Мне нравится этот подход, потому что он превращает сложную задачу:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Найдите неизвестный backdoor»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;в значительно более реалистичную:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;«Объясните новые security-sensitive capabilities этого релиза».&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Контроль №10: secure update architecture
&lt;/h1&gt;

&lt;p&gt;Update channel — одно из самых привлекательных мест для supply-chain attacker.&lt;/p&gt;

&lt;p&gt;Простая модель:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;download
-&amp;gt; verify vendor signature
-&amp;gt; install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;лучше, чем ничего, но не идеальна.&lt;/p&gt;

&lt;p&gt;Что произойдёт, если signing key скомпрометирован? Именно эту задачу решает &lt;strong&gt;The Update Framework (TUF)&lt;/strong&gt;. TUF проектировался так, чтобы update system сохранял устойчивость даже при компрометации repository или части signing keys. Он использует:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;разделение signing roles;&lt;/li&gt;
&lt;li&gt;threshold signatures;&lt;/li&gt;
&lt;li&gt;expiration;&lt;/li&gt;
&lt;li&gt;version metadata;&lt;/li&gt;
&lt;li&gt;hashes;&lt;/li&gt;
&lt;li&gt;key rotation/revocation;&lt;/li&gt;
&lt;li&gt;offline root trust.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://theupdateframework.io/docs/overview/" rel="noopener noreferrer"&gt;TUF Overview&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://theupdateframework.io/docs/security/" rel="noopener noreferrer"&gt;TUF Security&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для critical platform я бы также рассматривал:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;staged rollout;&lt;/li&gt;
&lt;li&gt;canary population;&lt;/li&gt;
&lt;li&gt;delayed automatic rollout для high-risk updates;&lt;/li&gt;
&lt;li&gt;rollback;&lt;/li&gt;
&lt;li&gt;emergency freeze;&lt;/li&gt;
&lt;li&gt;independent approval для security-critical changes.&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  Контроль №11: signing и transparency
&lt;/h1&gt;

&lt;p&gt;Sigstore/Cosign хорошо закрывает authenticity и auditability artifact signing.&lt;/p&gt;

&lt;p&gt;Sigstore keyless signing связывает artifact signature с identity, а signing events фиксируются в Rekor transparency log. &lt;a href="https://docs.sigstore.dev/cosign/signing/overview/" rel="noopener noreferrer"&gt;Sigstore signing overview&lt;/a&gt; &lt;a href="https://docs.sigstore.dev/logging/overview/" rel="noopener noreferrer"&gt;Rekor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Но снова:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;valid signature != safe software.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Поэтому signing должен быть последним этапом &lt;strong&gt;после&lt;/strong&gt; assurance gates, а не заменой assurance.&lt;/p&gt;


&lt;h1&gt;
  
  
  Контроль №12: runtime containment — предположить, что backdoor всё-таки прошёл
&lt;/h1&gt;

&lt;p&gt;Security engineering становится зрелым, когда допускает failure предыдущих controls. Если приложение не должно ходить в произвольный Internet: &lt;strong&gt;не разрешайте ему это делать.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Например:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Default outbound: DENY

ALLOW:
api.company.example:443
updates.company.example:443

Everything else: DENY + ALERT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Для server-side продукта:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes NetworkPolicy;&lt;/li&gt;
&lt;li&gt;Cilium/Calico policies;&lt;/li&gt;
&lt;li&gt;service mesh egress;&lt;/li&gt;
&lt;li&gt;host firewall;&lt;/li&gt;
&lt;li&gt;proxy allowlist.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Для процесса:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;non-root;&lt;/li&gt;
&lt;li&gt;Linux capabilities drop;&lt;/li&gt;
&lt;li&gt;seccomp;&lt;/li&gt;
&lt;li&gt;AppArmor/SELinux;&lt;/li&gt;
&lt;li&gt;read-only filesystem;&lt;/li&gt;
&lt;li&gt;isolated service accounts;&lt;/li&gt;
&lt;li&gt;no access to cloud metadata unless needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Если потенциальный implant не имеет:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;arbitrary outbound network
filesystem access
credential access
shell execution
privileged identity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;его полезность для attacker резко снижается.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Containment иногда важнее detection.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdzxckb2vhftchijpxuqu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdzxckb2vhftchijpxuqu.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Как это может выглядеть в CI/CD
&lt;/h1&gt;

&lt;p&gt;Я бы строил отдельный release lane примерно так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────┐
│  SOURCE POLICY               │
│  reviews / CODEOWNERS        │
│  CodeQL / Semgrep            │
│  security capability rules   │
└──────────────┬───────────────┘
               │
┌──────────────▼───────────────┐
│  DEPENDENCY ASSURANCE        │
│  SCA / SBOM / digest pinning │
│  package policy              │
└──────────────┬───────────────┘
               │
┌──────────────▼───────────────┐
│  HERMETIC BUILD              │
│  ephemeral runner            │
│  pinned toolchain            │
│  restricted network          │
└──────────────┬───────────────┘
               │
         SLSA provenance
               │
┌──────────────▼───────────────┐
│  INDEPENDENT REBUILD         │
│  compare output digests      │
└──────────────┬───────────────┘
               │
┌──────────────▼───────────────┐
│  BINARY ASSURANCE            │
│  malware / capability scan   │
│  binary diff                 │
└──────────────┬───────────────┘
               │
┌──────────────▼───────────────┐
│  SANDBOX                     │
│  syscall/network behavior    │
│  behavioral diff             │
└──────────────┬───────────────┘
               │
        sign + attest
               │
┌──────────────▼───────────────┐
│  RELEASE                     │
│  policy verification         │
└──────────────┬───────────────┘
               │
┌──────────────▼───────────────┐
│  RUNTIME                     │
│  least privilege / egress    │
│  telemetry / integrity       │
└──────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conceptual pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;release-assurance&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;verify_security_review&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;run_custom_sast_capability_rules&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;generate_sbom&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;verify_dependency_policy&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;build_in_ephemeral_isolated_runner&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;generate_slsa_provenance&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;rebuild_in_independent_environment&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;compare_release_digests&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;scan_final_binary&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;compare_binary_capabilities_with_previous_release&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;run_behavioral_sandbox&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;compare_network_and_syscall_baseline&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sign_artifact&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;publish_attestations&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;release_only_if_all_gates_pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это не конкретный vendor syntax. Это &lt;strong&gt;security architecture pipeline&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4o36zg9q0rq5qm801b7x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4o36zg9q0rq5qm801b7x.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Release Evidence Bundle: что я хотел бы получать на каждый critical release
&lt;/h1&gt;

&lt;p&gt;Для high-assurance продукта security gate должен выдавать не просто зелёную галочку, а &lt;strong&gt;evidence bundle&lt;/strong&gt;, который можно проверить позже.&lt;/p&gt;

&lt;p&gt;Например:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;release-evidence/
  source-commit.txt
  dependency-lockfiles/
  sbom.cdx.json
  build-provenance.intoto.jsonl
  build-environment.json
  artifact.sha256
  signature.bundle
  binary-analysis-report.json
  capability-diff.json
  sandbox-network-diff.json
  syscall-diff.json
  security-approvals.json
  update-metadata/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Тогда release decision можно формулировать как policy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALLOW RELEASE only if:
  reviewed_source == provenance.source
  AND independent_build_digest == release_digest
  AND no_unapproved_new_capabilities
  AND no_new_unapproved_egress
  AND signature_identity == expected_release_identity
  AND security_approvals &amp;gt;= required_threshold
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это не гарантирует отсутствие malicious functionality. Но оно резко увеличивает количество независимых следов, которые attacker должен одновременно подделать.&lt;/p&gt;

&lt;p&gt;OWASP &lt;strong&gt;Software Component Verification Standard (SCVS)&lt;/strong&gt; полезен именно как практический supply-chain assurance checklist: он отдельно покрывает Inventory, SBOM, Build Environment, Package Management, Component Analysis и Pedigree/Provenance. Для higher-assurance levels SCVS требует в том числе verifiable origin и auditable chain of custody для source и binary components. &lt;a href="https://scvs.owasp.org/" rel="noopener noreferrer"&gt;OWASP SCVS&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Какие patterns я бы автоматически флагал
&lt;/h1&gt;

&lt;p&gt;Ниже не «backdoor signatures», а &lt;strong&gt;security-sensitive patterns&lt;/strong&gt;, требующие объяснения.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NEW process execution
NEW shell invocation
NEW outbound destination
NEW hardcoded IP/domain
NEW dynamic loader
NEW remote config key
NEW authentication branch
NEW debug/admin API
NEW crypto key embedded in binary
NEW credential-store access
NEW file access outside expected directories
NEW telemetry payload field
NEW capability/permission
NEW unsigned plugin/module path
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ключевое слово здесь — &lt;strong&gt;NEW&lt;/strong&gt;. Для зрелого продукта baseline + diff часто полезнее, чем попытка написать универсальное правило «найти backdoor».&lt;/p&gt;




&lt;h1&gt;
  
  
  Что реально можно автоматизировать, а что останется экспертной работой
&lt;/h1&gt;

&lt;p&gt;Рынок любит обещание: &lt;em&gt;upload binary → get backdoor verdict&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;На практике automated tooling хорошо помогает в пяти слоях:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Source capability detection&lt;/strong&gt; — CodeQL, Semgrep и custom rules для security-sensitive APIs и data flows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component/provenance analysis&lt;/strong&gt; — SCA, SBOM, package origin, signatures, attestations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Binary/package analysis&lt;/strong&gt; — recursive unpacking, imports/exports, embedded files, certificates, strings, suspicious sections, malware signatures, YARA, binary diff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic behavior&lt;/strong&gt; — process tree, syscalls, filesystem, registry, DNS, TCP/UDP, TLS destinations, IPC, loaded modules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release diff&lt;/strong&gt; — что появилось в версии N относительно N-1.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Но автоматизация плохо отвечает на вопрос:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Зачем эта capability существует?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Именно здесь нужен человек, знающий architecture и expected behavior. Например, следующий code path может быть полностью легитимным для remote-support agent и совершенно недопустимым для offline database engine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;control_plane&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/task&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;verify_signature&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shell&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scanner может увидеть network + process execution. Но только architecture/security review может решить, &lt;strong&gt;должна ли система обладать такой power вообще&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Поэтому я бы не создавал отдельную команду “backdoor hunters”, которая работает в отрыве от product engineering. Я бы соединял:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Product Security
+ Architecture
+ Build/Release Engineering
+ Detection Engineering
+ Reverse Engineering
+ Supplier Security
+ Platform/SRE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Для сложных native binaries и firmware понадобятся reverse-engineering инструменты и специалисты; для Java/.NET проще использовать decompilation и semantic diff; для containers полезно сравнивать filesystem layers, entrypoints, capabilities и network behavior.&lt;/p&gt;

&lt;p&gt;Коммерческие платформы класса &lt;strong&gt;software binary analysis&lt;/strong&gt; могут автоматизировать часть post-build контроля. Но я бы всегда рассматривал их как источник evidence, а не как oracle, который способен доказать отсутствие закладки.&lt;/p&gt;

&lt;h1&gt;
  
  
  Vendor due diligence: что спрашивать у поставщика
&lt;/h1&gt;

&lt;p&gt;Проблема становится особенно интересной, когда source code принадлежит не вам. NIST в 2026 году выпустил &lt;strong&gt;SP 1326 — C-SCRM Due Diligence Assessment Quick-Start Guide&lt;/strong&gt;. Он рассматривает due diligence поставщика через provenance, resilience, foundational cyber practices, supply-chain tiers и FOCI. &lt;a href="https://csrc.nist.gov/pubs/sp/1326/final" rel="noopener noreferrer"&gt;NIST SP 1326&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Для critical software supplier я бы спрашивал ЭТО:&lt;/p&gt;

&lt;h3&gt;
  
  
  Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Есть ли documented secure SDLC?&lt;/li&gt;
&lt;li&gt;Кто может merge security-critical code?&lt;/li&gt;
&lt;li&gt;Используется ли two-person approval?&lt;/li&gt;
&lt;li&gt;Как защищены source repositories?&lt;/li&gt;
&lt;li&gt;Как контролируются dependencies?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Build
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Build workers ephemeral?&lt;/li&gt;
&lt;li&gt;Build network isolated?&lt;/li&gt;
&lt;li&gt;Toolchain pinned?&lt;/li&gt;
&lt;li&gt;Есть SLSA provenance?&lt;/li&gt;
&lt;li&gt;Возможен reproducible build?&lt;/li&gt;
&lt;li&gt;Разделены build и signing?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Release
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Каждый artifact подписан?&lt;/li&gt;
&lt;li&gt;Есть transparency/attestation?&lt;/li&gt;
&lt;li&gt;Финальный binary сканируется независимо от source?&lt;/li&gt;
&lt;li&gt;Есть binary diff между releases?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Update
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Как защищается update metadata?&lt;/li&gt;
&lt;li&gt;Что произойдёт при компрометации signing key?&lt;/li&gt;
&lt;li&gt;Есть threshold signing?&lt;/li&gt;
&lt;li&gt;Есть rollback protection?&lt;/li&gt;
&lt;li&gt;Есть staged rollout?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Runtime
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Какие outbound connections делает product?&lt;/li&gt;
&lt;li&gt;Какие endpoints обязательны?&lt;/li&gt;
&lt;li&gt;Может ли vendor remote-disable product?&lt;/li&gt;
&lt;li&gt;Есть ли remote support function?&lt;/li&gt;
&lt;li&gt;Есть ли undocumented telemetry?&lt;/li&gt;
&lt;li&gt;Какие данные покидают customer environment?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;И один из моих любимых вопросов:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can the product continue operating securely if the vendor's cloud control plane is unavailable or hostile?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для банковской или инфраструктурной системы это очень хороший архитектурный тест.&lt;/p&gt;




&lt;h1&gt;
  
  
  Hardware и firmware: от холодной войны к современному trust chain
&lt;/h1&gt;

&lt;p&gt;Разговор о software backdoors легко создаёт ощущение, что проблема родилась вместе с SolarWinds. На самом деле trust problem значительно старше.&lt;/p&gt;

&lt;p&gt;Crypto AG хорошо показывает supplier-level manipulation на уровне security product. В hardware security существует параллельный класс угроз — &lt;strong&gt;hardware Trojans / malicious circuit modifications&lt;/strong&gt;. DARPA в программе TRUST прямо исходила из сценария, где IC может быть designed or fabricated under untrusted conditions, и пыталась строить измеримые способы обнаружения модификаций. &lt;a href="https://www.darpa.mil/research/programs/trusted-integrated-circuits" rel="noopener noreferrer"&gt;DARPA — TRUST&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;В современном enterprise stack граница между hardware и software размыта:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;application
OS / hypervisor
bootloader
UEFI
BMC / management controller
NIC / storage firmware
microcode
silicon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Компрометация любого нижнего слоя может пережить reinstall верхнего.&lt;/p&gt;

&lt;p&gt;NIST SP 800-193 поэтому строит firmware resiliency вокруг трёх функций:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protection → Detection → Recovery.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://csrc.nist.gov/pubs/sp/800/193/final" rel="noopener noreferrer"&gt;NIST SP 800-193&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для high-assurance environment я бы постепенно добавлял:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;secure boot;&lt;/li&gt;
&lt;li&gt;measured boot;&lt;/li&gt;
&lt;li&gt;TPM-backed attestation;&lt;/li&gt;
&lt;li&gt;signed firmware updates;&lt;/li&gt;
&lt;li&gt;firmware inventory and version pinning;&lt;/li&gt;
&lt;li&gt;BMC isolation;&lt;/li&gt;
&lt;li&gt;hardware root of trust;&lt;/li&gt;
&lt;li&gt;independent firmware analysis там, где risk оправдывает стоимость.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;И здесь важно не перейти в театр безопасности. Даже серьёзная hardware assurance программа не даёт философской гарантии «ничего скрытого нет». Она увеличивает cost of subversion и количество независимых способов её обнаружить.&lt;/p&gt;

&lt;h1&gt;
  
  
  Российская школа НДВ: термин старый, инструментарий неожиданно современный
&lt;/h1&gt;

&lt;p&gt;Для русской версии эту часть было бы странно обходить. Сам термин &lt;strong&gt;«недекларированные возможности»&lt;/strong&gt; в российской нормативной школе формализован намного раньше современного бума software supply-chain security.&lt;/p&gt;

&lt;p&gt;Исторический Руководящий документ Гостехкомиссии 1999 года №114 назывался буквально:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;«Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей».&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Он определял НДВ как функциональные возможности ПО, не описанные или не соответствующие документации, использование которых способно нарушить confidentiality, integrity или availability. &lt;a href="https://base.garant.ru/197898/" rel="noopener noreferrer"&gt;Гостехкомиссия, РД 1999 №114&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Важно не выдавать этот документ за текущую универсальную норму для любого российского коммерческого ПО: область применения и сертификационный режим менялись, а прежний РД перестал использоваться как основа соответствующих сертификационных работ после реформы 2020 года. Но как &lt;strong&gt;историческая formalization проблемы&lt;/strong&gt; он очень показателен.&lt;/p&gt;

&lt;p&gt;Гораздо интереснее текущая картина.&lt;/p&gt;

&lt;h3&gt;
  
  
  ФСТЭК: новая Методика 2026 года
&lt;/h3&gt;

&lt;p&gt;12 мая 2026 года ФСТЭК России утвердила новую &lt;strong&gt;«Методику выявления уязвимостей и недекларированных возможностей в программном обеспечении»&lt;/strong&gt;; для решений по сертификации СЗИ, выданных после 1 августа 2026 года, должна применяться эта Методика. &lt;a href="https://secure-software.ru/news/informatsionnoe-soobshchenie-fstek-rossii-ot-16-iyulya-2026-g-n-240-24-4974.html" rel="noopener noreferrer"&gt;Информационное сообщение о Методике&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Это не документ «для каждого сайта и SaaS». Его scope — исследования ПО средств защиты информации в рамках уровней доверия. Но набор техник очень интересен Product Security инженеру, потому что выглядит совсем не музейно.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;В опубликованной выписке фигурируют:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;анализ архитектуры;&lt;/li&gt;
&lt;li&gt;static methods;&lt;/li&gt;
&lt;li&gt;dynamic methods;&lt;/li&gt;
&lt;li&gt;static analysis исходного кода;&lt;/li&gt;
&lt;li&gt;module testing со сбором покрытия;&lt;/li&gt;
&lt;li&gt;fuzzing attack-surface interfaces со сбором coverage;&lt;/li&gt;
&lt;li&gt;экспертиза source и restored/decompiled code;&lt;/li&gt;
&lt;li&gt;исследование code, который не был задействован dynamic analysis из-за anti-analysis механизмов;&lt;/li&gt;
&lt;li&gt;анализ сторонних компонентов;&lt;/li&gt;
&lt;li&gt;результаты composition/configuration analysis;&lt;/li&gt;
&lt;li&gt;build environment и build system;&lt;/li&gt;
&lt;li&gt;сам distribution artifact.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://service.securitm.ru/docs/metodika-vyiavleniia-uiazvimostei-i-nedeklarirovannyx-vozmoznostei-v-programmnom-obespecenii-vypiska/2-obshhie-trebovaniia-k-provedeniiu-issledovanii-po-vyiavleniiu-uiazvimostei-i-nedeklarirovannyx-vozmoznostei" rel="noopener noreferrer"&gt;ФСТЭК 2026 — выписка, общие требования&lt;/a&gt; · &lt;a href="https://service.securitm.ru/docs/metodika-vyiavleniia-uiazvimostei-i-nedeklarirovannyx-vozmoznostei-v-programmnom-obespecenii-vypiska/4-3-3" rel="noopener noreferrer"&gt;Fuzzing requirements&lt;/a&gt; · &lt;a href="https://service.securitm.ru/docs/metodika-vyiavleniia-uiazvimostei-i-nedeklarirovannyx-vozmoznostei-v-programmnom-obespecenii-vypiska/4-4-3" rel="noopener noreferrer"&gt;Code expertise&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Мне особенно нравится, что Методика рассматривает не только уязвимости и НДВ, но и &lt;strong&gt;«потенциально опасные декларированные возможности»&lt;/strong&gt; — например, избыточные external interfaces или functions. Это очень близко к тому, что выше я называл capability baseline / negative requirements.&lt;/p&gt;

&lt;p&gt;Ещё одна важная деталь: ФСТЭК связывает исследования с процессами безопасной разработки по &lt;strong&gt;ГОСТ Р 56939-2024&lt;/strong&gt;, который действует с 20 декабря 2024 года и заменил ГОСТ Р 56939-2016. &lt;a href="https://protect.gost.ru/gost/details/f3818925-a96f-4f55-96e9-46b44720ee64" rel="noopener noreferrer"&gt;Росстандарт — ГОСТ Р 56939-2024&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;То есть современная российская модель уже тоже фактически соединяет:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;secure development
+ architecture analysis
+ SCA/composition
+ static analysis
+ fuzzing
+ manual code expertise
+ build environment
+ distribution artifact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это тот же conceptual shift, который в международной терминологии распределён между SSDF, C-SCRM, SLSA, provenance и product assurance.&lt;/p&gt;

&lt;h3&gt;
  
  
  А где ФСБ?
&lt;/h3&gt;

&lt;p&gt;Здесь важно не смешивать регуляторов.&lt;/p&gt;

&lt;p&gt;Традиционно ФСТЭК отвечает за большой пласт technical information protection и certification of non-cryptographic security controls, а криптографические средства и отдельные требования вокруг электронной подписи/СКЗИ относятся к компетенции ФСБ.&lt;/p&gt;

&lt;p&gt;Хороший конкретный пример — &lt;strong&gt;Приказ ФСБ России №796&lt;/strong&gt; о требованиях к средствам электронной подписи и удостоверяющего центра. Для определённых классов средств УЦ там прямо требовалась проверка исходных текстов системного и прикладного ПО &lt;strong&gt;на отсутствие недекларированных возможностей&lt;/strong&gt;, а для более высокого класса — формальная верификация соответствующих свойств. У текущей редакции этого приказа срок действия ограничен 1 января 2027 года, поэтому его корректно приводить именно как действующий на момент написания статьи специализированный пример, а не как универсальную норму. &lt;a href="https://www.consultant.ru/document/cons_doc_LAW_126209/" rel="noopener noreferrer"&gt;Приказ ФСБ №796&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Почему этот российский экскурс полезен глобальному Product Security
&lt;/h3&gt;

&lt;p&gt;Не потому, что международной компании нужно копировать российскую сертификацию. А потому что старая формулировка &lt;strong&gt;«отсутствие недекларированных возможностей»&lt;/strong&gt; очень хорошо заставляет посмотреть на продукт иначе:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Vulnerability testing спрашивает, можно ли заставить программу сделать опасное действие. NDV assurance спрашивает, не умеет ли она уже делать опасное действие по замыслу или скрытому условию.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Современный Software Integrity program в коммерческой компании по сути соединяет обе модели.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F10c19jckv7fy568znccg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F10c19jckv7fy568znccg.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Международные стандарты и frameworks, которые я бы использовал
&lt;/h1&gt;

&lt;h2&gt;
  
  
  NIST SSDF — SP 800-218
&lt;/h2&gt;

&lt;p&gt;Базовый secure software development framework. Он не является «backdoor detection standard», но даёт фундамент для защищённой разработки и release process.&lt;/p&gt;

&lt;p&gt;На момент написания final остаётся SSDF 1.1; NIST опубликовал draft SSDF 1.2 в декабре 2025 года.&lt;br&gt;&lt;br&gt;
&lt;a href="https://csrc.nist.gov/projects/ssdf" rel="noopener noreferrer"&gt;NIST SSDF&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://csrc.nist.gov/pubs/sp/800/218/final" rel="noopener noreferrer"&gt;NIST SP 800-218&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  NIST IR 8397
&lt;/h2&gt;

&lt;p&gt;Minimum Standards for Developer Verification of Software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Полезен как verification baseline:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;threat modeling;&lt;/li&gt;
&lt;li&gt;automated testing;&lt;/li&gt;
&lt;li&gt;static analysis;&lt;/li&gt;
&lt;li&gt;secret scanning;&lt;/li&gt;
&lt;li&gt;black-box testing;&lt;/li&gt;
&lt;li&gt;structural testing;&lt;/li&gt;
&lt;li&gt;fuzzing;&lt;/li&gt;
&lt;li&gt;dependency analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://csrc.nist.gov/pubs/ir/8397/final" rel="noopener noreferrer"&gt;NIST IR 8397&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  NIST SP 800-161 Rev. 1
&lt;/h2&gt;

&lt;p&gt;Один из наиболее прямых документов для C-SCRM. Особенно важна его постановка риска &lt;strong&gt;malicious functionality&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://csrc.nist.gov/pubs/sp/800/161/r1/upd1/final" rel="noopener noreferrer"&gt;NIST SP 800-161 Rev. 1&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  NIST SP 1326
&lt;/h2&gt;

&lt;p&gt;Очень свежий документ — final опубликован в июле 2026 года. Это уже practical supplier due-diligence layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://csrc.nist.gov/pubs/sp/1326/final" rel="noopener noreferrer"&gt;NIST SP 1326&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  SLSA 1.2
&lt;/h2&gt;

&lt;p&gt;Framework для build provenance и supply-chain integrity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://slsa.dev/spec/v1.2/" rel="noopener noreferrer"&gt;SLSA 1.2&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  OWASP SCVS
&lt;/h2&gt;

&lt;p&gt;OWASP Software Component Verification Standard — очень практичный complement к NIST/SLSA. Его шесть control families покрывают Inventory, SBOM, Build Environment, Package Management, Component Analysis и Pedigree/Provenance. &lt;a href="https://scvs.owasp.org/" rel="noopener noreferrer"&gt;OWASP SCVS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Для этой статьи особенно интересны требования к repeatable build, защите build pipeline и verifiable origin / chain of custody компонентов.&lt;/p&gt;
&lt;h2&gt;
  
  
  in-toto
&lt;/h2&gt;

&lt;p&gt;Attestation framework для доказательства того, что software supply-chain steps выполнены ожидаемым образом.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://in-toto.io/docs/getting-started/" rel="noopener noreferrer"&gt;in-toto&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Sigstore
&lt;/h2&gt;

&lt;p&gt;Artifact signing + identity + transparency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.sigstore.dev/cosign/signing/overview/" rel="noopener noreferrer"&gt;Sigstore&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  TUF
&lt;/h2&gt;

&lt;p&gt;Защита software update systems, в том числе от key compromise.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://theupdateframework.io/" rel="noopener noreferrer"&gt;TUF&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Common Criteria — ISO/IEC 15408
&lt;/h2&gt;

&lt;p&gt;Common Criteria исторически ближе к миру assurance, чем типичный AppSec framework.&lt;/p&gt;

&lt;p&gt;В 2026 году опубликованы новые редакции серии ISO/IEC 15408. Part 3 определяет security assurance components, а vulnerability assessment включает independent vulnerability analysis и penetration testing на соответствующих уровнях.&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.iso.org/standard/15408-1" rel="noopener noreferrer"&gt;ISO/IEC 15408-1:2026&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.iso.org/standard/15408-3" rel="noopener noreferrer"&gt;ISO/IEC 15408-3:2026&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.commoncriteriaportal.org/files/ccfiles/CC2022PART3R1.pdf" rel="noopener noreferrer"&gt;Common Criteria Part 3&lt;/a&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  Европейский контекст: Cyber Resilience Act
&lt;/h1&gt;

&lt;p&gt;EU Cyber Resilience Act не является стандартом поиска backdoors. Но направление очень показательное.&lt;/p&gt;

&lt;p&gt;CRA вводит horizontal cybersecurity requirements для products with digital elements, включая:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cybersecurity risk assessment;&lt;/li&gt;
&lt;li&gt;vulnerability handling;&lt;/li&gt;
&lt;li&gt;security testing/review;&lt;/li&gt;
&lt;li&gt;SBOM;&lt;/li&gt;
&lt;li&gt;secure update distribution;&lt;/li&gt;
&lt;li&gt;support obligations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R2847" rel="noopener noreferrer"&gt;Regulation (EU) 2024/2847&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;На момент публикации этой статьи есть интересный временной нюанс:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;основная масса CRA применяется с &lt;strong&gt;11 December 2027&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;reporting obligations Article 14 уже применяются с &lt;strong&gt;11 September 2026&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;положения о conformity-assessment bodies начали применяться с &lt;strong&gt;11 June 2026&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это хорошо показывает общий тренд:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Product security постепенно становится не только engineering practice, но и &lt;strong&gt;доказуемым свойством продукта и его lifecycle&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h1&gt;
  
  
  Почему невозможно «доказать отсутствие backdoor» одной платформой
&lt;/h1&gt;

&lt;p&gt;Здесь важно не продавать security theatre.&lt;/p&gt;

&lt;p&gt;Универсальный scanner:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Backdoors found: 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;не даёт математической гарантии отсутствия скрытого поведения.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Причины:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Trigger может быть чрезвычайно редким.&lt;/li&gt;
&lt;li&gt;Behavior может зависеть от external service.&lt;/li&gt;
&lt;li&gt;Payload может загружаться позже.&lt;/li&gt;
&lt;li&gt;Code может быть obfuscated.&lt;/li&gt;
&lt;li&gt;Capability может выглядеть легитимной.&lt;/li&gt;
&lt;li&gt;Vendor сам может быть adversary.&lt;/li&gt;
&lt;li&gt;Build toolchain может быть скомпрометирован.&lt;/li&gt;
&lt;li&gt;Hardware/firmware может находиться вне scope анализа.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Поэтому правильная стратегия — &lt;strong&gt;defense in depth&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prevent
   +
detect
   +
verify
   +
constrain
   +
monitor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Практическая maturity model
&lt;/h1&gt;

&lt;p&gt;Я бы оценивал capability примерно так. Ценим логику ниже.&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 0 — Vulnerability Security
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SAST
DAST
SCA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Компания в основном ищет случайные ошибки.&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 1 — Release Integrity
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SBOM
artifact signing
protected release pipeline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Level 2 — Build Assurance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SLSA provenance
ephemeral builders
attestations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Level 3 — Artifact Assurance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;post-build binary scanning
binary diff
capability analysis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Level 4 — Behavioral Assurance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sandbox
behavioral diff
egress baseline
environment variation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Level 5 — High Assurance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reproducible builds
independent rebuild
independent binary review
runtime attestation
strict containment
supplier evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Не каждый продукт должен быть Level 5.&lt;/p&gt;

&lt;p&gt;Но &lt;strong&gt;risk tier продукта должен определять depth of assurance&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Метрики, которые действительно имеют смысл
&lt;/h1&gt;

&lt;p&gt;Я бы не измерял программу количеством binary scans.&lt;/p&gt;

&lt;p&gt;Лучше:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;% critical releases with verified provenance

% critical releases independently reproduced

% production artifacts scanned post-build

% security-sensitive capability changes reviewed

number of new outbound destinations per release

% workloads with default-deny egress

% release artifacts with verified signatures/attestations

% critical suppliers providing SBOM + provenance evidence

mean time to investigate behavioral diff

number of undocumented privileged interfaces discovered
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Эти metrics уже показывают реальную maturity.&lt;/p&gt;




&lt;h1&gt;
  
  
  Где здесь роль Security Director
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Security Director должен определить:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Какие продукты действительно требуют такого assurance level.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какие capabilities считаются запрещёнными или security-sensitive.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какие evidence обязательны для release.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какие suppliers считаются high risk.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какие controls являются release blockers.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Как ограничивается impact, если prevention не сработал.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;И главное — перевести абстрактный страх:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«А вдруг в продукте есть закладка?»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;в проверяемые инженерные вопросы:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Можно ли отследить источник этого бинарного файла?
Можно ли воспроизвести его в другой среде?
Что изменилось в его возможностях\поведении?
Какое новое сетевое поведение появилось?
Кто санкционировал изменение?
Может ли продукт\ПО осуществлять утечку данных?
Может ли поставщик удаленно отключить его?
Может ли приложение работать без произвольного доступа к Интернету?
Можно ли обнаружить изменения после развертывания?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Если на эти вопросы есть хорошие ответы, разговор о backdoors перестаёт быть конспирологией и становится &lt;strong&gt;обычной инженерией доверия&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Выводы
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Product Security долгое время концентрировался на vulnerabilities.&lt;/strong&gt; Это логично: SQL injection, memory corruption и broken access control встречаются значительно чаще, чем специально внедрённые backdoors.&lt;/p&gt;

&lt;p&gt;Но по мере того как software supply chains становятся длиннее, продукты сложнее, а критичные системы всё сильнее зависят от внешних vendors, вопрос &lt;strong&gt;software integrity&lt;/strong&gt; становится самостоятельной security discipline.&lt;/p&gt;

&lt;p&gt;Не существует одного инструмента, который докажет отсутствие недекларированных возможностей. Такова рельсность.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Но можно построить архитектуру, в которой скрытую функцию:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;сложно внедрить;&lt;/li&gt;
&lt;li&gt;сложно протащить через build;&lt;/li&gt;
&lt;li&gt;сложно спрятать в binary;&lt;/li&gt;
&lt;li&gt;сложно активировать незаметно;&lt;/li&gt;
&lt;li&gt;сложно использовать для exfiltration;&lt;/li&gt;
&lt;li&gt;и значительно легче обнаружить.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Именно это, на мой взгляд, и есть современный &lt;strong&gt;Software Integrity &amp;amp; Malicious Functionality Assurance&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Что почитать и посмотреть дальше
&lt;/h1&gt;

&lt;p&gt;Если хочется углубиться не только в standards, а именно в логику доверия и реальные investigations, я бы начал отсюда.&lt;/p&gt;

&lt;h3&gt;
  
  
  Papers / primary material
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ken Thompson — Reflections on Trusting Trust&lt;/strong&gt; — фундаментальный thought experiment про compiler-level subversion.
&lt;a href="https://doi.org/10.1145/358198.358210" rel="noopener noreferrer"&gt;https://doi.org/10.1145/358198.358210&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;David A. Wheeler — Diverse Double-Compiling&lt;/strong&gt; — практическая защита от класса “trusting trust” при определённых assumptions.
&lt;a href="https://dwheeler.com/trusting-trust/" rel="noopener noreferrer"&gt;https://dwheeler.com/trusting-trust/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Andres Freund — original XZ disclosure&lt;/strong&gt; — великолепный пример расследования, начавшегося с runtime anomalies.
&lt;a href="https://www.openwall.com/lists/oss-security/2024/03/29/4" rel="noopener noreferrer"&gt;https://www.openwall.com/lists/oss-security/2024/03/29/4&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mandiant — 3CX / X_TRADER&lt;/strong&gt; — cascading software supply-chain compromise.
&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/3cx-software-supply-chain-compromise" rel="noopener noreferrer"&gt;https://cloud.google.com/blog/topics/threat-intelligence/3cx-software-supply-chain-compromise&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cisco Talos — CCleaner&lt;/strong&gt; — почему legitimate server + valid signature недостаточны.
&lt;a href="https://blog.talosintelligence.com/avast-distributes-malware/" rel="noopener noreferrer"&gt;https://blog.talosintelligence.com/avast-distributes-malware/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Рекомендуемое видео
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Computerphile — Reflections on Trusting Trust&lt;/strong&gt; — хорошее человеческое объяснение идеи Thompson.
&lt;a href="https://www.youtube.com/watch?v=SJ7lOus1FzQ" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=SJ7lOus1FzQ&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Cloud Tech — Securing your software supply chain&lt;/strong&gt; — короткий introduction к lifecycle trust и SLSA.
&lt;a href="https://www.youtube.com/watch?v=Dg-hD4HHKT8" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=Dg-hD4HHKT8&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Standards / guidance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;NIST SP 800-161 Rev. 1 — C-SCRM
&lt;/li&gt;
&lt;li&gt;NIST SP 800-218 — SSDF
&lt;/li&gt;
&lt;li&gt;OWASP SCVS
&lt;/li&gt;
&lt;li&gt;SLSA 1.2
&lt;/li&gt;
&lt;li&gt;in-toto
&lt;/li&gt;
&lt;li&gt;Sigstore
&lt;/li&gt;
&lt;li&gt;TUF
&lt;/li&gt;
&lt;li&gt;Common Criteria / ISO/IEC 15408&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;И я бы обязательно читал &lt;strong&gt;original incident disclosures&lt;/strong&gt;, а не только пересказы. Именно там обычно находятся детали, которые превращают заезженный термин “supply chain attack” в конкретный engineering control.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;NIST SP 800-161 Rev. 1 — Cybersecurity Supply Chain Risk Management Practices for Systems and Organizations
&lt;a href="https://csrc.nist.gov/pubs/sp/800/161/r1/upd1/final" rel="noopener noreferrer"&gt;https://csrc.nist.gov/pubs/sp/800/161/r1/upd1/final&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST SP 1326 — C-SCRM Due Diligence Assessment Quick-Start Guide, July 2026
&lt;a href="https://csrc.nist.gov/pubs/sp/1326/final" rel="noopener noreferrer"&gt;https://csrc.nist.gov/pubs/sp/1326/final&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST SP 800-218 — Secure Software Development Framework
&lt;a href="https://csrc.nist.gov/pubs/sp/800/218/final" rel="noopener noreferrer"&gt;https://csrc.nist.gov/pubs/sp/800/218/final&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST IR 8397 — Guidelines on Minimum Standards for Developer Verification of Software
&lt;a href="https://csrc.nist.gov/pubs/ir/8397/final" rel="noopener noreferrer"&gt;https://csrc.nist.gov/pubs/ir/8397/final&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST SP 800-193 — Platform Firmware Resiliency Guidelines
&lt;a href="https://csrc.nist.gov/pubs/sp/800/193/final" rel="noopener noreferrer"&gt;https://csrc.nist.gov/pubs/sp/800/193/final&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MITRE ATT&amp;amp;CK T1195 — Supply Chain Compromise
&lt;a href="https://attack.mitre.org/techniques/T1195/" rel="noopener noreferrer"&gt;https://attack.mitre.org/techniques/T1195/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MITRE CWE-506 — Embedded Malicious Code
&lt;a href="https://cwe.mitre.org/data/definitions/506.html" rel="noopener noreferrer"&gt;https://cwe.mitre.org/data/definitions/506.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MITRE CWE-510 — Trapdoor
&lt;a href="https://cwe.mitre.org/data/definitions/510.html" rel="noopener noreferrer"&gt;https://cwe.mitre.org/data/definitions/510.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SLSA Specification v1.2
&lt;a href="https://slsa.dev/spec/v1.2/" rel="noopener noreferrer"&gt;https://slsa.dev/spec/v1.2/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;in-toto
&lt;a href="https://in-toto.io/docs/getting-started/" rel="noopener noreferrer"&gt;https://in-toto.io/docs/getting-started/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sigstore / Cosign
&lt;a href="https://docs.sigstore.dev/cosign/signing/overview/" rel="noopener noreferrer"&gt;https://docs.sigstore.dev/cosign/signing/overview/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rekor Transparency Log
&lt;a href="https://docs.sigstore.dev/logging/overview/" rel="noopener noreferrer"&gt;https://docs.sigstore.dev/logging/overview/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Update Framework
&lt;a href="https://theupdateframework.io/docs/overview/" rel="noopener noreferrer"&gt;https://theupdateframework.io/docs/overview/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Reproducible Builds
&lt;a href="https://reproducible-builds.org/docs/formal-definition/" rel="noopener noreferrer"&gt;https://reproducible-builds.org/docs/formal-definition/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CISA — Active Exploitation of SolarWinds Software
&lt;a href="https://www.cisa.gov/news-events/alerts/2020/12/13/active-exploitation-solarwinds-software" rel="noopener noreferrer"&gt;https://www.cisa.gov/news-events/alerts/2020/12/13/active-exploitation-solarwinds-software&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SolarWinds SEC filing — SUNBURST investigation update     &lt;a href="https://www.sec.gov/Archives/edgar/data/1739942/000173994221000080/swi-20210331.htm" rel="noopener noreferrer"&gt;https://www.sec.gov/Archives/edgar/data/1739942/000173994221000080/swi-20210331.htm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Red Hat — CVE-2024-3094 / XZ Utils
&lt;a href="https://access.redhat.com/security/cve/cve-2024-3094" rel="noopener noreferrer"&gt;https://access.redhat.com/security/cve/cve-2024-3094&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Juniper — Important Announcement about ScreenOS
&lt;a href="https://community.juniper.net/browse/blogs/blogviewer?BlogKey=e0a62f51-c793-4e7e-98e8-c5ac081f2c18" rel="noopener noreferrer"&gt;https://community.juniper.net/browse/blogs/blogviewer?BlogKey=e0a62f51-c793-4e7e-98e8-c5ac081f2c18&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ISO/IEC 15408 series / Common Criteria
&lt;a href="https://www.iso.org/standard/15408-1" rel="noopener noreferrer"&gt;https://www.iso.org/standard/15408-1&lt;/a&gt;
&lt;a href="https://www.iso.org/standard/15408-3" rel="noopener noreferrer"&gt;https://www.iso.org/standard/15408-3&lt;/a&gt;
&lt;a href="https://www.commoncriteriaportal.org/" rel="noopener noreferrer"&gt;https://www.commoncriteriaportal.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;EU Cyber Resilience Act — Regulation (EU) 2024/2847
&lt;a href="https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R2847" rel="noopener noreferrer"&gt;https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R2847&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ReversingLabs Spectra Assure
&lt;a href="https://www.reversinglabs.com/products/spectra-assure" rel="noopener noreferrer"&gt;https://www.reversinglabs.com/products/spectra-assure&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Crypto AG investigation — The Washington Post
&lt;a href="https://www.washingtonpost.com/graphics/2020/world/national-security/cia-crypto-encryption-machines-espionage/" rel="noopener noreferrer"&gt;https://www.washingtonpost.com/graphics/2020/world/national-security/cia-crypto-encryption-machines-espionage/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Ken Thompson — Reflections on Trusting Trust
&lt;a href="https://doi.org/10.1145/358198.358210" rel="noopener noreferrer"&gt;https://doi.org/10.1145/358198.358210&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;DARPA — TRUST in Integrated Circuits
&lt;a href="https://www.darpa.mil/research/programs/trusted-integrated-circuits" rel="noopener noreferrer"&gt;https://www.darpa.mil/research/programs/trusted-integrated-circuits&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Microsoft MSRC — Petya / M.E.Doc update service
&lt;a href="https://www.microsoft.com/en-us/msrc/blog/2017/06/update-on-petya-malware-attacks" rel="noopener noreferrer"&gt;https://www.microsoft.com/en-us/msrc/blog/2017/06/update-on-petya-malware-attacks&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Cisco Talos — CCleaner supply-chain compromise
&lt;a href="https://blog.talosintelligence.com/avast-distributes-malware/" rel="noopener noreferrer"&gt;https://blog.talosintelligence.com/avast-distributes-malware/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Andres Freund — original XZ backdoor disclosure
&lt;a href="https://www.openwall.com/lists/oss-security/2024/03/29/4" rel="noopener noreferrer"&gt;https://www.openwall.com/lists/oss-security/2024/03/29/4&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mandiant — 3CX compromise initiated by X_TRADER compromise
&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/3cx-software-supply-chain-compromise" rel="noopener noreferrer"&gt;https://cloud.google.com/blog/topics/threat-intelligence/3cx-software-supply-chain-compromise&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP Software Component Verification Standard
&lt;a href="https://scvs.owasp.org/" rel="noopener noreferrer"&gt;https://scvs.owasp.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ГОСТ Р 56939-2024 — Росстандарт
&lt;a href="https://protect.gost.ru/gost/details/f3818925-a96f-4f55-96e9-46b44720ee64" rel="noopener noreferrer"&gt;https://protect.gost.ru/gost/details/f3818925-a96f-4f55-96e9-46b44720ee64&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ФСТЭК России — Методика выявления уязвимостей и недекларированных возможностей, 12.05.2026 (выписка)
&lt;a href="https://service.securitm.ru/docs/metodika-vyiavleniia-uiazvimostei-i-nedeklarirovannyx-vozmoznostei-v-programmnom-obespecenii-vypiska" rel="noopener noreferrer"&gt;https://service.securitm.ru/docs/metodika-vyiavleniia-uiazvimostei-i-nedeklarirovannyx-vozmoznostei-v-programmnom-obespecenii-vypiska&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Гостехкомиссия России — РД 1999 №114
&lt;a href="https://base.garant.ru/197898/" rel="noopener noreferrer"&gt;https://base.garant.ru/197898/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Приказ ФСБ России №796 — требования к средствам электронной подписи и УЦ
&lt;a href="https://www.consultant.ru/document/cons_doc_LAW_126209/" rel="noopener noreferrer"&gt;https://www.consultant.ru/document/cons_doc_LAW_126209/&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>supplychain</category>
      <category>devsecops</category>
      <category>cybersecurity</category>
      <category>productsecurity</category>
    </item>
    <item>
      <title>Парсим ОУД4: что Банк России на самом деле хочет от вашего кода, сборки и Secure SDLC для софтверных компаний ФинТеха</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Mon, 19 Oct 2026 03:00:00 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/parsim-oud4-chto-bank-rossii-na-samom-dielie-khochiet-ot-vashiegho-koda-sborki-i-secure-sdlc-dlia-1hha</link>
      <guid>https://dev.to/ivan-piskunov/parsim-oud4-chto-bank-rossii-na-samom-dielie-khochiet-ot-vashiegho-koda-sborki-i-secure-sdlc-dlia-1hha</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;КОПИЯ СТАТЬЯ (&lt;a href="https://telegra.ph/Parsim-OUD4-chto-Bank-Rossii-na-samom-dele-hochet-ot-vashego-koda-sborki-i-Secure-SDLC-dlya-softvernyh-kompanij-FinTeha-reserch--03-19" rel="noopener noreferrer"&gt;ПЕРЕНОС С ДРУГОГО ХОСТИНГА&lt;/a&gt;) ОТ 19 Марта 2026&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;ОУД4 — это момент, когда Банк России приходит не к CISO с презентацией, а к инженерам в Git, CI/CD, backlog и release process. Здесь уже не работает схема &lt;em&gt;“у нас есть сканер, secure coding guide и добрый AppSec”&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Нужно доказать, что продукт разрабатывается, собирается, тестируется и обновляется в &lt;strong&gt;&lt;em&gt;управляемом Secure SDLC&lt;/em&gt;&lt;/strong&gt;, а не в режиме “три сильных инженера и один шаман всё держат на честном слове”.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;Этот материал — практическая авторская инженерная интерпретация требований Банка России к прикладному ПО финансовых организаций. Это не официальный комментарий Банка России, не юридическое заключение и не замена формальной оценки соответствия. Но как рабочая карта для команды разработки, AppSec, DevOps, QA и архитекторов — вполне годится: чтобы не читать профиль защиты как древний манускрипт, а переложить его на язык реальных процессов, артефактов и pipeline.&lt;/p&gt;

&lt;p&gt;Профиль защиты версии 4.0 прямо разработан Банком России для разработчиков, заявителей, органов по сертификации, испытательных лабораторий и организаций, которые проводят оценку соответствия.&lt;/p&gt;

&lt;p&gt;Ну, что заглянем документу под капот, раскидаем шелуху, скинем лишний формализм чиновников и четенько двинемся к плану действий! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Котаны, Let's Go!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F03xs5481p2ucel0xnpla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F03xs5481p2ucel0xnpla.png" alt="Парсим ОУД4: Банк России, Application Security, DevSecOps и Secure SDLC" width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Intro
&lt;/h3&gt;

&lt;p&gt;Если вы (ну, ваша компания, а ты там как Sec спец) делаете коробочную АБС, ДБО-компонент, API-контур, интернет-модуль или другой банковский софт, то ОУД4 — это уже не история из серии “безопасники что-то там согласуют”. Это точка, где регуляторный язык приходит в SDLC и начинает задавать очень конкретные инженерные вопросы:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;кто меняет код,&lt;/li&gt;
&lt;li&gt;как зафиксирован baseline релиза,&lt;/li&gt;
&lt;li&gt;чем подтверждается целостность исходников,&lt;/li&gt;
&lt;li&gt;как защищена build-среда,&lt;/li&gt;
&lt;li&gt;какие именно SAST/DAST/фаззинг-проверки запускались,&lt;/li&gt;
&lt;li&gt;что происходит с уязвимостями,&lt;/li&gt;
&lt;li&gt;как выпускаются патчи,&lt;/li&gt;
&lt;li&gt;как живёт supply chain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;и т.д.&lt;/p&gt;

&lt;p&gt;В профиль Банка России 4.0 это зашито не намёками, а прямыми компонентами доверия. Короче, без лишней шелухи ОУД4 — это не “бумажка для аудита”, хотя доя нормативке РФ так раньше в основном и было. Это момент, когда разработка должна стать доказуемой (ну, и в конечном счете конечно сам продукт\сервис должен быть безопаснее, ведь вы не хотите что бы ваши лавехи на счете в банке подрезал какой-нибудь хЭкер:).&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Общее представление о документе ЦБ РФ и почему он бьет именно по AppSeс\DevSecOps инженерам, а не по CISO
&lt;/h3&gt;

&lt;p&gt;Базовый документ здесь - профиль защиты прикладного программного обеспечения автоматизированных систем и приложений кредитных организаций и некредитных финансовых организаций, версия 4.0. В справке профиля прямо указаны наименование, тип ПО, версия профиля и идентификация объекта оценки. Там же зафиксировано, что профиль соответствует пакету требований доверия ОУД4, усиленному и расширенному целым набором дополнительных компонентов.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Настоящий ПЗ соответствует пакету требований доверия: оценочный уровень доверия 4 (ОУД4)…»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Отдельно важно, что профиль 4.0 уже завязан на актуальную нормативную рамку Банка России. Положение Банка России № 851-П от 30.01.2025 устанавливает обязательные требования к обеспечению защиты информации при осуществлении банковской деятельности в целях противодействия переводам денежных средств без согласия клиента и применяется к информации, обрабатываемой в автоматизированных системах, используемых для таких операций. Этим же положением 683-П признано утратившим силу.&lt;/p&gt;

&lt;p&gt;Если перевести это на инженерный язык, регулятор ждёт ответа на семь скучных, но &lt;strong&gt;очень конкретных вопросов:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;что именно вы оцениваете;&lt;/li&gt;
&lt;li&gt;какой именно релиз показываете;&lt;/li&gt;
&lt;li&gt;как устроена архитектура безопасности;&lt;/li&gt;
&lt;li&gt;кто и как меняет код;&lt;/li&gt;
&lt;li&gt;где и как собирается релиз;&lt;/li&gt;
&lt;li&gt;какие проверки реально выполнялись;&lt;/li&gt;
&lt;li&gt;как живут уязвимости, патчи и обновления.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Форма у документа нормативная, но по сути это очень инженерный документ: он проверяет не лозунги, а состояние SDLC и качество evidence.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftudwrqogyylillv4u3u7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftudwrqogyylillv4u3u7.png" alt="Почему ОУД4 бьёт по AppSec / DevSecOps инженерам, а не по CISO" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Мэтчим ОУД4 с Secure SDLC и best practices
&lt;/h3&gt;

&lt;p&gt;Если смотреть на международные best practices, совпадение очень плотное. NIST SSDF рекомендует встраивать secure software development practices в SDLC, чтобы снижать количество уязвимостей, уменьшать последствия невыявленных проблем и устранять их корневые причины. OWASP SAMM описывает зрелостную модель, которая помогает формировать и улучшать программу безопасности разработки под реальные риски организации.&lt;/p&gt;

&lt;h4&gt;
  
  
  2.1. Что общего
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;1. Security by design, а не финальный “добивочный пентест”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;И SSDF, и SAMM, и профиль Банка России исходят из одной и той же идеи: безопасность должна жить в жизненном цикле, а не только в последней неделе перед аудитом.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Threat modeling и attack surface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;В профиле есть отдельный компонент ALC_DVS_EXT.1 про моделирование угроз и описание поверхности атаки. Это очень хорошо ложится на нормальный Secure SDLC: сначала понимаем, где границы доверия и как атакуют систему, потом уже обсуждаем инструменты.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Secure coding + secure testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Статический анализ, динамический анализ, нефункциональные проверки, фаззинг, контроль результатов — всё это звучит как обычный зрелый AppSec-процесс. Только у Банка России это должно быть не “в теории есть”, а оформлено и предъявляемо.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Vulnerability management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NIST SSDF говорит про снижение числа уязвимостей и устранение первопричин, а профиль Банка России требует процедур получения сообщений о недостатках, их исправления и выпуска процедур по исправлению для пользователей.&lt;/p&gt;

&lt;h4&gt;
  
  
  2.2. В чем специфика именно Банка России
&lt;/h4&gt;

&lt;p&gt;Вот тут и начинается уже не “просто хороший Secure SDLC”, а именно регуляторная инженерия.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Особенность №1. Формальный объект оценки&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;В обычной зрелой разработке можно обсуждать программу безопасности в целом. В ОУД4 надо очень жёстко зафиксировать объект оценки: какой именно продукт, какой релиз, какие модули, какие границы, что входит, что не входит. Без этого весь дальнейший разговор теряет смысл.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Особенность №2. Не просто процессы, а доказательная документация&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Тут уже мало сказать “у нас всё настроено”. Нужны схемы, регламенты, описания ролей, параметры инструментов, контрольные суммы, журналы, материалы анализа, связка с релизом и объектом оценки. Короче докажи что все ОК, при том спрос не только за "бумагу", а еще и что по факту вшито в CD\CI конвейер&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Особенность №3. Build и supply chain становятся частью оценки доверия&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;У многих команд Secure SDLC заканчивается на code review + SAST + DAST. так по сути было еще несколько лет назад, а в некоторых компаниях и сейчас:):)&lt;/p&gt;

&lt;p&gt;У Банка России отдельно появляются безопасность сборочной среды, контроль ролей в build-контуре, журналы аудита сборки, выделенное хранилище результатов и анализ влияния сторонних поставщиков и внешних компонентов. Вообщем здравый подход! Наконец-то чо-то путное от мегарегулятора, а не "палки в колеса".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Особенность №4. Обновления — это уже предмет оценки, а не бытовая эксплуатация&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Профиль требует процедуры получения обновления, проверки целостности, тестирования, установки, контроля установки и верификации применения, а также материалы анализа влияния обновления на безопасность.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Особенность №5. ОУД4 здесь реально усилен и расширен&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Профиль прямо перечисляет, что к базовому ОУД4 добавлены компоненты, среди которых ADV_IMP.2, ALC_FLR.2, ACO_VUL.2, ADV_IMP_EXT.3, ADV_TDS_EXT.3, AGD_OPE_EXT.1, ALC_DEL_EXT.1, ALC_DVS_EXT.1, ALC_DVS_EXT.2, ALC_DVS_EXT.3 и другие. То есть это не “обычный ОУД4”, а ОУД4, натянутый именно на прикладное ПО финансового сектора и на безопасную разработку как практику.&lt;/p&gt;

&lt;p&gt;ОУД4 очень неплохо мэтчится с Secure SDLC / DevSecOps / SSDF / SAMM, но Банк России добавляет три жёсткие вещи: формальный scope, доказательную документацию и проверяемость каждого инженерного шага.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffmxcknsuoion3oor9acj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffmxcknsuoion3oor9acj.png" alt="ОУД4 и лучшие практики Secure SDLC" width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Ошибка тащить на ОУД4 “всю АБС вообще”
&lt;/h3&gt;

&lt;p&gt;Самый частый инженерный фейл выглядит так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“У нас есть большая коробочная АБС. Ну значит, и показывать будем всю систему”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Нет. Так делать не надо. Мы же адекватные люди.&lt;/p&gt;

&lt;p&gt;Профиль требует идентифицируемый объект оценки, а это автоматически означает, что &lt;strong&gt;чем шире scope, тем сложнее:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;зафиксировать baseline;&lt;/li&gt;
&lt;li&gt;показать полное представление реализации;&lt;/li&gt;
&lt;li&gt;удержать traceability;&lt;/li&gt;
&lt;li&gt;доказать покрытие тестами;&lt;/li&gt;
&lt;li&gt;держать актуальным evidence;&lt;/li&gt;
&lt;li&gt;пережить клиентские кастомизации без развала всей доказательной модели.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Правильная стратегия почти всегда такая:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;выбрать один контур;&lt;/li&gt;
&lt;li&gt;зафиксировать один релиз / одну ветку / один tag;&lt;/li&gt;
&lt;li&gt;определить один набор модулей;&lt;/li&gt;
&lt;li&gt;собирать evidence только под него.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Обычно хорошими кандидатами на объект оценки становятся&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;интернет-контур;&lt;/li&gt;
&lt;li&gt;API-шлюз;&lt;/li&gt;
&lt;li&gt;модуль аутентификации и управления сессиями;&lt;/li&gt;
&lt;li&gt;модуль электронных документов;&lt;/li&gt;
&lt;li&gt;отдельный критичный платёжный компонент.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Вообщем, котаны, как видим, ОУД4 любит узкий, замороженный и доказуемый scope. Всё остальное быстро превращается в проект “а это тоже входит?”.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Транслируем нормативку ЦБ РФ в инженерный язык
&lt;/h3&gt;

&lt;h4&gt;
  
  
  4.1. Исходники должны быть не просто написаны, а прослеживаемы
&lt;/h4&gt;

&lt;p&gt;В профиле прямо сказано, что соответствие ОУД4 усилено компонентом ADV_IMP.2 “Полное отображение представления реализации ФБО”, а также расширенным компонентом ADV_IMP_EXT.3 “Реализация ОО”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;На инженерском языке это означает:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;baseline релиза зафиксирован;&lt;/li&gt;
&lt;li&gt;есть tag, commit set, release branch;&lt;/li&gt;
&lt;li&gt;есть перечень модулей внутри контура оценки;&lt;/li&gt;
&lt;li&gt;есть описание реализации и её состав;&lt;/li&gt;
&lt;li&gt;есть трассировка “требование → функция → модуль → тест → результат”.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Иначе говоря, исходники для ОУД4 — это не “репозиторий где-то в GitLab”. Это конкретная и идентифицированная реализация конкретного объекта оценки.&lt;/p&gt;

&lt;p&gt;Если вы не можете однозначно ответить, какой именно commit и какой именно набор модулей вы показываете, то дальше обсуждать безопасность рановато.&lt;/p&gt;




&lt;h4&gt;
  
  
  4.2. Доступ к коду и его целостность — отдельный предмет оценки
&lt;/h4&gt;

&lt;p&gt;Профиль отдельно вводит ALC_DVS_EXT.3: управление доступом и контроль целостности кода при разработке. В описании этого компонента прямо сказано, что модель управления доступом к исходному коду должна включать перечень сотрудников, их права и обязанности, а также описание выбранной модели управления доступом и используемых инструментов.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;На практике это означает:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;protected branches;&lt;/li&gt;
&lt;li&gt;понятные правила merge/push/release;&lt;/li&gt;
&lt;li&gt;review policy;&lt;/li&gt;
&lt;li&gt;audit trail;&lt;/li&gt;
&lt;li&gt;backup и контроль целостности репозитория;&lt;/li&gt;
&lt;li&gt;регламент ролей и прав, а не просто “ну у нас и так все знают”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;То есть ОУД4 не устраивает ответ “GitLab у нас настроен нормально”. Нужны роль, правило, след, evidence.&lt;/p&gt;




&lt;h4&gt;
  
  
  4.3. Build-среда — это уже не DevOps-внутрянка, а зона доверия
&lt;/h4&gt;

&lt;p&gt;Один из самых показательных компонентов — ALC_DVS_EXT.2 про обеспечение безопасности сборочной среды. Там прямо сказано, что информация о безопасности сборочной среды должна содержать описание ожидаемых результатов сборки, прав доступа к build-среде и хранилищу результатов сборки, а схематическое изображение сборочной среды должно показывать серверы, узлы, виртуальные узлы, контейнеризацию, связи между ними и компоненты, реализующие меры безопасности.&lt;/p&gt;

&lt;p&gt;Журналы аудита процессов сборки должны включать дату и время, версию ПО, конфигурацию сборки, шаги сборки и события безопасности. Для подтверждения хранения результатов сборки могут использоваться журналы с местом сохранения модуля и результатами контрольного суммирования.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Если убрать канцелярит, то нужны:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;build map;&lt;/li&gt;
&lt;li&gt;роли и доступы в CI/CD;&lt;/li&gt;
&lt;li&gt;журналируемость сборки;&lt;/li&gt;
&lt;li&gt;артефактное хранилище;&lt;/li&gt;
&lt;li&gt;hash/checksum/signature;&lt;/li&gt;
&lt;li&gt;понятный путь от commit до release artifact;&lt;/li&gt;
&lt;li&gt;желательно repeatable build.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Таким образом, если релиз нельзя проследить от исходника до артефакта, то доверие к нему рушится ещё до разговора про SAST. Опа))) красиво, красиво! Мои аплодисменты ЦБ РФ!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;**_CI/CD сам по себе ещё не Secure SDLC_**&lt;/code&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  4.4. SAST / DAST / fuzzing — не “у нас есть сканер”, а “есть процедура”
&lt;/h4&gt;

&lt;p&gt;Профиль вводит ALC_TAT_EXT.1 для статического анализа и ALC_TAT_EXT.2 для динамического анализа кода программы. Для статического анализа прямо указано, что перечень инструментов должен включать названия инструментов, их версии и соответствие используемым языкам программирования, а отчёты должны содержать срабатывания, результаты разметки, предупреждения, описание ошибок, их тип и место в исходном коде.&lt;/p&gt;

&lt;p&gt;Это означает, что нужен не просто “сканер в пайплайне”, а как минимум:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;регламент SAST;&lt;/li&gt;
&lt;li&gt;перечень и версии инструментов;&lt;/li&gt;
&lt;li&gt;правила/параметры конфигурации;&lt;/li&gt;
&lt;li&gt;правила повторного запуска;&lt;/li&gt;
&lt;li&gt;актуальные отчёты именно по нужному релизу;&lt;/li&gt;
&lt;li&gt;разметка findings;&lt;/li&gt;
&lt;li&gt;связь результатов с языками и модулями.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;То же относится к DAST и фаззингу: инструмент — это только часть истории. Для ОУД4 важна воспроизводимая инженерная процедура.&lt;/p&gt;

&lt;p&gt;Типовой SonarQube, любая SAST-платформа или DAST-сканер сами по себе ОУД4 не закрывают. Закрывает процесс, внутри которого они живут. Так что, котаны, нам здесь есть работы, кроме нас ее никто грамотно не сделает:)&lt;/p&gt;




&lt;h4&gt;
  
  
  4.5. Уязвимости должны жить в системе, а не в переписке
&lt;/h4&gt;

&lt;p&gt;В компоненте ALC_FLR.2 профиль требует, чтобы процедуры устранения недостатков описывали средства получения сообщений от пользователей, а процедуры обработки известных недостатков обеспечивали исправление недостатков и выпуск процедур по исправлению для пользователей. Отдельно сказано, что исправления не должны приводить к появлению новых недостатков.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;На инженерском языке это читается так:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;есть единый vulnerability register;&lt;/li&gt;
&lt;li&gt;есть входной канал для внешних сообщений;&lt;/li&gt;
&lt;li&gt;есть triage;&lt;/li&gt;
&lt;li&gt;есть owner;&lt;/li&gt;
&lt;li&gt;есть статус и fix version;&lt;/li&gt;
&lt;li&gt;есть уведомление пользователей;&lt;/li&gt;
&lt;li&gt;есть контроль, что патч не принёс новый баг безопасности.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Если уязвимость живёт только в письме, чате или голове одного безопасника — для ОУД4 это почти то же самое, что её нет. Так что только реальные ратефакты1 Только верифицируемые источники, подтверждение от нескольких сторон (Dev, QA, Ops, Sec)&lt;/p&gt;




&lt;h4&gt;
  
  
  4.6. Supply chain — это уже не “дополнительная зрелость”, а прямая регуляторная тема
&lt;/h4&gt;

&lt;p&gt;Компонент ALC_DEL_EXT.1 требует сведения о компонентах инфраструктуры разработки, зависящих от сторонних поставщиков, и о компонентах, которые поставляются или заимствуются у сторонних поставщиков. Там же отдельно фигурируют перечень поставщиков, сведения о договорах и перечень элементов инфраструктуры, воздействие на которые может привести к появлению недекларированных возможностей в ПО.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;На практике это означает:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;inventory зависимостей;&lt;/li&gt;
&lt;li&gt;понимание, откуда приезжают библиотеки, образы, SDK, агенты;&lt;/li&gt;
&lt;li&gt;SCA/SBOM;&lt;/li&gt;
&lt;li&gt;контроль внешних registries и mirrors;&lt;/li&gt;
&lt;li&gt;понимание, где third-party code становится частью вашего релиза.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Как видим Supply chain в ОУД4 — это уже не nice-to-have зрелой команды, а официальный предмет оценки.&lt;/p&gt;




&lt;h4&gt;
  
  
  4.7. Обновления и патчи — это тоже безопасность
&lt;/h4&gt;

&lt;p&gt;В ALC_FPU_EXT.1 профиль прямо требует, чтобы регламент обновления предусматривал описание процедур получения обновления, контроля его целостности, типового тестирования, установки, контроля установки и верификации применения обновления. В AMA_SIA_EXT.3 сказано, что материалы анализа влияния обновлений на безопасность должны идентифицировать функции безопасности и компоненты объекта оценки, на которые влияет обновление, а оценщик должен подтвердить влияние или отсутствие влияния обновлений на безопасность.&lt;/p&gt;

&lt;p&gt;То есть патч в модели Банка России — это не “собрали архив и отправили клиенту”. Это событие, которое должно иметь:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;update procedure;&lt;/li&gt;
&lt;li&gt;update package integrity control;&lt;/li&gt;
&lt;li&gt;test method;&lt;/li&gt;
&lt;li&gt;installation/verification flow;&lt;/li&gt;
&lt;li&gt;update impact analysis;&lt;/li&gt;
&lt;li&gt;доказательство, что уязвимость устранили и новых не занесли.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Безопасный релиз — это только начало. Потом ещё надо уметь безопасно обновлять продукт. То есть поддерживать, мониторить, латать если потребуется, и все это на плечах вендора) Полный цикл есть полный цикл! Браво, ЦБ РФ, мы долго этого ждали!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fylux9d4zj52fs84wns0w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fylux9d4zj52fs84wns0w.png" alt="Банк России и команда безопасной разработки" width="640" height="427"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Где файдинги кладутся в tracker чтобы ОУД4 не превратился в театр созвонов
&lt;/h3&gt;

&lt;p&gt;Вот здесь твой трекер вообще не “дополнение”, а рабочий нерв проекта. В загруженном шаблоне уже правильно заложены шапка проекта, master tracker и стартовые строки по блокам Scope / Docs / Code / Build / Testing / Vulns / Updates / Supply Chain / Governance&lt;/p&gt;

&lt;h4&gt;
  
  
  5.1. Сниппет шапки OUD4 Tracker
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Поле&lt;/th&gt;
&lt;th&gt;Значение&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Продукт&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Контур оценки / объект оценки&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Релиз / версия&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Репозиторий / ветка / tag&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Команда&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product Owner&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security Owner&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Архитектор&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dev Lead&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DevOps / Release Owner&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QA Owner&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Doc / Compliance Owner&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Дата старта подготовки&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Плановая дата dry run&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Плановая дата внешней оценки&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Общий статус&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Главные риски&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  5.2. Сниппет master tracker
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Колонка&lt;/th&gt;
&lt;th&gt;Что писать&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ID&lt;/td&gt;
&lt;td&gt;Уникальный номер строки&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Block&lt;/td&gt;
&lt;td&gt;Scope / Docs / Code / Build / Testing / Vulns / Updates / Supply Chain / Governance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control / Requirement&lt;/td&gt;
&lt;td&gt;Что нужно выполнить или доказать&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deliverable / Artifact&lt;/td&gt;
&lt;td&gt;Чем это подтверждается&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner&lt;/td&gt;
&lt;td&gt;Конкретный человек&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Current State&lt;/td&gt;
&lt;td&gt;Есть / Частично / Нет / Есть, но не доказуемо&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Status&lt;/td&gt;
&lt;td&gt;Not started / In progress / Blocked / Ready for review / Done&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Priority&lt;/td&gt;
&lt;td&gt;Critical / High / Medium / Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence Quality&lt;/td&gt;
&lt;td&gt;Strong / Medium / Weak&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gap Description&lt;/td&gt;
&lt;td&gt;Чего не хватает&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Action Required&lt;/td&gt;
&lt;td&gt;Что делаем дальше&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auditor Question&lt;/td&gt;
&lt;td&gt;Какой вопрос оценщика это закрывает&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  5.3. Несколько правильных стартовых строк
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ID&lt;/th&gt;
&lt;th&gt;Block&lt;/th&gt;
&lt;th&gt;Control / Requirement&lt;/th&gt;
&lt;th&gt;Deliverable / Artifact&lt;/th&gt;
&lt;th&gt;Owner&lt;/th&gt;
&lt;th&gt;Current State&lt;/th&gt;
&lt;th&gt;Priority&lt;/th&gt;
&lt;th&gt;Auditor Question&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OUD4-001&lt;/td&gt;
&lt;td&gt;Scope&lt;/td&gt;
&lt;td&gt;Определён объект оценки&lt;/td&gt;
&lt;td&gt;Scope document&lt;/td&gt;
&lt;td&gt;Product Owner&lt;/td&gt;
&lt;td&gt;Нет&lt;/td&gt;
&lt;td&gt;Critical&lt;/td&gt;
&lt;td&gt;Что именно оценивается?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OUD4-003&lt;/td&gt;
&lt;td&gt;Docs&lt;/td&gt;
&lt;td&gt;Подготовлено ЗБ / Security Target&lt;/td&gt;
&lt;td&gt;Security Target&lt;/td&gt;
&lt;td&gt;Security Manager&lt;/td&gt;
&lt;td&gt;Нет&lt;/td&gt;
&lt;td&gt;Critical&lt;/td&gt;
&lt;td&gt;Где формально описаны требования и объект оценки?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OUD4-008&lt;/td&gt;
&lt;td&gt;Build&lt;/td&gt;
&lt;td&gt;Описана сборочная среда&lt;/td&gt;
&lt;td&gt;Build environment scheme&lt;/td&gt;
&lt;td&gt;DevOps&lt;/td&gt;
&lt;td&gt;Нет&lt;/td&gt;
&lt;td&gt;Critical&lt;/td&gt;
&lt;td&gt;Где и как собирается релиз?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OUD4-011&lt;/td&gt;
&lt;td&gt;Testing&lt;/td&gt;
&lt;td&gt;Регламент статического анализа&lt;/td&gt;
&lt;td&gt;SAST procedure&lt;/td&gt;
&lt;td&gt;AppSec&lt;/td&gt;
&lt;td&gt;Нет&lt;/td&gt;
&lt;td&gt;Critical&lt;/td&gt;
&lt;td&gt;Как выполняется статический анализ?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OUD4-018&lt;/td&gt;
&lt;td&gt;Vulns&lt;/td&gt;
&lt;td&gt;Реестр уязвимостей&lt;/td&gt;
&lt;td&gt;Vulnerability register&lt;/td&gt;
&lt;td&gt;AppSec&lt;/td&gt;
&lt;td&gt;Нет&lt;/td&gt;
&lt;td&gt;Critical&lt;/td&gt;
&lt;td&gt;Как вы управляете уязвимостями?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OUD4-022&lt;/td&gt;
&lt;td&gt;Updates&lt;/td&gt;
&lt;td&gt;Процедура выпуска обновлений&lt;/td&gt;
&lt;td&gt;Update procedure&lt;/td&gt;
&lt;td&gt;Release Owner&lt;/td&gt;
&lt;td&gt;Нет&lt;/td&gt;
&lt;td&gt;Critical&lt;/td&gt;
&lt;td&gt;Как вы выпускаете исправления?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Как только каждое требование превращается в артефакт, owner’а, статус и вопрос оценщика, ОУД4 перестаёт быть мистикой и становится обычным инженерным проектом. Это уже дело1 Чувствую, качественный софт нас ждет если не игнорировать ив се делать грамотно!&lt;/p&gt;




&lt;h3&gt;
  
  
  6. План что делать когда "я пришёл в организацию, тут бардак, документации мало, продукт надо дотащить до ОУД4"
&lt;/h3&gt;

&lt;p&gt;Это самый практический кусок всей истории. Не для красивого блога, а для реальной жизни. Готов, ну, что делай заметки, погнали в практику!&lt;/p&gt;

&lt;p&gt;Патч без анализа влияния на безопасность — это не завершённая remediation story. Это лотерея с change log.&lt;/p&gt;

&lt;h4&gt;
  
  
  6.1. Неделя 1: остановить расползание scope
&lt;/h4&gt;

&lt;p&gt;Первая задача — не запускать сканеры, а прекратить хаос.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Что делаем сразу:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;выбираем один объект оценки;&lt;/li&gt;
&lt;li&gt;фиксируем один релиз-кандидат;&lt;/li&gt;
&lt;li&gt;запрещаем менять scope без отдельного решения;&lt;/li&gt;
&lt;li&gt;назначаем owner’ов по блокам;&lt;/li&gt;
&lt;li&gt;заводим master tracker;&lt;/li&gt;
&lt;li&gt;собираем список текущих дыр: нет ЗБ, нет схемы, нет регламента, нет реестра, нет update flow.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Результат недели:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;есть scope, owners, baseline и единое место учёта evidence.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Вывод. Пока не заморожен scope, всё остальное — просто энергичное движение в туман.&lt;/p&gt;




&lt;h4&gt;
  
  
  6.2. Неделя 2–3: собрать minimum viable OUD4 pack
&lt;/h4&gt;

&lt;p&gt;На этом этапе цель не “сделать идеально”, а быстро собрать каркас доказательств.&lt;/p&gt;

&lt;p&gt;Минимум, который должен появиться:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;draft ЗБ / Security Target;&lt;/li&gt;
&lt;li&gt;описание объекта оценки;&lt;/li&gt;
&lt;li&gt;архитектурная схема;&lt;/li&gt;
&lt;li&gt;trust boundaries;&lt;/li&gt;
&lt;li&gt;threat model;&lt;/li&gt;
&lt;li&gt;перечень интерфейсов;&lt;/li&gt;
&lt;li&gt;список внешних зависимостей;&lt;/li&gt;
&lt;li&gt;релизная модель;&lt;/li&gt;
&lt;li&gt;update flow draft;&lt;/li&gt;
&lt;li&gt;rules of coding;&lt;/li&gt;
&lt;li&gt;регламент доступа к исходникам;&lt;/li&gt;
&lt;li&gt;регламент безопасности сборочной среды.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Первые две-три недели — это не время “чинить всё AppSec”, а время собрать скелет, на который потом лягут проверки и документы.&lt;/p&gt;




&lt;h4&gt;
  
  
  6.3. Неделя 3–5: восстановить контроль над кодом и сборкой
&lt;/h4&gt;

&lt;p&gt;Теперь идём в инженерную фактуру.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;По коду&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;фиксируем protected branches;&lt;/li&gt;
&lt;li&gt;описываем merge/release roles;&lt;/li&gt;
&lt;li&gt;подтверждаем review policy;&lt;/li&gt;
&lt;li&gt;выгружаем evidence access control;&lt;/li&gt;
&lt;li&gt;замораживаем baseline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;По build&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;рисуем build pipeline map;&lt;/li&gt;
&lt;li&gt;фиксируем runners, build nodes, containers, artifact storage;&lt;/li&gt;
&lt;li&gt;включаем осмысленное логирование шагов сборки;&lt;/li&gt;
&lt;li&gt;организуем хранение артефактов;&lt;/li&gt;
&lt;li&gt;добавляем checksums/signatures;&lt;/li&gt;
&lt;li&gt;выделяем release owner.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Если у вас не под контролем исходники и build, дальше вы всё равно упрётесь в вопрос: “а что именно мы вообще показываем оценщику?”&lt;/p&gt;




&lt;h4&gt;
  
  
  6.4. Месяц 2: включить реальный контур анализа
&lt;/h4&gt;

&lt;p&gt;Только теперь имеет смысл включать анализ и тестирование уже как систему.&lt;/p&gt;

&lt;p&gt;Что делаем:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;утверждаем регламент SAST;&lt;/li&gt;
&lt;li&gt;утверждаем регламент DAST/runtime;&lt;/li&gt;
&lt;li&gt;определяем критичные модули для fuzzing assessment;&lt;/li&gt;
&lt;li&gt;прогоняем актуальные проверки по релизу;&lt;/li&gt;
&lt;li&gt;собираем test traceability matrix;&lt;/li&gt;
&lt;li&gt;закрываем negative scenarios;&lt;/li&gt;
&lt;li&gt;заводим findings register и remediation backlog.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;На этом этапе команда впервые понимает, что ОУД4 — это не штраф за существование, а структурированная модель контроля качества разработки.&lt;/p&gt;




&lt;h4&gt;
  
  
  6.5. Месяц 2–3: закрыть vulnerability process, supply chain и update flow
&lt;/h4&gt;

&lt;p&gt;Дальше обычно всплывают три самые больные темы.&lt;/p&gt;

&lt;h4&gt;
  
  
  Vulnerability management
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;единый реестр;&lt;/li&gt;
&lt;li&gt;triage;&lt;/li&gt;
&lt;li&gt;severity;&lt;/li&gt;
&lt;li&gt;owner;&lt;/li&gt;
&lt;li&gt;fix version;&lt;/li&gt;
&lt;li&gt;внешний канал сообщений;&lt;/li&gt;
&lt;li&gt;уведомление пользователей.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Supply chain
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;dependency inventory;&lt;/li&gt;
&lt;li&gt;SBOM/SCA;&lt;/li&gt;
&lt;li&gt;список сторонних поставщиков;&lt;/li&gt;
&lt;li&gt;контроль sources/registries;&lt;/li&gt;
&lt;li&gt;учёт third-party code в релизе.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Updates
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;update procedure;&lt;/li&gt;
&lt;li&gt;integrity check;&lt;/li&gt;
&lt;li&gt;test method;&lt;/li&gt;
&lt;li&gt;install/verify flow;&lt;/li&gt;
&lt;li&gt;update impact analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Именно здесь чаще всего выясняется, что продукт “вроде безопасный”, но жизненный цикл сопровождения у него неуправляемый.&lt;/p&gt;




&lt;h4&gt;
  
  
  6.6. Dry run перед внешней оценкой
&lt;/h4&gt;

&lt;p&gt;Перед реальной оценкой нужен внутренний прогон.&lt;/p&gt;

&lt;p&gt;Проверяем:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;у каждой critical-строки в tracker есть owner;&lt;/li&gt;
&lt;li&gt;по каждому critical control есть artefact;&lt;/li&gt;
&lt;li&gt;evidence относится к нужному релизу, а не к “какому-то соседнему”;&lt;/li&gt;
&lt;li&gt;ссылки живые;&lt;/li&gt;
&lt;li&gt;нет серых зон между командами;&lt;/li&gt;
&lt;li&gt;заранее собраны ответы на типовые вопросы оценщика;&lt;/li&gt;
&lt;li&gt;сформирован residual risk list.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Мини-чек перед dry run
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;объект оценки утверждён;&lt;/li&gt;
&lt;li&gt;ЗБ есть;&lt;/li&gt;
&lt;li&gt;архитектура есть;&lt;/li&gt;
&lt;li&gt;threat model есть;&lt;/li&gt;
&lt;li&gt;baseline заморожен;&lt;/li&gt;
&lt;li&gt;build evidence есть;&lt;/li&gt;
&lt;li&gt;SAST/DAST evidence есть;&lt;/li&gt;
&lt;li&gt;vulnerability register есть;&lt;/li&gt;
&lt;li&gt;update procedure есть;&lt;/li&gt;
&lt;li&gt;update impact analysis template есть.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dry run нужен не для красоты, а чтобы поймать самую неприятную вещь: ситуацию, когда “вроде всё давно сделано”, но доказательств на это нет.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftt2v1t604djwd3rg8i0a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftt2v1t604djwd3rg8i0a.png" alt="Практический план подготовки продукта к ОУД4" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Что общего с Secure SDLC — и чем всё-таки Банк России отличается от "обычной good practice"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Если совсем коротко, то общего много:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;security by design;&lt;/li&gt;
&lt;li&gt;threat modeling;&lt;/li&gt;
&lt;li&gt;secure coding;&lt;/li&gt;
&lt;li&gt;secure build;&lt;/li&gt;
&lt;li&gt;SAST/DAST/fuzzing;&lt;/li&gt;
&lt;li&gt;vulnerability management;&lt;/li&gt;
&lt;li&gt;patching and release governance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Но есть и важные отличия.&lt;/p&gt;

&lt;p&gt;Обычная good practice часто допускает инженерный ответ уровня:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“процесс есть, команда зрелая, сканеры работают, патчи ставим”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Банк России хочет более жёсткую форму:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“покажите конкретный объект оценки, конкретный релиз, конкретные регламенты, конкретные evidence и конкретные процедуры, по которым вы это делаете”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Именно поэтому ОУД4 в банковском контуре — это не просто Secure SDLC. Это Secure SDLC, который нужно формально доказать.&lt;/p&gt;




&lt;h3&gt;
  
  
  8. Чем "продукт реально готов" отличается от "мы собрали много файлов для аудитора"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Продукт к ОУД4 не готов, если:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scope плавает;&lt;/li&gt;
&lt;li&gt;baseline не зафиксирован;&lt;/li&gt;
&lt;li&gt;evidence относится к разным релизам;&lt;/li&gt;
&lt;li&gt;build-среда не описана;&lt;/li&gt;
&lt;li&gt;update flow живёт в голове релизника;&lt;/li&gt;
&lt;li&gt;vulnerability process частично в Jira, частично в чатах;&lt;/li&gt;
&lt;li&gt;SAST/DAST есть, но без регламента и разметки findings;&lt;/li&gt;
&lt;li&gt;supply chain не инвентаризирован.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Продукт начинает быть готов, когда:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;есть один объект оценки;&lt;/li&gt;
&lt;li&gt;есть одна доказательная цепочка под него;&lt;/li&gt;
&lt;li&gt;все артефакты привязаны к одному релизу;&lt;/li&gt;
&lt;li&gt;у каждого блока есть owner;&lt;/li&gt;
&lt;li&gt;Secure SDLC не декларируется, а доказывается.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;По итогу, что могу сказать, критерий ОУД4 — это не экзамен на количество документов. Это экзамен на то, умеет ли команда показать управляемую и прослеживаемую инженерную систему.&lt;/p&gt;




&lt;h3&gt;
  
  
  9. Мини-кейс: как ОУД4 разваливается в реальной жизни, хотя всем кажется, что “у нас всё нормально”
&lt;/h3&gt;

&lt;p&gt;Представим типичную ситуацию. Есть вендор, который делает коробочный финтех-продукт для банков. Продукт старый, большой, оброс интеграциями, кастомными модулями и историческими компромиссами. Команда уверена, что по безопасности у них “в целом всё неплохо”:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;есть GitLab, есть CI, есть code review, где-то крутится SAST, релизы выходят, клиенты работают, incidents вроде бы не гремят.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;А потом начинается подготовка к ОУД4. И тут вскрывается весёлое.&lt;/p&gt;

&lt;h4&gt;
  
  
  Шаг 1. Никто не может нормально определить объект оценки
&lt;/h4&gt;

&lt;p&gt;На вопрос “что именно мы сертифицируем?” начинается классика:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“ну как, платформу”;&lt;/li&gt;
&lt;li&gt;“ну вообще весь контур ДБО”;&lt;/li&gt;
&lt;li&gt;“ну вот этот релиз, но там часть модулей от старой ветки”;&lt;/li&gt;
&lt;li&gt;“ну клиент ещё допилил пару вещей, но это вроде не критично”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;В итоге выясняется, что:&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;единого scope document нет;&lt;/li&gt;
&lt;li&gt;границы объекта оценки плавают;&lt;/li&gt;
&lt;li&gt;часть модулей реально относится к релизу, часть — нет;&lt;/li&gt;
&lt;li&gt;кастомизации клиентов смешаны с базовой кодовой базой;&lt;/li&gt;
&lt;li&gt;один и тот же компонент в документации и в репозитории называется по-разному.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Уже на этом этапе становится понятно: команда пока не готова показывать конкретный объект оценки, потому что у неё нет единой версии правды.&lt;/p&gt;

&lt;h4&gt;
  
  
  Шаг 2. Baseline релиза существует только “по памяти”
&lt;/h4&gt;

&lt;p&gt;Формально релиз есть. Даже номер версии есть. Но когда начинают восстанавливать, из чего именно он собран, оказывается:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tag в репозитории не совпадает с фактической поставкой;&lt;/li&gt;
&lt;li&gt;в release branch вносились “маленькие срочные фиксы” уже после сборки;&lt;/li&gt;
&lt;li&gt;hotfix’ы уходили напрямую без нормальной фиксации;&lt;/li&gt;
&lt;li&gt;часть библиотек подтягивалась в build не по lockfile, а “как приехало, так приехало”;&lt;/li&gt;
&lt;li&gt;один из компонентов вообще собирался отдельным скриптом на сервере релиз-инженера.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;На бумаге релиз есть. На практике воспроизводимого baseline нет. То есть команда не может честно доказать, что именно этот набор исходников породил именно этот артефакт.&lt;/p&gt;

&lt;h4&gt;
  
  
  Шаг 3. Build pipeline вроде бы есть, но доверять ему страшновато
&lt;/h4&gt;

&lt;p&gt;Когда начинают разбирать сборочную среду, картина становится ещё веселее:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;часть сборок идёт через CI;&lt;/li&gt;
&lt;li&gt;часть — вручную;&lt;/li&gt;
&lt;li&gt;артефакты лежат в нескольких местах;&lt;/li&gt;
&lt;li&gt;права доступа на runner’ы давно никто не ревизировал;&lt;/li&gt;
&lt;li&gt;логирование шагов сборки неполное;&lt;/li&gt;
&lt;li&gt;контрольные суммы артефактов иногда сохраняются, иногда нет;&lt;/li&gt;
&lt;li&gt;кто именно и когда запускал “финальную” сборку — можно установить только по косвенным признакам.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;И вот здесь наступает важный момент: команда понимает, что у неё есть автоматизация, но нет доказуемой и контролируемой build-среды. А это две очень разные вещи.&lt;/p&gt;

&lt;h4&gt;
  
  
  Шаг 4. SAST/DAST есть, но это не процесс, а набор артефактов
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Безопасники гордо показывают:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;отчёты SAST;&lt;/li&gt;
&lt;li&gt;пару DAST-сканов;&lt;/li&gt;
&lt;li&gt;результаты старого пентеста;&lt;/li&gt;
&lt;li&gt;презентацию с findings за прошлый квартал.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Но если копнуть глубже, оказывается:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;отчёты относятся к разным версиям продукта;&lt;/li&gt;
&lt;li&gt;часть findings помечена “accepted” без понятного owner’а;&lt;/li&gt;
&lt;li&gt;нет единого правила, что именно должно сканироваться перед релизом;&lt;/li&gt;
&lt;li&gt;нет внятной связи “компонент → проверка → результат → remediation”;&lt;/li&gt;
&lt;li&gt;DAST запускался на стенде, который не совпадает с тем, что реально оценивается;&lt;/li&gt;
&lt;li&gt;по fuzzing вообще “пока не дошли руки”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;И вот тут выясняется неприятная правда: инструменты есть, отчёты есть, а системы нет. То есть формально AppSec в компании как будто существует, но для ОУД4 это пока выглядит как коллекция отдельных активностей, а не как доказуемая практика Secure SDLC.&lt;/p&gt;

&lt;h4&gt;
  
  
  Шаг 5. Уязвимости живут в Jira, Excel, письмах и головах
&lt;/h4&gt;

&lt;p&gt;Когда доходит до vulnerability management, начинается финальный танец.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Оказывается:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;критичные баги лежат в Jira;&lt;/li&gt;
&lt;li&gt;часть внешних замечаний пришла на почту support;&lt;/li&gt;
&lt;li&gt;что-то фиксировали “по звонку клиенту”;&lt;/li&gt;
&lt;li&gt;несколько исторических уязвимостей вообще известны только senior-разработчику и AppSec lead’у;&lt;/li&gt;
&lt;li&gt;централизованного vulnerability register нет;&lt;/li&gt;
&lt;li&gt;статусы и сроки remediation нигде не унифицированы.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;На вопрос “как вы управляете известными уязвимостями?” команда отвечает долго, эмоционально и очень неструктурированно.&lt;/p&gt;

&lt;p&gt;А для ОУД4 это плохой сигнал: если процесс нельзя показать в виде системы, то он считается слабоуправляемым, даже если фактически люди стараются и многое чинят.&lt;/p&gt;

&lt;h4&gt;
  
  
  Шаг 6. Обновления выпускаются, но влияние на безопасность не анализируется
&lt;/h4&gt;

&lt;p&gt;Продукт обновляется регулярно. &lt;strong&gt;Но когда спрашивают:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;как подтверждается целостность обновления;&lt;/li&gt;
&lt;li&gt;как проверяется корректность установки;&lt;/li&gt;
&lt;li&gt;как анализируется влияние изменений на безопасность;&lt;/li&gt;
&lt;li&gt;как доказывается, что патч закрыл уязвимость и не внёс новую;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ответы начинают плавать.&lt;/p&gt;

&lt;p&gt;Потому что фактически update process устроен так:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;релиз собрали;&lt;/li&gt;
&lt;li&gt;changelog написали;&lt;/li&gt;
&lt;li&gt;клиенту отправили;&lt;/li&gt;
&lt;li&gt;если не упало — значит, норм.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Для эксплуатации это ещё как-то живёт. Для ОУД4 — уже нет.&lt;/p&gt;

&lt;h4&gt;
  
  
  Чем всё заканчивается
&lt;/h4&gt;

&lt;p&gt;Итог в таких историях почти всегда один и тот же, формально у компании много правильных слов:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;DevSecOps, secure coding, CI/CD, review, security scans, patching.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Но как только появляется задача собрать всё это в одну доказательную цепочку под конкретный релиз и конкретный scope, конструкция начинает сыпаться.&lt;/p&gt;

&lt;p&gt;Потому что ОУД4 ломается не там, где “совсем ничего нет”. ОУД4 ломается там, где много всего есть, но оно не связано между собой.&lt;/p&gt;

&lt;h4&gt;
  
  
  Мораль кейса
&lt;/h4&gt;

&lt;p&gt;Главная проблема обычно не в том, что команда “ничего не делает по безопасности”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Главная проблема в другом:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;scope не зафиксирован;&lt;/li&gt;
&lt;li&gt;baseline не заморожен;&lt;/li&gt;
&lt;li&gt;evidence размазан по разным системам;&lt;/li&gt;
&lt;li&gt;build не до конца контролируем;&lt;/li&gt;
&lt;li&gt;AppSec-активности не сшиты в один lifecycle;&lt;/li&gt;
&lt;li&gt;update flow не доведён до уровня доказуемого процесса.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Именно поэтому подготовка к ОУД4 почти всегда начинается не со сканеров, а с более скучной, но критичной работы:&lt;br&gt;
собрать объект оценки, заморозить релиз, восстановить цепочку артефактов, назначить owner’ов и превратить разрозненные практики в систему.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Финальный вывод
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Если совсем по-простому, Банк России здесь хочет увидеть следующее:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;не хаотичный код, а контролируемую реализацию;&lt;/li&gt;
&lt;li&gt;не “как-нибудь собирается”, а защищённую build-среду;&lt;/li&gt;
&lt;li&gt;не “у нас есть сканер”, а регламентируемый анализ;&lt;/li&gt;
&lt;li&gt;не “чиним по ситуации”, а vulnerability process;&lt;/li&gt;
&lt;li&gt;не “патч потом выкатим”, а управляемые обновления;&lt;/li&gt;
&lt;li&gt;не “мы в целом молодцы”, а конкретный evidence package под конкретный scope.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;И в этом смысле ОУД4 довольно честный. Он не требует магии. Он требует, чтобы команда перестала жить в режиме “знание размазано по ветеранам, релизнику и одному безопаснику” и начала жить в режиме доказуемого Secure SDLC - такого, который можно открыть, проверить и привязать к конкретному релизу.&lt;/p&gt;

&lt;h4&gt;
  
  
  P.S. Если в компании хаос, не начинайте со сканера. Начинайте со связки:
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;scope → ЗБ → архитектура → контроль кода → контроль сборки → evidence tracker → SAST/DAST → уязвимости → updates/supply chain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Это самый короткий путь от бардака к проекту, который реально можно тащить к ОУД4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;На этом пока все, друг, удачи!  С тобой канал w2hack!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpccqa7a4jwoppc9l9ux3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpccqa7a4jwoppc9l9ux3.png" alt="White2Hack — логотип, заключительная иллюстрация статьи" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;*Оригинальные публикации от 19 марта 2026 года: &lt;a href="https://telegra.ph/Parsim-OUD4-chto-Bank-Rossii-na-samom-dele-hochet-ot-vashego-koda-sborki-i-Secure-SDLC-dlya-softvernyh-kompanij-FinTeha-reserch--03-19" rel="noopener noreferrer"&gt;часть 1&lt;/a&gt; и &lt;a href="https://telegra.ph/KONCOVKA-Parsim-OUD4-chto-Bank-Rossii-na-samom-dele-hochet-ot-vashego-koda-sborki-i-Secure-SDLC-03-19" rel="noopener noreferrer"&gt;продолжение&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devsecops</category>
      <category>appsec</category>
      <category>sdlc</category>
      <category>bankrussia</category>
    </item>
    <item>
      <title>Product Security на практике: разбираем fintech-платформу от бизнес-логики и API до CI/CD, Kubernetes и Cloud</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Sun, 11 Oct 2026 22:00:00 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/product-security-na-praktikie-razbiraiem-fintech-platformu-ot-biznies-loghiki-i-api-do-cicd-50ke</link>
      <guid>https://dev.to/ivan-piskunov/product-security-na-praktikie-razbiraiem-fintech-platformu-ot-biznies-loghiki-i-api-do-cicd-50ke</guid>
      <description>&lt;h3&gt;
  
  
  Preview
&lt;/h3&gt;

&lt;p&gt;Про Product Security легко рассказывать списком технологий. SAST, DAST, SCA, threat modeling, Kubernetes, IAM, SIEM — всё знакомо, всё полезно. Но это не раскрывает суть продуктовой безопасности как  security software engineering. Оттого ProdSec как самостоятельное направление безопасности часто путают с отдельными активностями AppSec, DevSecOps. Поэтому интереснее идти не от тулов, а от одного сквозного сценария. Именно на базе кейса разберем что, где и как. Ну, готовы!? let's go!&lt;/p&gt;

&lt;p&gt;И, да, парни, учитывая что все текущие платформы\продукты с чем мне приходилось иметь дело были англоязычные, а так же корпус понятий и терминов из кибербеза нативно идет на английском, а иногда не имеет адекватного\точного перевода на русский, то далее в материале буду использовать понятийное native ядро с описанием остального контекста русским текстом. &lt;/p&gt;

&lt;p&gt;Возьмём &lt;strong&gt;условную consumer fintech-платформу с инвестиционным кабинетом&lt;/strong&gt;. Пользователь проходит KYC, пополняет счёт, покупает и продаёт активы, видит позиции и денежные остатки, добавляет банковские реквизиты и выводит доступные средства. Внутри — web и mobile clients, публичное API, несколько backend-сервисов, брокерская или custodial-интеграция, внутренний ledger, платёжный provider, Kafka, Kubernetes в AWS и CI/CD.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Это не разбор реального финтех кейса (банка, брокера или биржи), но не утверждение, что у какой-либо компании\продукта есть описанные ниже проблемы&lt;/strong&gt;. Архитектура составная. Я беру типовые паттерны из публично описанных financial systems и намеренно упрощаю детали, которые не нужны для разговора о Product Security. Все что не под NDA будет в тексте, остальное, ребята, извините:)&lt;/p&gt;

&lt;h2&gt;
  
  
  Что за финтех система в рассматриваемом кейсе
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Основной пользовательский путь будет таким:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Продать актив → дождаться состояния, в котором деньги можно выводить → зарезервировать сумму во внутреннем ledger → добавить или выбрать банковский счёт → инициировать payout → пройти проверки → отправить перевод через payment provider → сверить внешний и внутренний результат.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Здесь есть важная бизнес-деталь. &lt;strong&gt;Исполненная сделка и деньги, доступные для вывода, — не всегда одно и то же состояние.&lt;/strong&gt; Если представить, например, американские акции, стандартный settlement для большинства сделок с 28 мая 2024 года — T+1: продажа сегодня обычно рассчитывается на следующий рабочий день. В других рынках и продуктах правила могут отличаться, поэтому в нашей модели лучше явно различать хотя бы &lt;code&gt;trade_executed&lt;/code&gt;, &lt;code&gt;settled_cash&lt;/code&gt;, &lt;code&gt;available_to_withdraw&lt;/code&gt; и &lt;code&gt;reserved_for_payout&lt;/code&gt;, а не складывать всё в одно поле &lt;code&gt;balance&lt;/code&gt;. &lt;a href="https://www.sec.gov/newsroom/press-releases/2024-62" rel="noopener noreferrer"&gt;SEC о переходе на T+1&lt;/a&gt;; для примера того, как брокер отдельно показывает доступность средств для вывода, можно посмотреть описание &lt;a href="https://www.fidelity.com/products/stocksbonds/content/cash-available-to-withdraw.shtml" rel="noopener noreferrer"&gt;Cash Available to Withdraw у Fidelity&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Ledger&lt;/code&gt; здесь — не блокчейн, а внутренний финансовый журнал: система записей, по которым продукт понимает, кому принадлежит экономическая стоимость, почему она изменилась и какие операции уже произошли. &lt;code&gt;Payout&lt;/code&gt; — вывод средств за пределы платформы. Эти два понятия дальше будут встречаться постоянно.&lt;/p&gt;

&lt;p&gt;Если какие-то из затронутых доменов хочется потом разобрать отдельно — AppSec, API Security, DevSecOps, Cloud/Kubernetes, Threat Modeling или Secure SDLC — я собираю более широкую карту материалов в своей &lt;a href="https://docs.product-security.expert/" rel="noopener noreferrer"&gt;Product Security Knowledge Base&lt;/a&gt;. Здесь же останемся внутри одного кейса и посмотрим, &lt;strong&gt;как эти области встречаются в одном продукте&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpuwyqo7gus32osby7cwv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpuwyqo7gus32osby7cwv.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Я сознательно не буду превращать материал в compliance-гайд по PCI DSS, PSD2, DORA, SEC/FINRA или локальному финансовому регулированию. В реальном проекте требования compliance и legal обязательно войдут в дизайн, но набор будет зависеть от страны, лицензий и модели бизнеса. Здесь нас интересует именно &lt;strong&gt;инженерная логика Product Security&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. База продукта и что под капотом
&lt;/h2&gt;

&lt;p&gt;Представим, что у платформы есть web и mobile clients, API Gateway, Identity Service, Portfolio Service, Trading Service, Ledger Service, Payout Service и отдельная административная плоскость для Operations. Внутри используются Kafka, PostgreSQL и Redis; workloads работают в Amazon EKS; инфраструктура описана Terraform; delivery идёт через GitLab CI, registry и GitOps. Снаружи находятся KYC/Fraud services, market-data provider, broker/execution venue или custodian и payment provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Упрощённо это можно представить так:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                         Web / Mobile
                              |
                    +-------------------+
                    | CDN / WAF / Edge  |
                    +-------------------+
                              |
                     +-----------------+
                     |   API Gateway   |
                     +-----------------+
                       /       |       \
                      /        |        \
             +---------+  +---------+  +----------+
             | Identity|  |Portfolio|  |  Trading |
             +---------+  +---------+  +----------+
                  |            |             |
                  |            |             +-----------&amp;gt; Broker / Custodian
                  |            |                              / Execution Venue
                  |            v
                  |       +---------+
                  +------&amp;gt;|  Ledger |&amp;lt;----- trade / cash events
                          +---------+
                               |
                         reserve / release
                               |
                          +-----------+       +-------------+
 Operations / Admin ----&amp;gt;|  Payout   |------&amp;gt;| Payment     |
                          +-----------+       | Provider    |
                               ^              +-------------+
                               |
                      KYC / Fraud / Risk

          Async flows -&amp;gt; Kafka / queues / provider webhooks
          State       -&amp;gt; PostgreSQL / ledger store / Redis where appropriate
          Runtime     -&amp;gt; Amazon EKS / AWS IAM / KMS / Secrets Manager
          Delivery    -&amp;gt; GitLab CI / Registry / GitOps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Смысл схемы не в выборе конкретных AWS-сервисов. Важнее увидеть &lt;strong&gt;несколько разных источников правды и trust boundaries&lt;/strong&gt;. Trading domain знает, была ли сделка исполнена и рассчитана. Ledger отвечает за внутреннее денежное состояние. Payout domain управляет жизненным циклом вывода и резервирует средства. Payment provider знает, что произошло на внешнем платёжном rail. Identity/Fraud дают сигналы и решения, но не должны произвольно переписывать финансовую историю. Admin plane умеет делать очень мощные вещи и поэтому заслуживает отдельной модели доверия.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj0h0p1i5s6ue41gzp262.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj0h0p1i5s6ue41gzp262.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Такие идеи не взяты из воздуха. Square публично описывал &lt;a href="https://developer.squareup.com/blog/books-an-immutable-double-entry-accounting-database-service/" rel="noopener noreferrer"&gt;Books&lt;/a&gt; как immutable double-entry accounting service, где ошибку исправляют новой компенсирующей записью, а не тихим &lt;code&gt;UPDATE&lt;/code&gt; старой истории. Uber в актуальном обзоре своей &lt;a href="https://www.uber.com/bl/en/blog/ubers-payments-platform/" rel="noopener noreferrer"&gt;Payments Platform&lt;/a&gt; описывает zero-sum money orders, ledger, entity changelog, Kafka-based asynchronous processing и audit trail; в более раннем разборе Gulfstream отдельно обсуждаются &lt;a href="https://www.uber.com/us/en/blog/money-scale-strong-data/" rel="noopener noreferrer"&gt;idempotency, versioning и reconciliation между асинхронными системами&lt;/a&gt;. Мы не копируем их архитектуру — это просто хорошие публичные подтверждения того, что &lt;strong&gt;financial correctness строится как отдельная инженерная система&lt;/strong&gt;, а не как таблица &lt;code&gt;users.balance&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;На такой схеме security-инженер уже видит десятки потенциальных поверхностей атаки. Но если сразу побежать рисовать красные стрелки, легко утонуть в деталях. Я обычно сначала фиксирую &lt;strong&gt;security invariants&lt;/strong&gt; — свойства продукта, которые должны оставаться истинными независимо от того, как именно атакующий пытается их нарушить.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для payout flow инварианты будут примерно такими:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;пользователь не может распорядиться чужими деньгами;&lt;/li&gt;
&lt;li&gt;баланс нельзя увеличить без легитимной финансовой операции;&lt;/li&gt;
&lt;li&gt;один бизнес-payout не должен привести к двум фактическим переводам;&lt;/li&gt;
&lt;li&gt;смена payout-реквизитов не должна превращать обычный account takeover в мгновенную потерю денег;&lt;/li&gt;
&lt;li&gt;администратор не может незаметно провести чувствительную операцию в обход утверждённого workflow;&lt;/li&gt;
&lt;li&gt;внешний provider не становится источником абсолютной истины только потому, что сообщение пришло от него;&lt;/li&gt;
&lt;li&gt;компрометация одного workload не должна автоматически давать права на весь AWS account;&lt;/li&gt;
&lt;li&gt;в production должен попадать ожидаемый артефакт из ожидаемого source/build process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это уже хороший фундамент. Вместо абстрактного «нам нужен SAST» появляется вопрос: &lt;strong&gt;какое свойство системы мы защищаем, каким контролем и как потом проверим, что контроль реально работает?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Для общей базы требований пригодятся &lt;a href="https://owasp.org/www-project-application-security-verification-standard/" rel="noopener noreferrer"&gt;OWASP ASVS&lt;/a&gt;, &lt;a href="https://csrc.nist.gov/pubs/sp/800/218/final" rel="noopener noreferrer"&gt;NIST SSDF&lt;/a&gt; и &lt;a href="https://owaspsamm.org/model/" rel="noopener noreferrer"&gt;OWASP SAMM&lt;/a&gt;. На сентябрь 2026 у ASVS актуальной стабильной версией является 5.0.0. Но framework всё равно не знает твою бизнес-логику — он помогает не забыть классы требований, а не заменяет инженерное понимание продукта.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Threat model: строим attack path
&lt;/h2&gt;

&lt;p&gt;Для нового payout flow я бы не начинал встречу с вопроса «какие у нас тут STRIDE-категории». STRIDE полезен как способ не забыть классы угроз, но команде проще работать с конкретным сценарием: &lt;strong&gt;как атакующий превращает первоначальный доступ в деньги, данные или контроль над системой?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Например, довольно быстро появляются такие цепочки:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stolen session
    -&amp;gt; add attacker's payout account
    -&amp;gt; no recent re-authentication
    -&amp;gt; no risk-based step-up
    -&amp;gt; create payout
    -&amp;gt; fraud service timeout fails open
    -&amp;gt; money leaves platform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Или:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RCE in Payout Service
    -&amp;gt; read workload credentials
    -&amp;gt; IAM role allows broad Secrets Manager access
    -&amp;gt; obtain another service credential
    -&amp;gt; call privileged internal API
    -&amp;gt; manipulate payout workflow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Или supply-chain вариант:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Compromised CI token
    -&amp;gt; modify pipeline definition
    -&amp;gt; inject malicious build step
    -&amp;gt; normal signing stage signs produced image
    -&amp;gt; deployment policy sees valid signature
    -&amp;gt; malicious but "legitimate" image reaches production
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Здесь особенно хорошо видно, почему Product Security нельзя свести к поиску CVE. В первом сценарии каждый компонент может работать ровно так, как его написал разработчик, а атака всё равно получится из &lt;strong&gt;комбинации допустимых продуктовых решений&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqjh2e0byb2zzdli0uaze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqjh2e0byb2zzdli0uaze.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;На threat-model review мне нужен не красивый док в Confluence, а несколько вещей, с которыми команда сможет работать дальше: как-то опасные abuse cases, конкретные security requirements, владельцы контролей, способ проверки, нужная telemetry и решение о том, что будет release blocker. Логика близка к &lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Threat_Modeling_Cheat_Sheet.html" rel="noopener noreferrer"&gt;OWASP Threat Modeling Cheat Sheet&lt;/a&gt;: что мы строим, что может пойти не так, что мы с этим делаем и достаточно ли хорошо это сделали.&lt;/p&gt;

&lt;p&gt;Возьмём смену payout-реквизитов. Требование «обеспечить безопасность функции вывода» бесполезно — его нельзя нормально ни реализовать, ни протестировать. Гораздо лучше написать так:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;добавление нового payout account требует недавней re-authentication или step-up authentication;&lt;/li&gt;
&lt;li&gt;backend проверяет ownership счёта и право конкретного subject использовать его для payout;&lt;/li&gt;
&lt;li&gt;изменение реквизитов влияет на уже созданные, но ещё не исполненные операции предсказуемым образом;&lt;/li&gt;
&lt;li&gt;для высокого риска можно применить cooling-off period, лимит суммы или дополнительное подтверждение;&lt;/li&gt;
&lt;li&gt;внешний callback не меняет финансовое состояние без аутентификации, replay protection и проверки допустимого state transition;&lt;/li&gt;
&lt;li&gt;административное исключение требует повышенной роли, сильной аутентификации и tamper-resistant audit trail.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;Step-up&lt;/code&gt; — это дополнительная проверка личности именно перед чувствительным действием: например, повторная аутентификация, passkey/WebAuthn или другой сильный фактор. &lt;code&gt;Maker-checker&lt;/code&gt; — принцип, при котором один сотрудник создаёт критическую операцию, а другой независимо её подтверждает.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2k2xqsmt38cq2bls6lgo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2k2xqsmt38cq2bls6lgo.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Если свести весь подход к одной цепочке, получится так:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Abuse case
   -&amp;gt; security requirement
       -&amp;gt; architecture / control
           -&amp;gt; test
               -&amp;gt; runtime signal
                   -&amp;gt; release / risk decision
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Эту цепочку полезно держать перед глазами почти на всём протяжении проекта.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. API и деньги: authorization, state machine и асинхронность
&lt;/h2&gt;

&lt;p&gt;В fintech API неприятные проблемы часто начинаются не с того, что злоумышленник смог войти, а с того, &lt;strong&gt;что система разрешила ему сделать после успешной аутентификации&lt;/strong&gt;. Это важное различие: authentication отвечает «кто ты», authorization — «что именно тебе можно сделать сейчас с этим объектом».&lt;/p&gt;

&lt;p&gt;В &lt;a href="https://owasp.org/API-Security/editions/2023/en/0x11-t10/" rel="noopener noreferrer"&gt;OWASP API Security Top 10 2023&lt;/a&gt; несколько категорий напрямую связаны с authorization: BOLA, Broken Object Property Level Authorization и Broken Function Level Authorization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Представим endpoint:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /api/v1/payouts
Authorization: Bearer &amp;lt;token&amp;gt;
Content-Type: application/json

{
  "portfolio_id": "pf-19482",
  "bank_account_id": "ba-8841",
  "amount": 25000,
  "currency": "EUR"
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Слабая реализация может проверить только валидность token, наличие bank account и достаточный balance. На реальном review меня интересует больше:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Does this subject own or control portfolio pf-19482?
Can this subject use bank account ba-8841?
Is the account verified and in an allowed state?
Was payout destination changed recently?
Does the operation require step-up?
Is the amount allowed by current limits and risk state?
Is this state transition legal?
Has this business operation already produced an external transfer?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;То есть authorization привязывается не к наличию кнопки и не просто к URL. Нужны &lt;strong&gt;subject + action + resource + context&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Например:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;subject: user-42819
action: payout.create
resource: portfolio-pf-19482
amount: 25000 EUR
risk_state: elevated
recent_auth: false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Результат политики может быть не только &lt;code&gt;allow&lt;/code&gt; или &lt;code&gt;deny&lt;/code&gt;, но и &lt;code&gt;require_step_up&lt;/code&gt;. В большой системе стоит заранее решить, где живёт эта логика: в каждом сервисе, общей library, policy engine или отдельном authorization service. Какой вариант лучше — зависит от архитектуры. Плохой вариант почти всегда один: пять сервисов, которые по-разному понимают одно и то же право.&lt;/p&gt;

&lt;h3&gt;
  
  
  Не путай mobile client с доверенной зоной (Zero trust always)
&lt;/h3&gt;

&lt;p&gt;Мобильное приложение добавляет UX и дополнительные security-сигналы, но не переносит trust boundary на устройство пользователя. Клиент контролирует своё устройство, сеть и локальную копию приложения, поэтому сервер &lt;strong&gt;не должен принимать решение о balance, KYC state, payout limit или authorization&lt;/strong&gt; на основании того, что «это прислал наш официальный APK».&lt;/p&gt;

&lt;p&gt;Для native authentication flow сейчас разумно ориентироваться на OAuth/OIDC best practices: external user-agent для авторизации и Authorization Code Flow с PKCE для public clients. Это закреплено в &lt;a href="https://www.rfc-editor.org/info/rfc8252/" rel="noopener noreferrer"&gt;RFC 8252&lt;/a&gt; и актуальном OAuth Security BCP &lt;a href="https://www.rfc-editor.org/info/rfc9700/" rel="noopener noreferrer"&gt;RFC 9700&lt;/a&gt;. Для проверки самого mobile client полезен &lt;a href="https://mas.owasp.org/MASVS/" rel="noopener noreferrer"&gt;OWASP MASVS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Device attestation, root/jailbreak detection и certificate pinning могут быть дополнительными сигналами и повышать стоимость атаки, но я бы не делал из них единственную границу безопасности. Если атакующий модифицировал приложение и начал вызывать API напрямую, серверные invariants должны всё равно сохраниться.&lt;/p&gt;

&lt;h3&gt;
  
  
  Business logic: то что выше "шестеренок под капотом"
&lt;/h3&gt;

&lt;p&gt;Теперь более интересная часть. Допустим, после settlement у пользователя есть &lt;code&gt;available_to_withdraw = 15 000 EUR&lt;/code&gt;, дневной payout limit — &lt;code&gt;10 000 EUR&lt;/code&gt;, а резервирование средств и проверка лимита реализованы разными операциями. Два worker одновременно получают по запросу на 9 000 EUR, оба читают старое состояние и оба считают операцию допустимой.&lt;/p&gt;

&lt;p&gt;В итоге система может зарезервировать или попытаться вывести 18 000 EUR. Это не обязательно выглядит как классическая «уязвимая строка кода». Проблема живёт в &lt;strong&gt;конкурентной обработке финансового состояния&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для денежных workflow я предпочитаю явно записывать invariants:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;available_to_withdraw must not become negative
unless the product explicitly supports credit

settled_cash + unsettled_cash + reserved_for_payout
must reconcile with the ledger model

one business payout ID must not result
in more than one effective external transfer

confirmed payouts in a window
must not exceed the effective limit

an external provider event may move a payout
only through an allowed state transition
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Сам payout удобно воспринимать как state machine, например:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requested -&amp;gt; risk_review -&amp;gt; reserved -&amp;gt; submitted
          -&amp;gt; rejected                 -&amp;gt; failed
                                      -&amp;gt; completed
                                      -&amp;gt; reconciliation_required
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Конкретные состояния могут быть другими, но смысл такой: &lt;strong&gt;не каждый входящий event имеет право перевести объект из любого состояния в любое&lt;/strong&gt;. &lt;code&gt;completed&lt;/code&gt; после уже отменённой операции, повторный &lt;code&gt;submitted&lt;/code&gt; или callback для другого external payment ID должны либо быть безопасно отвергнуты, либо отправить операцию в явное состояние разбирательства.&lt;/p&gt;

&lt;p&gt;После этого появляются понятные тесты: concurrent requests, duplicate webhook delivery, out-of-order Kafka events, retry после timeout, задержанная доставка события, изменение payout account во время pending operation, rollback одного сервиса после успешной операции другого.&lt;/p&gt;

&lt;p&gt;Здесь есть важная инженерная тонкость. Фраза &lt;strong&gt;«сделаем exactly-once»&lt;/strong&gt; сама по себе ничего не гарантирует. Внутри контролируемой транзакционной границы или собственного order-processing pipeline можно построить exactly-once semantics через strong consistency, immutable identifiers и idempotency — Uber, например, публично описывает такой подход для своих payment orders. Но на границе с внешним payment provider остаётся классический неприятный случай: provider уже произвёл перевод, а сеть оборвалась до того, как наш сервис получил подтверждение.&lt;/p&gt;

&lt;p&gt;Поэтому защита строится слоями: durable business identifier, идемпотентная команда на внешнем API, atomic reservation внутри ledger boundary, database constraints/locking там, где это оправдано, transactional outbox или другой надёжный способ публикации событий, дедупликация на consumer side и обязательная reconciliation. Stripe, например, прямо рекомендует &lt;a href="https://docs.stripe.com/api/idempotent_requests" rel="noopener noreferrer"&gt;idempotency keys для безопасных retry&lt;/a&gt;, а в документации webhooks предупреждает о &lt;a href="https://docs.stripe.com/webhooks" rel="noopener noreferrer"&gt;повторной доставке, retries и отсутствии гарантии порядка событий&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Если запрос завис после отправки, правильный вопрос не «повторить ли HTTP POST», а &lt;strong&gt;«можем ли мы доказать, был ли уже произведён экономический эффект»&lt;/strong&gt;. Если доказать нельзя, это отдельное бизнес-состояние, а не повод оптимистично поставить &lt;code&gt;failed&lt;/code&gt; и отправить деньги ещё раз.&lt;/p&gt;

&lt;p&gt;Это хороший пример границы между Application Security &lt;em&gt;(привет инженерам)&lt;/em&gt; и архитектурой &lt;em&gt;(привет архитектору)&lt;/em&gt;. Security здесь не диктует команде конкретный паттерн транзакций, но обязан заметить, что нарушение consistency приводит не к красивой ошибке в логах, а к реальным деньгам.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Secure SDLC: переводим решения из встреч в delivery process
&lt;/h2&gt;

&lt;p&gt;Если Product Security впервые видит новую payout feature после того, как код уже написан, обсуждать архитектуру поздно и дорого. Поэтому security должна появляться в обычном delivery process не отдельной церемонией в конце, а в нескольких точках, где решение ещё можно изменить. Более широкую карту того, как я связываю Secure SDLC, AppSec и DevSecOps, я держу в &lt;a href="https://docs.product-security.expert/" rel="noopener noreferrer"&gt;Product Security Knowledge Base&lt;/a&gt;; здесь оставим только те элементы, которые реально нужны нашему payout flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Я бы построил поток примерно так:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Product idea
   -&amp;gt; security triage
       -&amp;gt; threat model if risk is material
           -&amp;gt; security requirements
               -&amp;gt; design / implementation
                   -&amp;gt; automated checks + review
                       -&amp;gt; targeted validation
                           -&amp;gt; release decision
                               -&amp;gt; runtime telemetry
                                   -&amp;gt; feedback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Security triage&lt;/code&gt; не обязан быть часовым митингом. Это может быть несколько вопросов в design/RFC template: появились ли новые sensitive data, privileged action, external integration, authentication/authorization flow, financial state transition, internet-facing endpoint, file processing, server-side URL fetching или новая IAM boundary. Если ответов «да» много, задача автоматически уходит на более глубокий review.&lt;/p&gt;

&lt;p&gt;Здесь же полезно разделить &lt;strong&gt;одноразовые решения и повторяемые решения&lt;/strong&gt;. Если каждый новый сервис заново выбирает, как валидировать JWT, логировать audit event, получать cloud identity или проверять webhook signature, security-команда будет бесконечно ревьюить одну и ту же проблему. Лучше один раз сделать approved library, reference implementation или platform capability и превратить это в paved road — безопасный путь по умолчанию, которым разработчику проще воспользоваться, чем обойти.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmjhbeeg9qq2oa0507i5w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmjhbeeg9qq2oa0507i5w.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Security Champions помогают масштабировать такой подход внутри engineering teams. Их задача не в том, чтобы превратить backend-разработчика в pentester. Гораздо полезнее, если champion знает локальный контекст команды, понимает approved patterns и может рано заметить, что новая feature меняет trust boundary или business invariant.&lt;/p&gt;

&lt;p&gt;На этом этапе также появляется понятие &lt;strong&gt;evidence&lt;/strong&gt;. Если requirement говорит «критический endpoint использует централизованный authorization middleware», хорошо, когда у тебя есть не только запись в wiki, но и способ автоматически проверить это в code review или integration test. Чем больше повторяемых решений превращаются в проверяемые guardrails, тем меньше security зависит от памяти конкретного человека.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Конвейер CI/CD
&lt;/h2&gt;

&lt;p&gt;Допустим, разработчик меняет &lt;code&gt;Payout Service&lt;/code&gt;. Pipeline может выглядеть так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;commit
  -&amp;gt; pre-commit / local checks
  -&amp;gt; merge request
      -&amp;gt; unit tests
      -&amp;gt; SAST
      -&amp;gt; secret scanning
      -&amp;gt; SCA
      -&amp;gt; IaC checks
      -&amp;gt; build
      -&amp;gt; SBOM
      -&amp;gt; image scan
      -&amp;gt; integration / abuse tests
      -&amp;gt; provenance / signing
  -&amp;gt; registry
  -&amp;gt; deployment policy
  -&amp;gt; production
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Инструменты здесь полезны, но проблема начинается, когда каждая найденная &lt;code&gt;High&lt;/code&gt; автоматически превращается в &lt;code&gt;pipeline failed&lt;/code&gt;. Через несколько недель разработчики либо привыкают к красному pipeline, либо находят способ его обходить.&lt;/p&gt;

&lt;p&gt;Для SAST можно использовать Semgrep, CodeQL, SonarQube, Checkmarx, Veracode и другие решения. Но реальная зрелость появляется, когда кроме generic SQLi/XSS rules команда начинает кодировать &lt;strong&gt;свои архитектурные ограничения&lt;/strong&gt;. Например: privileged endpoint обязан использовать approved authorization middleware; full bank account нельзя писать в log; low-level payout client нельзя вызывать за пределами определённого service layer; отключение webhook verification должно быть невозможно простым feature flag.&lt;/p&gt;

&lt;p&gt;Secret scanning полезно делать и локально, и на server side: Gitleaks, TruffleHog, Trivy или возможности самого SCM. Если production credential уже попал в Git history, удаления строки недостаточно — его надо считать exposed и ротировать.&lt;/p&gt;

&lt;p&gt;В SCA я бы смотрел не только на CVSS. Важны direct/transitive dependency, reachability, runtime exposure, публичный exploit, наличие фактической эксплуатации и asset context. Для prioritization можно учитывать, например, &lt;a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;CISA Known Exploited Vulnerabilities&lt;/a&gt; и &lt;a href="https://www.first.org/epss/" rel="noopener noreferrer"&gt;EPSS&lt;/a&gt;, но ни один такой сигнал не является готовым risk score: EPSS оценивает вероятность эксплуатации CVE в ближайшие 30 дней и сам FIRST отдельно подчёркивает, что environmental impact он не знает.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blocker или то что действительно должно остановить release
&lt;/h3&gt;

&lt;p&gt;Для нашего продукта я бы ожидал блокировку при подтверждённом authorization bypass в payout/trading flow, double payout, возможности подделать provider event и изменить финансовое состояние, production secret в репозитории, internet-reachable admin surface без ожидаемого access control или реальном пути от RCE к чрезмерно привилегированной cloud identity.&lt;/p&gt;

&lt;p&gt;Dependency issue тоже может быть blocker, если эксплуатация подтверждена или правдоподобна, vulnerable path действительно используется и impact для конкретного workload высок. Но «High в dev dependency, который не попадает в runtime» и «известно эксплуатируемая RCE в internet-facing parser» — это две совершенно разные задачи, даже если scanner окрасил обе строки одинаково.&lt;/p&gt;

&lt;p&gt;Полезно воспринимать scanner severity как &lt;strong&gt;один вход в решение&lt;/strong&gt;, а не само решение. Обычно важны exploitability, reachability, exposure, asset criticality, business impact, compensating controls и uncertainty. Неопределённость тоже фактор: если ты не можешь доказать, что критичный путь недостижим, это не автоматически делает риск низким.&lt;/p&gt;

&lt;h3&gt;
  
  
  Supply chain
&lt;/h3&gt;

&lt;p&gt;Теперь вернёмся к сценарию с украденным CI token. Атакующий меняет pipeline, добавляет malicious build step, после чего обычная система подписывает созданный image. Подпись валидна — просто подписали уже не тот результат.&lt;/p&gt;

&lt;p&gt;Поэтому software supply chain начинается раньше container registry. Нужно защищать source repository и pipeline definitions, требовать review для критичных изменений, ограничивать CI identities, по возможности использовать isolated/ephemeral runners, разделять build и signing authority, хранить provenance и проверять identity артефакта перед deployment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0p0a0m5imzb12k95roqx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0p0a0m5imzb12k95roqx.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Для формализации удобно смотреть на &lt;a href="https://slsa.dev/spec/v1.2/" rel="noopener noreferrer"&gt;SLSA v1.2&lt;/a&gt;: в этой версии есть отдельные Build и Source tracks. Для SBOM подойдут &lt;a href="https://cyclonedx.org/" rel="noopener noreferrer"&gt;CycloneDX&lt;/a&gt; и &lt;a href="https://spdx.dev/use/specifications/" rel="noopener noreferrer"&gt;SPDX&lt;/a&gt;, для подписи и attestations — &lt;a href="https://docs.sigstore.dev/quickstart/quickstart-cosign/" rel="noopener noreferrer"&gt;Sigstore/Cosign&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Сам SBOM ничего не «защищает», это не тула, а скорее док с содержанием. Он становится полезным, когда после новой CVE ты можешь быстро ответить: &lt;strong&gt;в каких production workloads есть компонент X, какой именно версии, откуда он попал в build и где vulnerability реально достижима?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Kubernetes и AWS
&lt;/h2&gt;

&lt;p&gt;Допустим, в &lt;code&gt;Payout Service&lt;/code&gt; появился RCE. Частая ошибка — сразу обсуждать container escape. Я бы первым делом посмотрел, что атакующий получает &lt;strong&gt;без всякого escape&lt;/strong&gt;, используя уже выданные workload права.&lt;/p&gt;

&lt;p&gt;Если pod работает privileged, с &lt;code&gt;hostPath&lt;/code&gt;, &lt;code&gt;CAP_SYS_ADMIN&lt;/code&gt;, writable root filesystem и чрезмерными Kubernetes RBAC permissions, компрометация действительно может быстро уйти в cluster layer. Для обычных application workloads разумный baseline — non-root, &lt;code&gt;allowPrivilegeEscalation: false&lt;/code&gt;, минимальные capabilities, seccomp, отсутствие &lt;code&gt;hostPath&lt;/code&gt; и privileged mode без обоснования. В Kubernetes для этого есть &lt;a href="https://kubernetes.io/docs/concepts/security/pod-security-standards/" rel="noopener noreferrer"&gt;Pod Security Standards&lt;/a&gt;, где профиль &lt;code&gt;Restricted&lt;/code&gt; — полезная отправная точка для большинства обычных workloads.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fumtl1yltx63jheywq1n3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fumtl1yltx63jheywq1n3.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Политику лучше превращать в admission control, а не держать только в wiki. В зависимости от стека это могут быть Kyverno, OPA Gatekeeper или native ValidatingAdmissionPolicy/CEL. Но rollout policy тоже является инженерной задачей: включить жёсткий &lt;code&gt;enforce&lt;/code&gt; на старом cluster без baseline — хороший способ остановить deployment. Практичнее пройти путь &lt;code&gt;audit -&amp;gt; fix baseline -&amp;gt; warn -&amp;gt; enforce&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Для posture scanning пригодятся Trivy, Kubescape, kube-bench и cloud/CNAPP tooling. Для runtime visibility — Falco, Tetragon или коммерческий runtime sensor. Но scanner и runtime detector не заменяют понимание permission model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloud IAM
&lt;/h3&gt;

&lt;p&gt;Предположим, container escape невозможен, зато service account получает AWS role с такими правами:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;secretsmanager:GetSecretValue *
s3:GetObject *
kms:Decrypt *
rds:*
iam:PassRole *
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;В таком случае атакующему cluster escape вообще может не понадобиться. Он уже получил credential, которым разрешено слишком много. Именно поэтому IAM review я начинаю от &lt;strong&gt;business capability workload&lt;/strong&gt;. Payout Service действительно может нуждаться в конкретном secret, публикации события в конкретный topic и вызове ограниченного API. Из этого не следует, что ему нужен wildcard на Secrets Manager или право &lt;code&gt;iam:PassRole&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0zu9sid2bwocfi7pzxsc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0zu9sid2bwocfi7pzxsc.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;На EKS long-lived AWS keys обычно можно убрать в пользу workload identity и временных credentials. AWS поддерживает, в частности, EKS Pod Identity; идея та же — связать IAM permissions с Kubernetes service account и не разносить статические ключи по YAML и CI. При этом важно помнить о credential isolation и IMDS: сама workload identity не спасает, если pod всё ещё может получить более привилегированные node credentials.&lt;/p&gt;

&lt;h3&gt;
  
  
  Secrets: а имнно Kubernetes Secret
&lt;/h3&gt;

&lt;p&gt;Фраза «пароль лежит в Kubernetes Secret» сама по себе мало что говорит о security. Для обычного Kubernetes важно помнить две вещи: base64 в объекте Secret не является encryption, а безопасность сильно зависит от encryption-at-rest, RBAC и от того, кто вообще может создавать workloads в namespace и тем самым получать доступ к Secret.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8wsyaee4jc9gv44mknl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8wsyaee4jc9gv44mknl.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Но в нашем EKS-примере нужна более точная оговорка. &lt;strong&gt;Amazon EKS начиная с Kubernetes 1.28 включает envelope encryption для всех Kubernetes API data по умолчанию&lt;/strong&gt;, используя AWS KMS provider v2; для старых EKS 1.27 и ниже encryption Secrets на уровне Kubernetes API настраивалась отдельно. Это хороший пример того, почему cloud-specific defaults надо проверять, а не переносить общую фразу из vanilla Kubernetes один в один. &lt;a href="https://docs.aws.amazon.com/eks/latest/userguide/envelope-encryption.html" rel="noopener noreferrer"&gt;Документация AWS EKS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;При этом encryption at rest всё равно не решает весь lifecycle. Для production я смотрю на создание, хранение, delivery, access, rotation, revocation и audit. В зависимости от архитектуры это могут быть AWS Secrets Manager, Vault, External Secrets, KMS и short-lived credentials. Часто лучший secret — тот, который удалось заменить identity и вообще перестать хранить как долгоживущий credential.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ledger integrity важнее одной только confidentiality
&lt;/h3&gt;

&lt;p&gt;Финансовая система обязана защищать не только секретность данных, но и их целостность. Шифрование database at rest мало поможет, если один чрезмерно привилегированный service account может тихо переписать transaction state.&lt;/p&gt;

&lt;p&gt;Для ledger полезно отдельно продумать append-only или tamper-evident audit patterns, строгие state transitions, separation of duties, reconciliation и восстановление истории. Хороший вопрос для architecture review звучит так: &lt;strong&gt;какой минимальный набор компонентов или identities нужно скомпрометировать, чтобы незаметно изменить финансовую истину?&lt;/strong&gt; Если ответ — «один обычный backend service», blast radius слишком большой.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Third party и admin plane: режем доверие с обеих сторон
&lt;/h2&gt;

&lt;p&gt;Payment provider присылает webhook:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /webhooks/payment-status

{
  "payment_id": "ext-5521",
  "status": "completed"
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*&lt;em&gt;IP allowlist *&lt;/em&gt;можно использовать как дополнительный слой, но не как единственное доказательство подлинности. Нужны TLS, authentication provider, cryptographic signature или HMAC, timestamp/nonce, replay window, idempotent processing и проверка state machine. Для серьёзных расхождений нужен reconciliation с provider API.&lt;/p&gt;

&lt;p&gt;Даже правильно подписанное сообщение не должно иметь полномочие сказать: &lt;em&gt;«сделай любую внутреннюю транзакцию COMPLETED»&lt;/em&gt;. Оно относится к конкретному external payment ID и может вызвать только допустимый переход конкретного внутреннего объекта. Если provider дважды доставил одно событие — экономический эффект не должен удвоиться. Иначе это бага:)&lt;/p&gt;

&lt;p&gt;Здесь же я бы посмотрел на &lt;strong&gt;admin plane&lt;/strong&gt;. Обычный customer API часто получает больше security-внимания, чем внутренняя панель, хотя именно там живут refund, account unlock, KYC override, manual payout и другие очень мощные действия. Для них нужны отдельная authorization model, strong authentication, least privilege, step-up для особо чувствительных операций, maker-checker там, где это оправдано, и аудит, который оператор не может тихо подчистить теми же credentials.&lt;/p&gt;

&lt;p&gt;Отдельная организационная граница проходит между Product Security и Fraud. Такие показатели как Credential stuffing, anomalous device, mule account и подозрительная скорость вывода могут быть fraud signals в анти-фрод системах; а вот broken authorization, unsafe state machine и compromised service identity — больше про security concerns. В реальной fintech-команде эти области постоянно пересекаются. Да, да, так. Спорить, «чей это тикет», менее полезно, чем заранее договориться о shared signals, ownership и escalation path. Короче, работать надо командой, а не валить ответственность на смежника:) Безопасность здесь партнер, а не стопер бизнеса или разработки.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Проверка: pentest должен атаковать предположения продукта
&lt;/h2&gt;

&lt;p&gt;Перед release payout flow имеет смысл провести targeted security validation. Автоматические инструменты вроде OWASP ZAP, Burp Suite, API fuzzing и custom integration tests хороши и полезны, паплайн робит, но pentester получит намного больше пользы, если кроме URL ему дать architecture context и abuse cases (белый ящик).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F03nio4szzosd7oj8migm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F03nio4szzosd7oj8migm.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Я бы сформулировал задание примерно так:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Can you create a payout from another user's portfolio?
Can you reference another user's bank account object?
Can a customer identity invoke an admin transition?
What happens if you send the same payout concurrently 20 times?
Can a completed provider event be replayed?
What if payout account changes while payment is pending?
Can undocumented or old API versions bypass current controls?
Can a field hidden by UI be mass-assigned through API?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Для pentester это тоже меняет стиль работы. Вместо «нашёл IDOR — severity High» появляется цепочка: &lt;strong&gt;finding Х-&amp;gt; attacker action Y-&amp;gt; prerequisite -&amp;gt; business effect Z -&amp;gt; next step&lt;/strong&gt;. Например, BOLA на read-only history endpoint и BOLA на payout destination — один класс weakness, но совершенно разный продуктовый риск.&lt;/p&gt;

&lt;p&gt;И наоборот, отсутствие обычных OWASP bugs ещё не означает, что flow безопасен. Такие слабости как-то Race condition, не критичный replay, неоднозначный state confusion и "легенький" abuse of legitimate functionality могут потребовать custom scripts и понимания domain model\платформы изнутри.&lt;/p&gt;

&lt;h3&gt;
  
  
  Если preventive control не сработал — что мы увидим?
&lt;/h3&gt;

&lt;p&gt;На design review полезно буквально задать этот вопрос. Для payout flow я бы хотел видеть события вокруг добавления/смены payout account, step-up, создания и изменения payout, административного override, duplicate/replayed webhook, невозможного state transition, необычной payout velocity и reconciliation mismatch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs78ljxncr31xl8mbitl3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs78ljxncr31xl8mbitl3.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;В platform layer полезны denied IAM calls, secret access, Kubernetes exec, privileged workload creation, admission failure, artifact verification failure и неожиданный outbound traffic. Но логировать просто &lt;code&gt;HTTP 403&lt;/code&gt; мало — нужен контекст: кто действовал, над каким объектом, какое policy decision сработало и с каким request/session identifier.&lt;/p&gt;

&lt;p&gt;При этом security logging не должен сам превращаться в утечку. Password, access token, secret, полный bank account number или чувствительный authentication material в log не нужны. Для общей базы здесь полезен &lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html" rel="noopener noreferrer"&gt;OWASP Logging Cheat Sheet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ценность появляется, когда detection смотрит на последовательность:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;new device
 -&amp;gt; credential reset
 -&amp;gt; payout account changed
 -&amp;gt; multiple step-up failures
 -&amp;gt; successful step-up
 -&amp;gt; large payout
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Каждое событие может быть легитимным. Вместе они уже меняют риск. Если команда использует MITRE ATT&amp;amp;CK (а я про нее писал статью ранее), я бы применял его к наблюдаемому поведению атакующего и detection coverage, но не смешивал с CWE/ASVS. Weakness в authorization и adversary technique — разные уровни модели. И риски разные, но все неприятные.&lt;/p&gt;

&lt;h3&gt;
  
  
  Incident readiness как часть дизайна продукта
&lt;/h3&gt;

&lt;p&gt;Представим, что парни в SOC действительно увидел подозрительный payout. До инцидента должно быть понятно, кто может временно остановить выплаты, кто блокирует session/account, как отозвать credentials, где взять неизменённые audit events, как сверить внутренний ledger с provider и кто принимает решение о customer communication. Это не означает, что Product Security заменяет Incident Response. Его задача — убедиться, что продукт &lt;strong&gt;вообще предоставляет технические рычаги для containment и recovery&lt;/strong&gt;. Kill switch, account hold, key rotation, feature rollback и reconciliation лучше продумать до первого настоящего инцидента. Итогом SoC, CERT нужны как по факту так и по комплаенсу.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Findings, release и risk acceptance
&lt;/h2&gt;

&lt;p&gt;После automated scans, review и pentest легко получить десятки findings. Если просто превратить их в десятки одинаковых tickets, Product Security почти не добавила контекста. Сначала я бы нормализовал: duplicate ли это, false positive, production ли asset, достижим ли vulnerable path, есть ли public exposure, какой business impact, существуют ли compensating controls и связан ли finding с реальным attack path. Затем уже определяется priority.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Severity и priority — разные вещи.&lt;/strong&gt; Severity описывает техническую опасность проблемы. Priority отвечает на вопрос, что организация должна делать с ней сейчас.&lt;/p&gt;

&lt;p&gt;Подтверждённый payout authorization bypass — это очевидный immediate/release-blocking риск. Reachable dependency vulnerability в ограниченном internal worker может иметь высокий severity, но другой remediation window. Hardening gap без практического attack path может уйти в backlog. Это не «смягчение security», а нормальная triage-модель.&lt;/p&gt;

&lt;p&gt;Иногда риск нельзя разумно устранить к дате release. Тогда нужен risk acceptance, но не в виде кнопки &lt;code&gt;Ignore&lt;/code&gt;. Я хочу видеть понятный сценарий риска, affected assets, prerequisites, impact, compensating controls, detection/recovery, owner, дату истечения и trigger для пересмотра.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Например:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Risk:
Legacy reporting endpoint exposes broader data than target model.

**Exposure:**
Authenticated operations users only; no internet route.

**Compensating controls:**
SSO + MFA, restricted network path, audit logging,
quarterly access review.

**Residual impact:**
Unauthorized reporting-data access after compromise
of an internal operations identity.

**Decision:**
Accepted until service migration.

**Owner:**
VP Operations.

**Expires:**
2026-12-15.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Exception без срока имеет неприятную привычку превращаться в архитектуру.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Где здесь Product Security Manager\Lead
&lt;/h3&gt;

&lt;p&gt;Представим, Security предлагает 24-hour cooling-off после добавления нового банковского счёта. Product Security Manager справедливо отвечает: это ухудшит conversion и создаст поддержку для нормальных клиентов.&lt;/p&gt;

&lt;p&gt;Ответ «такова security policy» ничего не решает. Лучше положить на стол варианты: полный cooling-off, instant payout после сильного step-up и хороших risk signals, либо instant payout только до определённого лимита с задержкой выше threshold. Затем Product, Fraud, Engineering и Security сравнивают residual risk, UX, detection и recovery. Так выглядит взрослая роль Product Security: не максимизировать количество запретов, а &lt;strong&gt;сделать риск понятным и управляемым, не потеряв сам продукт&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Что в этом кейсе делает Senior Product Security Engineer
&lt;/h2&gt;

&lt;p&gt;Если посмотреть на весь путь целиком, senior здесь нужен не потому, что знает на двадцать названий scanners больше. Его ценность в том, что он удерживает связь между бизнес-сценарием, архитектурой, реализацией и production.&lt;/p&gt;

&lt;p&gt;До разработки он помогает найти critical assets, trust boundaries, invariants и abuse cases. На design review спорит про authorization model, failure modes, third-party trust и blast radius. Во время implementation превращает повторяемые решения в libraries, tests, CI policies и paved roads. Перед release проверяет не «все ли dashboards зелёные», а &lt;strong&gt;остался ли material attack path, который делает запуск неприемлемым&lt;/strong&gt;. После release смотрит на telemetry, exceptions, новые CVE, drift и incidents и возвращает выводы обратно в design.&lt;/p&gt;

&lt;p&gt;DevSecOps-инженер в этом же кейсе, скорее всего, глубже возьмёт pipeline, runner isolation, artifact provenance, policy-as-code и deployment controls. AppSec-инженер — API, code, authorization, threat modeling и security testing. Pentester — проверку abuse cases и реальную эксплуатацию предположений. Platform/Cloud Security — Kubernetes и IAM. Product Manager — UX, delivery и business trade-offs. Senior Product Security должен не заменить всех этих людей, а &lt;strong&gt;собрать их решения вокруг одного продуктового риска&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Поэтому и метрики лучше выбирать системные. Количество найденных vulnerabilities само по себе почти ничего не говорит. Мне интереснее доля high-risk features, которые прошли security design review до implementation; покрытие critical flows security tests; возраст risk exceptions; time-to-remediate действительно exploitable issues; процент production artifacts с проверяемым provenance; количество privileged workloads и long-lived credentials; false-positive rate; доля defects, пойманных до production; recurrence одного и того же класса ошибок.&lt;/p&gt;

&lt;p&gt;Последняя метрика особенно полезна. Если за год команда пять раз нашла один и тот же broken authorization pattern в разных сервисах, проблема уже не в пяти разработчиках. Скорее всего, не хватает общей authorization capability, reference implementation, architecture rule или обучения. Senior чинит &lt;strong&gt;систему, которая воспроизводит дефект&lt;/strong&gt;, а не только очередной дефект.&lt;/p&gt;

&lt;h3&gt;
  
  
  А какие тулы юзаем?
&lt;/h3&gt;

&lt;p&gt;Их много, и выбирать стек без контекста бессмысленно. Для небольшого продукта вполне реально начать с комбинации Semgrep/CodeQL для code analysis, Gitleaks или TruffleHog для secrets, Trivy/Grype для dependencies и images, Checkov/Trivy для IaC, Syft/CycloneDX для SBOM, Kyverno/Gatekeeper для admission policy, Kubescape/kube-bench для Kubernetes posture, Falco/Tetragon для runtime visibility и DefectDojo для aggregation/workflow.&lt;/p&gt;

&lt;p&gt;Коммерческие платформы — Snyk, Checkmarx, Veracode, GitHub Advanced Security, Wiz, Prisma Cloud, Orca, Mend, JFrog и другие — часто покупают не потому, что «open source плохой», а потому что большой организации нужны centralized inventory, correlation, policy, reporting, integrations, support и единый operating model. Ну, а в бесплатном ПО этого, как понимаешь, друг, нихера нет:)&lt;/p&gt;

&lt;p&gt;Иными словами, инструменты появляются &lt;strong&gt;после модели риска&lt;/strong&gt;, а не вместо неё.&lt;/p&gt;




&lt;h2&gt;
  
  
  Итог
&lt;/h2&gt;

&lt;p&gt;Если убрать названия технологий, весь наш fintech-кейс можно свернуть в несколько вопросов:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Что нельзя позволить атакующему?&lt;/strong&gt; Он не должен распоряжаться чужими деньгами, нарушать финансовую истину, обходить critical approval, внедрять код в trusted build или превращать одну локальную компрометацию во всю платформу.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Где это может сломаться?&lt;/strong&gt; В authorization, business logic, async workflow, third-party integration, CI/CD, dependency, Kubernetes, IAM или admin process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Что мы строим против этого?&lt;/strong&gt; Не абстрактную «security», а конкретные controls с владельцами и понятными failure modes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Как докажем, что они работают?&lt;/strong&gt; Automation, abuse tests, architecture review, policy-as-code, pentest и ручная проверка там, где automation не понимает бизнес-смысл.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Что произойдёт, если control всё-таки обойдут?&lt;/strong&gt; Нужны telemetry, detection, containment и recovery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Можно ли выпускать продукт?&lt;/strong&gt; Это уже risk decision, в котором техническая severity — только одна часть контекста.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;В итоге получается вполне приземлённая цепочка:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Business asset / invariant
    -&amp;gt; abuse case
        -&amp;gt; security requirement
            -&amp;gt; architecture / control
                -&amp;gt; validation
                    -&amp;gt; runtime signal
                        -&amp;gt; risk decision
                            -&amp;gt; feedback into product
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Для меня именно это и есть Product Security в практическом смысле: &lt;strong&gt;не отдельный этап SDLC и не набор scanners, а инженерная система, которая держит связь между тем, что важно продукту, тем, как его реально атакуют, и тем, как команда принимает технические решения от первого design review до production incident&lt;/strong&gt;. Этим я и занимаюсь:)&lt;/p&gt;

&lt;h2&gt;
  
  
  P.S.
&lt;/h2&gt;

&lt;p&gt;Если хочется продолжить от этого кейса уже по отдельным доменам — threat modeling, API Security, AppSec, DevSecOps, Cloud/Kubernetes, Secure SDLC или leadership operating model — я собираю такие материалы в &lt;a href="https://docs.product-security.expert/" rel="noopener noreferrer"&gt;Product Security Knowledge Base&lt;/a&gt;. Но сам принцип я бы оставил тем же: сначала понять продукт и его инварианты, а уже потом выбирать framework, control и инструмент.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1z5g71crj799tz15hfkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1z5g71crj799tz15hfkl.png" alt=" " width="798" height="163"&gt;&lt;/a&gt;&lt;/p&gt;




</description>
      <category>devsecops</category>
      <category>appsec</category>
      <category>cybersecurity</category>
      <category>pentest</category>
    </item>
    <item>
      <title>Считаем staff для своей Product Security Team</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Tue, 06 Oct 2026 22:00:00 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/schitaiem-staff-dlia-svoiei-product-security-team-87h</link>
      <guid>https://dev.to/ivan-piskunov/schitaiem-staff-dlia-svoiei-product-security-team-87h</guid>
      <description>&lt;h3&gt;
  
  
  Практическая модель staffing для Product Security, AppSec, DevSecOps, Cloud Security и Security Champions
&lt;/h3&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Я работал с компаниями разного размера и неоднократно видел одну и ту же картину: engineering растёт — developers, QA, DevOps, platform teams, architects, product managers — а безопасность (сука, как же не справедливо) остаётся на одном-двух людях или на маленькой команде, которая должна закрывать почти всё.&lt;/p&gt;

&lt;p&gt;Скажу сразу сходу и честно - универсального норматива здесь не существует. Но &lt;strong&gt;отраслевые ориентиры есть&lt;/strong&gt;. Вот их то и разберем!&lt;/p&gt;

&lt;p&gt;Мой практический rule of thumb:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Начинать планирование примерно с 1 dedicated Product Security / AppSec FTE на 50 – 75 software engineers, а дальше корректировать число с учётом риска продукта, сложности, автоматизации, compliance и реального scope команды.&lt;/strong&gt; ЭТО БАЗА!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для более рискованных сред — payments, FinTech, healthcare, critical infrastructure, safety-relevant products — я бы чаще стремился ближе к пропорции &lt;strong&gt;1:25 – 50&lt;/strong&gt;. Ну, а в зрелых и хорошо автоматизированных организациях может работать комбинация &lt;strong&gt;1:75 – 100+&lt;/strong&gt;, но только если Product Security не пытается вручную проверять всё подряд, а часть security ownership находится внутри engineering.&lt;/p&gt;

&lt;p&gt;И центральную команду стоит усиливать через &lt;strong&gt;Security Champions&lt;/strong&gt; внутри продуктовых команд. OWASP, например, приводит ориентир &lt;strong&gt;1 champion на 25 разработчиков для крупных организаций&lt;/strong&gt;; многие зрелые программы используют ещё более плотное покрытие.&lt;/p&gt;

&lt;p&gt;ВАЖНО: здесь я говорю именно про &lt;strong&gt;Product Security / AppSec / DevSecOps capacity&lt;/strong&gt;, а не про весь департамент кибербезопасности. ТАК КАК SOC, Incident Response, IAM operations, корпоративная защита endpoints, phishing, GRC и network security — это отдельные staffing-задачи. Простите, пацаны, я только за свою тему:) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0xnnblrrk9e4j69tq0s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy0xnnblrrk9e4j69tq0s.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Почему я вообще задался этим вопросом
&lt;/h2&gt;

&lt;p&gt;В разных компаниях я видел один и тот же организационный перекос. Например, я встречал такой расклад:&lt;/p&gt;

&lt;p&gt;30 разработчиков — и один человек в security.&lt;br&gt;
100+ инженеров — и два специалиста.&lt;br&gt;
150–200 человек, завязанных на software delivery, — и команда из трёх безопасников, которая должна выставлять стандарты, смотреть архитектуру, поддерживать AppSec tooling, разбирать findings, помогать cloud-командам, отвечать на audit-вопросы, обучать разработчиков и ещё подключаться к инцидентам.&lt;/p&gt;

&lt;p&gt;При этом в engineering обычно нормально разделены frontend, backend, QA, DevOps, SRE, architecture, product management, design и engineering management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;А security часто остаётся одной общей корзиной.&lt;/strong&gt; И у меня возник простой вопрос:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Если мы умеем планировать capacity разработки, QA, platform engineering и management span — почему Product Security headcount так часто определяется почти на глаз?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Я посмотрел BSIMM, исследования Security Champions, OWASP guidance и security organization benchmarks. Волшебной цифры там нет, но данных достаточно, чтобы построить полезную модель.&lt;/p&gt;

&lt;p&gt;Эта статья — моя попытка собрать её в рабочий вид. Интересно? Погнали!&lt;/p&gt;




&lt;h1&gt;
  
  
  1. Сначала определимся, кого именно мы считаем
&lt;/h1&gt;

&lt;p&gt;Одна из главных причин путаницы — слово &lt;strong&gt;security&lt;/strong&gt; используется для очень разных функций. Под &lt;strong&gt;Product Security&lt;/strong&gt; в этой статье я понимаю security capability, которая работает непосредственно с software engineering и создаваемым продуктом.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;В зависимости от компании сюда могут входить:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product Security Engineering;&lt;/li&gt;
&lt;li&gt;Application Security (AppSec);&lt;/li&gt;
&lt;li&gt;DevSecOps / Secure SDLC Engineering;&lt;/li&gt;
&lt;li&gt;Cloud / Platform Security;&lt;/li&gt;
&lt;li&gt;API Security;&lt;/li&gt;
&lt;li&gt;Software Supply Chain Security;&lt;/li&gt;
&lt;li&gt;Security Architecture;&lt;/li&gt;
&lt;li&gt;Product Vulnerability Management;&lt;/li&gt;
&lt;li&gt;Secure Design / Threat Modeling.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Типовая работа:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;threat modeling и design review;&lt;/li&gt;
&lt;li&gt;проверки authentication и authorization;&lt;/li&gt;
&lt;li&gt;secure coding guidance;&lt;/li&gt;
&lt;li&gt;API и business-logic security;&lt;/li&gt;
&lt;li&gt;SAST, SCA, DAST, secret scanning, IaC и container controls;&lt;/li&gt;
&lt;li&gt;CI/CD hardening и release integrity;&lt;/li&gt;
&lt;li&gt;cloud, Kubernetes и platform security;&lt;/li&gt;
&lt;li&gt;supply-chain controls, SBOM/VEX;&lt;/li&gt;
&lt;li&gt;vulnerability triage и remediation ownership;&lt;/li&gt;
&lt;li&gt;архитектурные guardrails и reusable secure patterns;&lt;/li&gt;
&lt;li&gt;developer enablement и Security Champions;&lt;/li&gt;
&lt;li&gt;product-level risk decisions и exceptions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Но это &lt;strong&gt;не весь cybersecurity department&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Что я обычно считал бы отдельными функциями
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Функция&lt;/th&gt;
&lt;th&gt;Основной scope&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Product Security / AppSec&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Product, code, architecture, SDLC, APIs, cloud delivery, engineering risk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SOC / Security Operations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Production monitoring, alert triage, detection, escalation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Incident Response / DFIR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Containment, investigation, forensics, recovery&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IAM Operations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Workforce identity, provisioning, access reviews, privileged access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Corporate / Enterprise Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Endpoints, EDR, email, network controls, corporate infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GRC / Compliance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Controls, evidence, regulatory requirements, audits, policies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Security Awareness&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Общая security-гигиена сотрудников, phishing, базовое обучение&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;В маленькой компании часть ролей неизбежно совмещается. Это нормально. Но «мы маленькие, поэтому роли совмещены» и «мы делаем вид, что этой работы не существует» — &lt;strong&gt;две разные вещи.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Исследования &lt;a href="https://www.ians.com/blog/ians-research/the-evolution-of-security-organization-design-a-maturity-roadmap-for-cisos" rel="noopener noreferrer"&gt;IANS&lt;/a&gt; хорошо показывают эту эволюцию: по мере зрелости security-функция распадается на отдельные SecOps, IAM, GRC, Architecture &amp;amp; Engineering и leadership-направления, а не остаётся одной универсальной командой.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fza04pqdh9ol25e78jq50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fza04pqdh9ol25e78jq50.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Что реально показывают отраслевые данные
&lt;/h1&gt;

&lt;h3&gt;
  
  
  BSIMM16: хороший reality check
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Building Security In Maturity Model (BSIMM)&lt;/strong&gt; здесь особенно полезен, потому что он описывает реальные Software Security Initiatives, а не теоретическую идеальную оргструктуру. BSIMM16, опубликованный Black Duck в 2026 году, включает &lt;strong&gt;111 организаций&lt;/strong&gt;, которые защищают около &lt;strong&gt;91 200 приложений, создаваемых 223 700 разработчиками&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Официальные источники:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.blackduck.com/resources/analyst-reports/bsimm.html" rel="noopener noreferrer"&gt;Black Duck — BSIMM16 Report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://news.blackduck.com/2026-02-04-Black-Duck-Releases-BSIMM16-Revealing-AI-and-Regulatory-Compliance-Reshaping-Application-Security-Processes" rel="noopener noreferrer"&gt;Black Duck — данные релиза BSIMM16&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sammy Migues, много лет руководивший технической частью BSIMM, отдельно разобрал population BSIMM16. Средние значения по 111 организациям получились такие:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;33,5 AppSec team members&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2 038 developers&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;820 applications&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Если просто разделить средние значения, получается примерно:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;1 специалист central AppSec team на ~61 разработчика.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Но читать эту цифру как норматив было бы ошибкой.&lt;/p&gt;

&lt;p&gt;Куда интереснее другой вывод BSIMM: &lt;strong&gt;зрелые программы не пытаются решить масштаб бесконечным ростом central AppSec team&lt;/strong&gt;. Они создают leverage через engineering integration и Security Champions.&lt;/p&gt;

&lt;p&gt;Источник: &lt;a href="https://www.katilyst.com/post/bsimm16-security-champions-blog" rel="noopener noreferrer"&gt;Katilyst / Sammy Migues — BSIMM16 and Security Champions&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Coalfire: ещё одна хорошая точка опоры
&lt;/h3&gt;

&lt;p&gt;В &lt;strong&gt;AppSec Champions Report&lt;/strong&gt; Coalfire исследовал зрелые AppSec-программы и получил ориентир:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;примерно 1 full-time AppSec staff member на 50 developers.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;То же исследование показывает, насколько сильно зрелая модель зависит от champions и постоянного взаимодействия с engineering.&lt;/p&gt;

&lt;p&gt;Источники:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coalfire.com/insights/resources/reports/appsec-champions-report" rel="noopener noreferrer"&gt;Coalfire — AppSec Champions Report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://assets.coalfire.com/prod/resources/reports/appsec-champions-report.pdf" rel="noopener noreferrer"&gt;Coalfire — PDF отчёта&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Если два независимых массива данных дают центр примерно в районе &lt;strong&gt;1:50–1:60&lt;/strong&gt;, для меня этого достаточно, чтобы использовать его как &lt;strong&gt;planning anchor&lt;/strong&gt;, но не как закон.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Мой практический benchmark
&lt;/h1&gt;

&lt;p&gt;Для software product company я бы интерпретировал dedicated Product Security / AppSec staffing примерно так:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Соотношение&lt;/th&gt;
&lt;th&gt;Моя интерпретация&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1 : 25 – 50&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Сильное покрытие; уместно для high-risk, regulated, safety-relevant или сложных продуктов&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1 : 40 – 75&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Здоровый planning range для многих зрелых product organizations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1 : 75 – 100&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lean; нужны сильная automation, ясный ownership и Security Champions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1 : 100 – 150+&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Может работать на масштабе, но только если central team сильно leveraged, а engineering реально владеет частью security activities&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Неправильный вывод выглядел бы так:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«BSIMM показал 1:61 — значит всем компаниям нужен ровно один безопасник на 61 разработчика».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Нормальный вывод:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;1:50–75 — хорошая начальная точка для разговора. Дальше корректируем под риск и operating model.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Сам headcount ничего не гарантирует. Команда &lt;strong&gt;&lt;em&gt;из четырёх инженеров,&lt;/em&gt;&lt;/strong&gt; которая построила automation, secure defaults, ownership, reusable controls и сильную сеть champions, &lt;strong&gt;&lt;em&gt;может работать эффективнее восьми человек,&lt;/em&gt;&lt;/strong&gt; которые вручную занимаются scanner triage и перекладывают findings из одного тикета в другой.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw60ty42we1q2bmtmeema.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw60ty42we1q2bmtmeema.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Простая формула, которой я пользуюсь для first-pass оценки
&lt;/h1&gt;

&lt;p&gt;Когда мне нужно быстро оценить порядок staffing, я использую такую эвристику:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Product Security FTE ≈ Software Engineers / 60 × Risk Multiplier&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Число &lt;strong&gt;60&lt;/strong&gt; я беру не случайно — оно находится примерно посередине между ориентирами BSIMM16-derived data и Coalfire.&lt;/p&gt;

&lt;p&gt;Дальше добавляется risk multiplier.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Среда&lt;/th&gt;
&lt;th&gt;Стартовый multiplier&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Internal tools / low-risk простой SaaS&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.8&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Типовой коммерческий software product&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sensitive-data / B2B SaaS&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.2&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FinTech / payments / healthcare&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Safety-critical / critical infrastructure / heavily regulated&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.5 – 2.0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Пример 1 — обычный SaaS
&lt;/h3&gt;

&lt;p&gt;180 developers:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;180 / 60 × 1.0 = 3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Стартовая оценка: ~3 Product Security FTE.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Пример 2 — sensitive B2B product
&lt;/h3&gt;

&lt;p&gt;180 developers:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;180 / 60 × 1.2 = 3.6&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Стартовая оценка: ~4 FTE.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Пример 3 — payments / FinTech
&lt;/h3&gt;

&lt;p&gt;180 developers:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;180 / 60 × 1.5 = 4.5&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Стартовая оценка: ~4–5 FTE.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Пример 4 — safety-critical / highly regulated
&lt;/h3&gt;

&lt;p&gt;180 developers:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;180 / 60 × 1.8 = 5.4&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Стартовая оценка: ~5 – 6+ FTE&lt;/strong&gt;, а иногда и больше, если команда владеет deep assurance, product incident readiness, специализированным testing или regulatory evidence.&lt;/p&gt;

&lt;p&gt;Это не индустриальный стандарт, и я бы точно не записывал эту формулу в policy как обязательный норматив. Это &lt;strong&gt;capacity-planning heuristic&lt;/strong&gt; — быстрый способ понять, не выглядит ли предложенная модель очевидно недоукомплектованной ещё до более глубокого анализа.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Headcount сам по себе ничего не решает: смотрим на engineering reality
&lt;/h1&gt;

&lt;p&gt;Две компании с 200 developers могут требовать совершенно разного количества Product Security staff. После baseline-расчёта я бы задал четыре группы вопросов.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product complexity
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Сколько у компании:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;repositories;&lt;/li&gt;
&lt;li&gt;services;&lt;/li&gt;
&lt;li&gt;APIs;&lt;/li&gt;
&lt;li&gt;mobile applications;&lt;/li&gt;
&lt;li&gt;cloud accounts/subscriptions;&lt;/li&gt;
&lt;li&gt;Kubernetes clusters;&lt;/li&gt;
&lt;li&gt;production environments;&lt;/li&gt;
&lt;li&gt;privileged workflows;&lt;/li&gt;
&lt;li&gt;external integrations;&lt;/li&gt;
&lt;li&gt;third-party components;&lt;/li&gt;
&lt;li&gt;customer-facing administrative functions?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Delivery velocity
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Сколько production releases в день/неделю?&lt;/li&gt;
&lt;li&gt;Сколько независимых product teams?&lt;/li&gt;
&lt;li&gt;Могут ли команды деплоиться автономно?&lt;/li&gt;
&lt;li&gt;Насколько сложен CI/CD?&lt;/li&gt;
&lt;li&gt;Как часто меняется architecture?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Risk profile
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Payments?&lt;/li&gt;
&lt;li&gt;PII / PHI?&lt;/li&gt;
&lt;li&gt;Multi-tenancy?&lt;/li&gt;
&lt;li&gt;Financial transactions?&lt;/li&gt;
&lt;li&gt;Physical devices?&lt;/li&gt;
&lt;li&gt;Remote commands?&lt;/li&gt;
&lt;li&gt;Critical infrastructure?&lt;/li&gt;
&lt;li&gt;Safety impact?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security maturity
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Есть ли reusable secure patterns?&lt;/li&gt;
&lt;li&gt;Централизованы и tuned ли SAST/SCA/secrets/IaC/container scanning?&lt;/li&gt;
&lt;li&gt;Нормальный ли asset inventory?&lt;/li&gt;
&lt;li&gt;Есть ли ownership mapping?&lt;/li&gt;
&lt;li&gt;Deduplicated ли findings?&lt;/li&gt;
&lt;li&gt;Исправляют ли dev teams проблемы напрямую?&lt;/li&gt;
&lt;li&gt;Реально ли работает Security Champions program?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Формула даёт baseline.&lt;/strong&gt; Эти вопросы показывают, надо ли двигать его &lt;strong&gt;вверх или вниз&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. Как я бы строил Product Security для 150 – 200 developers
&lt;/h1&gt;

&lt;p&gt;Для 150 – 200 разработчиков я обычно ожидал бы &lt;strong&gt;3 – 5 dedicated Product Security people&lt;/strong&gt; в нормальной коммерческой software-компании — при условии, что SOC, IAM, GRC и corporate security живут отдельно.&lt;/p&gt;

&lt;p&gt;Практическая структура может выглядеть так.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Product Security Lead / Head / Manager
&lt;/h2&gt;

&lt;p&gt;Этот человек владеет &lt;strong&gt;системой&lt;/strong&gt;, а не каждым отдельным ticket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Фокус:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;strategy и roadmap;&lt;/li&gt;
&lt;li&gt;risk model;&lt;/li&gt;
&lt;li&gt;architecture и high-risk decisions;&lt;/li&gt;
&lt;li&gt;standards и guardrails;&lt;/li&gt;
&lt;li&gt;stakeholder management;&lt;/li&gt;
&lt;li&gt;metrics и executive reporting;&lt;/li&gt;
&lt;li&gt;exception governance;&lt;/li&gt;
&lt;li&gt;Security Champions program;&lt;/li&gt;
&lt;li&gt;приоритизация и capacity decisions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;В команде из трёх человек такой Lead, на мой взгляд, всё ещё должен быть технически сильным и при необходимости hands-on.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Senior Product Security / AppSec Engineer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Основной scope:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;threat modeling;&lt;/li&gt;
&lt;li&gt;architecture review;&lt;/li&gt;
&lt;li&gt;API security;&lt;/li&gt;
&lt;li&gt;authN/authZ;&lt;/li&gt;
&lt;li&gt;business logic;&lt;/li&gt;
&lt;li&gt;secure code review;&lt;/li&gt;
&lt;li&gt;validation critical vulnerabilities;&lt;/li&gt;
&lt;li&gt;developer consultation;&lt;/li&gt;
&lt;li&gt;remediation design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. DevSecOps / Cloud / Platform Security Engineer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Основной scope:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI/CD security;&lt;/li&gt;
&lt;li&gt;SAST/SCA/secrets integrations;&lt;/li&gt;
&lt;li&gt;policy-as-code;&lt;/li&gt;
&lt;li&gt;IaC security;&lt;/li&gt;
&lt;li&gt;cloud IAM и exposure;&lt;/li&gt;
&lt;li&gt;Kubernetes и containers;&lt;/li&gt;
&lt;li&gt;software supply chain;&lt;/li&gt;
&lt;li&gt;build/release integrity;&lt;/li&gt;
&lt;li&gt;automation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4–5. Дополнительная Product Security / AppSec / Cloud Security capacity
&lt;/h2&gt;

&lt;p&gt;При росте компании дополнительные IC снимают execution-нагрузку и позволяют senior staff заниматься architecture, secure defaults и automation вместо постоянной жизни в backlog.&lt;/p&gt;

&lt;h3&gt;
  
  
  Моя быстрая оценка для 150 – 200 developers
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dedicated Product Security staff&lt;/th&gt;
&lt;th&gt;Что я бы подумал&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Сильнейший key-person risk и почти гарантированный bottleneck&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Очень lean; жизнеспособно только при узком scope и сильном engineering ownership&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Нижняя граница убедительной central function&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4–5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Здоровый уровень для многих software product companies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;5–8&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Более логично для high-risk / regulated / сложных environments&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;НО ЕЩЕ РАЗ: это &lt;strong&gt;Product Security scope&lt;/strong&gt;. Если на этих же людей повесили SOC, IAM operations, corporate endpoints, phishing, GRC, audit evidence и incident response, цифра перестаёт что-либо означать — мы уже считаем другую организацию.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjti9hb2annz7qyt0oqxe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjti9hb2annz7qyt0oqxe.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  7. Security Champions — главный force multiplier
&lt;/h1&gt;

&lt;p&gt;Central AppSec team не масштабируется линейно вслед за development. Стандарт OWASP прямо пишет: AppSec engineers не могут быть единственной security-точкой для всех development teams. Security Champions — один из способов распределить знания и ownership.&lt;/p&gt;

&lt;p&gt;Источники:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://devguide.owasp.org/en/08-culture-process/02-security-champions/01-security-champions-program/" rel="noopener noreferrer"&gt;OWASP Developer Guide — Security Champions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://securitychampions.owasp.org/" rel="noopener noreferrer"&gt;OWASP Security Champions Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OWASP приводит &lt;strong&gt;1 champion на 25 developers&lt;/strong&gt; как пример разумного ratio для large organizations.&lt;/p&gt;

&lt;p&gt;Источник: &lt;a href="https://securitychampions.owasp.org/principles/10_Anticipate_personnel_changes/" rel="noopener noreferrer"&gt;OWASP — Anticipate Personnel Changes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BSIMM16-derived data показывает, что зрелые программы могут идти ещё плотнее. По анализу Sammy Migues, среди организаций с champions programs небольшие компании имели в среднем примерно &lt;strong&gt;1 champion на 6 developers&lt;/strong&gt;, крупные — около &lt;strong&gt;1:17&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Это не значит, что всем срочно нужен ratio 1:6. Для меня вывод другой:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Зрелые Product Security programs распределяют security capability внутрь engineering, а не пытаются централизовать каждое решение.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для 200 developers вполне рабочая модель может выглядеть так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;3 – 5 dedicated Product Security specialists + 10 – 20 активных Security Champions&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Champions — обычно не дополнительные security hires.&lt;/strong&gt; Это могут быть developers, QA, DevOps/SRE, architects или product engineers, которые сохраняют основную роль, но получают security training, защищённое время, escalation path и формальное признание своей дополнительной ответственности.&lt;/p&gt;

&lt;p&gt;OWASP отдельно подчёркивает, что champion может быть developer, tester, product manager или другой member delivery team — важнее genuine interest, support и возможность развиваться.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. Developer, который выучил security, или security engineer, который выучил development?
&lt;/h1&gt;

&lt;p&gt;Я не думаю, что здесь вообще нужен религиозный спор. &lt;strong&gt;Оба пути работают (ИМХО).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Сильный developer может стать отличным Security Champion, AppSec engineer или Product Security engineer, если глубоко изучит:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;threat modeling;&lt;/li&gt;
&lt;li&gt;exploitability и abuse cases;&lt;/li&gt;
&lt;li&gt;authentication / authorization;&lt;/li&gt;
&lt;li&gt;secure architecture;&lt;/li&gt;
&lt;li&gt;cloud/platform risk;&lt;/li&gt;
&lt;li&gt;vulnerability classes;&lt;/li&gt;
&lt;li&gt;risk prioritization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Сильный security engineer может быть не менее эффективен, если хорошо понимает:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;software architecture;&lt;/li&gt;
&lt;li&gt;APIs;&lt;/li&gt;
&lt;li&gt;programming fundamentals;&lt;/li&gt;
&lt;li&gt;CI/CD;&lt;/li&gt;
&lt;li&gt;cloud platforms;&lt;/li&gt;
&lt;li&gt;developer workflows;&lt;/li&gt;
&lt;li&gt;release engineering;&lt;/li&gt;
&lt;li&gt;product trade-offs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Общее требование одно:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Product Security должна работать внутри engineering reality.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Человек, который понимает vulnerabilities, но не понимает delivery, будет создавать friction. Человек, который понимает delivery, но плохо мыслит как adversary, будет пропускать риск.&lt;/p&gt;

&lt;p&gt;Самые сильные Product Security engineers обычно приходят к &lt;strong&gt;T-shaped profile&lt;/strong&gt;: глубокое security core + достаточное понимание software engineering и platform engineering, чтобы controls были применимы в реальной жизни.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. Не превращайте Product Security в «отдел всего, где встречается слово security»
&lt;/h1&gt;

&lt;p&gt;Это один из самых быстрых способов уничтожить маленькую Product Security team. Компания нанимает трёх человек и называет их «Security». А дальше очередь постепенно превращается в:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AppSec findings;&lt;/li&gt;
&lt;li&gt;cloud misconfigurations;&lt;/li&gt;
&lt;li&gt;firewall changes;&lt;/li&gt;
&lt;li&gt;endpoint alerts;&lt;/li&gt;
&lt;li&gt;phishing incidents;&lt;/li&gt;
&lt;li&gt;access requests;&lt;/li&gt;
&lt;li&gt;audit evidence;&lt;/li&gt;
&lt;li&gt;vulnerability scanning;&lt;/li&gt;
&lt;li&gt;pen tests;&lt;/li&gt;
&lt;li&gt;IAM reviews;&lt;/li&gt;
&lt;li&gt;policies;&lt;/li&gt;
&lt;li&gt;incident response;&lt;/li&gt;
&lt;li&gt;security awareness;&lt;/li&gt;
&lt;li&gt;customer questionnaires;&lt;/li&gt;
&lt;li&gt;architecture review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Три Product Security engineer на 180 developers могут быть нормальной структурой. Три «security people» на 180 developers &lt;strong&gt;плюс весь enterprise security scope&lt;/strong&gt; (AD, линуха, почтовик, файерволы, внутренние порталы, анти-спам, антивирус, расдача прав и т.д. и т.п.) — уже совсем другая математика.&lt;/p&gt;

&lt;p&gt;IANS хорошо показывает появление специализации по мере роста компании. В 2025 benchmark midsize organizations обычно имеют примерно &lt;strong&gt;3–15 total security FTE&lt;/strong&gt;, large enterprises — &lt;strong&gt;15 – 49&lt;/strong&gt;, Fortune-scale — &lt;strong&gt;50+&lt;/strong&gt;, и по мере роста появляются отдельные SecOps, IAM, GRC, Architecture &amp;amp; Engineering и leadership layers.&lt;/p&gt;

&lt;p&gt;Источник: &lt;a href="https://www.ians.com/insights/ciso-leadership/2025-security-organizational-design-benchmark-report" rel="noopener noreferrer"&gt;IANS — 2025 Security Organizational Design Benchmark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Это &lt;strong&gt;benchmark всей security organization&lt;/strong&gt;, а не Product Security ratio. Я привожу его именно для того, чтобы не смешивать два разных измерения.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. Четыре условных размера компании
&lt;/h1&gt;

&lt;p&gt;Вот таблица, с которой я бы начинал разговор о capacity.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Software engineers&lt;/th&gt;
&lt;th&gt;Типовой commercial product&lt;/th&gt;
&lt;th&gt;Higher-risk product&lt;/th&gt;
&lt;th&gt;Возможная central structure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1 сильный generalist / lead&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1 – 2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AppSec + DevSecOps combined; external testing при необходимости&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;100&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3–4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lead + AppSec / DevSecOps split&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;200&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;3 – 4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5 – 7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lead + AppSec + DevSecOps/Cloud + дополнительная execution capacity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7 – 9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10 – 15+&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Director/Head, несколько IC, specialization, champion program&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Эти цифры не означают «X людей гарантированно хватит». &lt;strong&gt;Это sanity check.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;На 500 developers меня уже намного сильнее интересует operating model: product-aligned security engineers, architecture ownership, automation, vulnerability operations, champions и service boundaries.&lt;/p&gt;

&lt;p&gt;При 30 developers один действительно сильный senior generalist может создать огромный leverage, если environment относительно простой, а engineering leadership не пытается outsource весь risk в security.&lt;/p&gt;




&lt;h1&gt;
  
  
  11. Когда нужен отдельный manager / director?
&lt;/h1&gt;

&lt;p&gt;Чистого people manager я бы не нанимал слишком рано. Моя базовая логика такая.&lt;/p&gt;

&lt;h3&gt;
  
  
  1–2 Product Security people
&lt;/h3&gt;

&lt;p&gt;Чаще полезнее сильный &lt;strong&gt;hands-on Lead / Head&lt;/strong&gt;, а не manager, который уже полностью ушёл от техники.&lt;/p&gt;

&lt;h3&gt;
  
  
  3–5 people
&lt;/h3&gt;

&lt;p&gt;Имеет смысл &lt;strong&gt;Lead / Manager / Head of Product Security&lt;/strong&gt;, но я всё ещё хочу видеть сильное technical judgment.&lt;/p&gt;

&lt;h3&gt;
  
  
  6–10+ people
&lt;/h3&gt;

&lt;p&gt;Полноценный &lt;strong&gt;Head / Director of Product Security&lt;/strong&gt; становится естественным. Ниже могут появляться team leads / domain owners.&lt;/p&gt;

&lt;h3&gt;
  
  
  Несколько специализированных направлений
&lt;/h3&gt;

&lt;p&gt;Если внутри функции уже есть:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AppSec;&lt;/li&gt;
&lt;li&gt;Product Security Engineering;&lt;/li&gt;
&lt;li&gt;DevSecOps;&lt;/li&gt;
&lt;li&gt;Cloud / Platform Security;&lt;/li&gt;
&lt;li&gt;Product Security Architecture;&lt;/li&gt;
&lt;li&gt;Vulnerability Management;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;то Director/VP layer плюс technical leads — уже не overhead, а нормальная оргструктура.&lt;/p&gt;

&lt;p&gt;В safety-critical или heavily regulated industries отдельно могут появляться assurance, product incident response, compliance engineering и специализированные testing/validation groups.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. Более правильная модель: три слоя вместо одной цифры
&lt;/h1&gt;

&lt;p&gt;Если сократить всю статью до одной архитектуры, я бы рисовал её так.&lt;/p&gt;

&lt;h2&gt;
  
  
  № Layer 1 — Dedicated Product Security specialists
&lt;/h2&gt;

&lt;p&gt;Глубокая экспертиза и ownership.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule of thumb:&lt;/strong&gt; старт примерно с &lt;strong&gt;1:50–75 developers&lt;/strong&gt;, с risk adjustment.&lt;/p&gt;

&lt;h1&gt;
  
  
  №# Layer 2 — Security Champions внутри engineering
&lt;/h1&gt;

&lt;p&gt;Локальный контекст и first-line security capability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule of thumb:&lt;/strong&gt; примерно &lt;strong&gt;один champion на engineering squad / 10–25 developers&lt;/strong&gt;, в зависимости от структуры и maturity.&lt;/p&gt;

&lt;h1&gt;
  
  
  №# Layer 3 — Automation и secure defaults
&lt;/h1&gt;

&lt;p&gt;То, что делает первые два слоя масштабируемыми:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;paved roads / golden paths;&lt;/li&gt;
&lt;li&gt;secure templates;&lt;/li&gt;
&lt;li&gt;reusable libraries;&lt;/li&gt;
&lt;li&gt;CI/CD policies;&lt;/li&gt;
&lt;li&gt;automated scanning;&lt;/li&gt;
&lt;li&gt;centralized secrets;&lt;/li&gt;
&lt;li&gt;baseline cloud controls;&lt;/li&gt;
&lt;li&gt;guardrails;&lt;/li&gt;
&lt;li&gt;self-service checks;&lt;/li&gt;
&lt;li&gt;actionable dashboards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Нельзя бесконечно компенсировать слабый Layer 3 наймом людей в Layer 1. И нельзя заменить Layer 1 объявлением всех разработчиков Security Champions. Модель работает именно потому, что три слоя усиливают друг друга.&lt;/p&gt;




&lt;h1&gt;
  
  
  13. Как я бы оценивал security team на интервью
&lt;/h1&gt;

&lt;p&gt;Вот где эта тема становится полезной не только для руководителя, но и для кандидата. На интервью на senior Product Security role я бы не ограничивался вопросом:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Сколько у вас безопасников?»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Я бы спросил следующее.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scope
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How many engineers and product teams does Product Security support?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Responsibility boundary
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What is actually owned by Product Security, and which functions are separate — SecOps, IAM, GRC, corporate security, cloud security, incident response?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Champions
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Do you have a Security Champions program? How active is it?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Automation
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Which controls are centralized and automated today, and which activities still depend on manual security review?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Operating model
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Is Product Security expected to approve everything, or do engineering teams own defined security outcomes?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Success criteria
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What would you expect this team to improve over the next 12 months: coverage, architecture, vulnerability backlog, developer enablement, cloud controls, compliance, or something else?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Эти вопросы говорят о компании намного больше, чем job title. Три Product Security engineer на 180 developers могут быть вполне здоровой structural model.&lt;/p&gt;

&lt;p&gt;Три человека, которые одновременно должны обслуживать 180 developers &lt;strong&gt;и&lt;/strong&gt; SIEM, EDR, IAM, audit evidence, phishing, pentesting, architecture и cloud security, — уже warning sign.&lt;/p&gt;




&lt;h1&gt;
  
  
  14. Red flags, которые меня бы напрягли
&lt;/h1&gt;

&lt;p&gt;Headcount важен, но эти признаки мне нравятся ещё меньше:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;у Product Security нет понятных service boundaries;&lt;/li&gt;
&lt;li&gt;каждый scanner finding вручную проходит через security;&lt;/li&gt;
&lt;li&gt;engineering воспринимает security только как approval gate;&lt;/li&gt;
&lt;li&gt;нет asset/repository ownership model;&lt;/li&gt;
&lt;li&gt;security standards существуют только в документах;&lt;/li&gt;
&lt;li&gt;нет champions или другой embedded capability;&lt;/li&gt;
&lt;li&gt;один человек является единственным экспертом одновременно по AppSec, cloud, CI/CD и incident response;&lt;/li&gt;
&lt;li&gt;security отвечает за remediation, но не может влиять на product priorities;&lt;/li&gt;
&lt;li&gt;эффективность измеряется количеством findings, а не risk reduction / coverage;&lt;/li&gt;
&lt;li&gt;каждая новая &lt;strong&gt;&lt;em&gt;product team почти линейно увеличивает ручную нагрузку&lt;/em&gt;&lt;/strong&gt; security.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Последний пункт особенно показателен. Зрелая Product Security function при росте должна становиться &lt;strong&gt;более leveraged&lt;/strong&gt;, а не просто более перегруженной.&lt;/p&gt;




&lt;h1&gt;
  
  
  15. Мой итоговый rule of thumb
&lt;/h1&gt;

&lt;p&gt;Если меня попросить назвать одну цифру, которую можно держать в голове, я отвечу так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Планируйте примерно 1 dedicated Product Security / AppSec professional на 50 – 75 software engineers; для high-risk products смещайтесь к 1:25 – 50 и обязательно усиливайте central team Security Champions внутри engineering.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для 150 – 200 developers я обычно хотел бы видеть примерно:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;3  –5 dedicated Product Security specialists&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;с более плотным staffing для payments, healthcare, critical infrastructure, safety-relevant и heavily regulated environments.&lt;/p&gt;

&lt;p&gt;И я бы обычно считал отдельно capacity для SOC, Incident Response, IAM operations, GRC и corporate security.&lt;/p&gt;

&lt;p&gt;Но сама цифра — не цель. Цель — иметь достаточно capability, чтобы:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;понимать material product risk;&lt;/li&gt;
&lt;li&gt;строить secure defaults;&lt;/li&gt;
&lt;li&gt;влиять на architecture до релиза;&lt;/li&gt;
&lt;li&gt;автоматизировать повторяемые controls;&lt;/li&gt;
&lt;li&gt;помогать engineering, не превращаясь в bottleneck;&lt;/li&gt;
&lt;li&gt;сохранять ownership самых серьёзных risk decisions;&lt;/li&gt;
&lt;li&gt;вовремя замечать, когда operating model перестал масштабироваться.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Поэтому для меня главный вопрос не:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Сколько у нас security people?»&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;А грамотно так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Хватает ли нам Product Security capacity, engineering leverage и ownership, чтобы удерживать риск управляемым по мере роста продукта?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Источники
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Black Duck — BSIMM16 Report&lt;/strong&gt;
&lt;a href="https://www.blackduck.com/resources/analyst-reports/bsimm.html" rel="noopener noreferrer"&gt;https://www.blackduck.com/resources/analyst-reports/bsimm.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Black Duck — BSIMM16 release: 111 organizations, ~91,200 applications, 223,700 developers&lt;/strong&gt;
&lt;a href="https://news.blackduck.com/2026-02-04-Black-Duck-Releases-BSIMM16-Revealing-AI-and-Regulatory-Compliance-Reshaping-Application-Security-Processes" rel="noopener noreferrer"&gt;https://news.blackduck.com/2026-02-04-Black-Duck-Releases-BSIMM16-Revealing-AI-and-Regulatory-Compliance-Reshaping-Application-Security-Processes&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sammy Migues / Katilyst — BSIMM16 Security Champions analysis&lt;/strong&gt;
&lt;a href="https://www.katilyst.com/post/bsimm16-security-champions-blog" rel="noopener noreferrer"&gt;https://www.katilyst.com/post/bsimm16-security-champions-blog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coalfire — AppSec Champions Report&lt;/strong&gt;
&lt;a href="https://coalfire.com/insights/resources/reports/appsec-champions-report" rel="noopener noreferrer"&gt;https://coalfire.com/insights/resources/reports/appsec-champions-report&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coalfire — AppSec Champions Report PDF&lt;/strong&gt;
&lt;a href="https://assets.coalfire.com/prod/resources/reports/appsec-champions-report.pdf" rel="noopener noreferrer"&gt;https://assets.coalfire.com/prod/resources/reports/appsec-champions-report.pdf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OWASP Developer Guide — Security Champions Program&lt;/strong&gt;
&lt;a href="https://devguide.owasp.org/en/08-culture-process/02-security-champions/01-security-champions-program/" rel="noopener noreferrer"&gt;https://devguide.owasp.org/en/08-culture-process/02-security-champions/01-security-champions-program/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OWASP Security Champions Guide&lt;/strong&gt;
&lt;a href="https://securitychampions.owasp.org/" rel="noopener noreferrer"&gt;https://securitychampions.owasp.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OWASP — Anticipate Personnel Changes (пример 1 champion / 25 developers)&lt;/strong&gt;   &lt;a href="https://securitychampions.owasp.org/principles/10_Anticipate_personnel_changes/" rel="noopener noreferrer"&gt;https://securitychampions.owasp.org/principles/10_Anticipate_personnel_changes/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IANS — The Evolution of Security Organization Design&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.ians.com/blog/ians-research/the-evolution-of-security-organization-design-a-maturity-roadmap-for-cisos" rel="noopener noreferrer"&gt;https://www.ians.com/blog/ians-research/the-evolution-of-security-organization-design-a-maturity-roadmap-for-cisos&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IANS — 2025 Security Organizational Design Benchmark Report&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://www.ians.com/insights/ciso-leadership/2025-security-organizational-design-benchmark-report" rel="noopener noreferrer"&gt;https://www.ians.com/insights/ciso-leadership/2025-security-organizational-design-benchmark-report&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Об авторе
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh9e66bff2sa08getd7tm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh9e66bff2sa08getd7tm.png" alt=" " width="797" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>infosec</category>
      <category>management</category>
      <category>security</category>
    </item>
    <item>
      <title>MITRE ATT&amp;CK для Product Security: как связать pentest, threat modeling, CI/CD и реальные сценарии атак</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Wed, 30 Sep 2026 22:00:00 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/mitre-attck-dlia-product-security-kak-sviazat-pentest-threat-modeling-cicd-i-riealnyie-stsienarii-1ecm</link>
      <guid>https://dev.to/ivan-piskunov/mitre-attck-dlia-product-security-kak-sviazat-pentest-threat-modeling-cicd-i-riealnyie-stsienarii-1ecm</guid>
      <description>&lt;p&gt;Матрицу &lt;strong&gt;MITRE ATT&amp;amp;CK&lt;/strong&gt; обычно ассоциируют с SOC, threat hunting и red team. Это база. Но она может быть полезна намного раньше — на этапе threat modeling, pentest, архитектурного review и CI/CD. И не только для инциденщиков, но и в теме Product Security. В статье разбираю, как перейти от isolated finding к attack path и связать attacker behavior с preventive controls, что такое security validation, причем тут runtime detection и release risk на примерах public API, SSRF → cloud, Kubernetes и software supply chain. Отдельно покажу, почему vulnerability нельзя автоматически превращать в ATT&amp;amp;CK technique и в каких Product Security сценариях ATT&amp;amp;CK лучше вообще не использовать.&lt;/p&gt;

&lt;h2&gt;
  
  
  В чем недопонимание потенциала MITRE ATT&amp;amp;CK
&lt;/h2&gt;

&lt;p&gt;Когда говорят про &lt;strong&gt;MITRE ATT&amp;amp;CK&lt;/strong&gt;, в голове обычно сразу появляются SOC, SIEM, threat hunting, red team и огромная цветная матрица, которую кто-то заботливо раскрасил в ATT&amp;amp;CK Navigator. Как уже писал в анонсе это база, все так и есть. Product Security же живёт вроде бы в другом мире: Secure SDLC, threat modeling, SAST/SCA/DAST, code review, pentest, API security, Kubernetes, cloud, CI/CD, release gates и security architecture.&lt;/p&gt;

&lt;p&gt;Из-за этого ATT&amp;amp;CK часто воспринимают как инструмент, который становится полезным уже &lt;strong&gt;после релиза&lt;/strong&gt;, когда продукт атакуют и нужно понять, что именно делает злоумышленник. На практике я бы смотрел на неё шире.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ATT&amp;amp;CK может стать общим языком между:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pentest findings;&lt;/li&gt;
&lt;li&gt;abuse cases и threat model;&lt;/li&gt;
&lt;li&gt;AppSec и DevSecOps controls;&lt;/li&gt;
&lt;li&gt;cloud и Kubernetes security;&lt;/li&gt;
&lt;li&gt;red team и adversarial testing;&lt;/li&gt;
&lt;li&gt;detection engineering;&lt;/li&gt;
&lt;li&gt;incident response;&lt;/li&gt;
&lt;li&gt;release risk и security ownership.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Но есть важное условие: &lt;strong&gt;не надо превращать ATT&amp;amp;CK в ещё один каталог уязвимостей&lt;/strong&gt;. И так, ниже в этом материале разберём, как использовать MITRE ATT&amp;amp;CK именно в Product Security: от отдельного finding до attack path, preventive controls, security testing, telemetry и release decision. Let's Go, парни! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5eidxr5twpesd6uxfr20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5eidxr5twpesd6uxfr20.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR: модель в одной минуте
&lt;/h2&gt;

&lt;p&gt;Если оставить от всей статьи одну идею, я бы оставил эту:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Weakness / Finding
        ↓
Attacker Action
        ↓
ATT&amp;amp;CK Technique
        ↓
Attack Path
        ↓
Preventive Control
        ↓
Validation
        ↓
Telemetry / Detection
        ↓
Owner + Risk Decision
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Например:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SSRF
 ↓
Attacker queries cloud metadata
 ↓
T1552.005 — Cloud Instance Metadata API
 ↓
Temporary cloud credentials
 ↓
Attacker uses the credentials
 ↓
T1078.004 — Valid Accounts: Cloud Accounts
 ↓
Cloud discovery / data access
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Главный принцип здесь простой:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Мы мэппим не название vulnerability. Мы мэппим действие атакующего, которое эта vulnerability делает возможным.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;И если вы не можете одним предложением сказать, &lt;strong&gt;что именно делает attacker&lt;/strong&gt;, ATT&amp;amp;CK ID, скорее всего, пока ставить рано.&lt;/p&gt;




&lt;h2&gt;
  
  
  ATT&amp;amp;CK — это не каталог уязвимостей
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://attack.mitre.org/" rel="noopener noreferrer"&gt;MITRE ATT&amp;amp;CK&lt;/a&gt; — это knowledge base тактик и техник adversary behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Упрощенно:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tactic&lt;/strong&gt; отвечает на вопрос: &lt;em&gt;зачем attacker выполняет действие?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technique / Sub-technique&lt;/strong&gt; отвечает на вопрос: &lt;em&gt;каким способом он достигает этой цели?&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Например:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initial Access — получить первоначальный доступ;&lt;/li&gt;
&lt;li&gt;Execution — выполнить код или команды;&lt;/li&gt;
&lt;li&gt;Credential Access — получить credentials;&lt;/li&gt;
&lt;li&gt;Discovery — понять, где attacker оказался и что ему доступно;&lt;/li&gt;
&lt;li&gt;Lateral Movement — двигаться дальше;&lt;/li&gt;
&lt;li&gt;Collection — собрать данные;&lt;/li&gt;
&lt;li&gt;Exfiltration — вывести их;&lt;/li&gt;
&lt;li&gt;Impact — нарушить работу, изменить или уничтожить данные и системы.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Если prevention когда-нибудь не сработает, увидим ли мы это поведение в production?&lt;/strong&gt;&lt;br&gt;
Но основная мысль всё равно остаётся прежней:&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;ATT&amp;amp;CK описывает поведение атакующего, а не дефект в коде.&lt;/strong&gt;
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  CWE, CVE, OWASP, STRIDE и ATT&amp;amp;CK отвечают на разные вопросы
&lt;/h2&gt;

&lt;p&gt;Частая ошибка — пытаться выбрать один «главный» framework. На практике они работают на разных слоях. Смотрим таблицу ниже.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Модель / источник&lt;/th&gt;
&lt;th&gt;На какой вопрос отвечает&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CWE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Какой класс weakness существует в software?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CVE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Какая конкретная известная vulnerability существует в продукте или компоненте?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CVSS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Как оценить severity конкретной vulnerability по формальной scoring model?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OWASP Top 10 / API Top 10&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Какие классы application security risk особенно важны и распространены?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OWASP ASVS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Какие application security requirements и verification controls нужны продукту?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;STRIDE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Какие категории угроз стоит рассмотреть при threat modeling?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MITRE ATT&amp;amp;CK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Какие действия может выполнять adversary и как они складываются в attack path?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Отсюда полезное разделение:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CWE / OWASP
Что сломано?

**ATT&amp;amp;CK**
Что attacker сделает с этим дальше?

**Product Security**
Как разорвать путь и доказать, что он разорван?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqai9sw2pzdc249719jtx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqai9sw2pzdc249719jtx.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Четыре правила нормального ATT&amp;amp;CK mapping
&lt;/h2&gt;

&lt;p&gt;Прежде чем переходить к кейсам, я бы ввёл четыре простых правила.&lt;/p&gt;

&lt;h3&gt;
  
  
  Правило 1. Начинайте с глагола атакующего
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Не так:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;уязвимость SSRF → T1552.005&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;А так:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Attacker использует SSRF, чтобы &lt;strong&gt;запросить cloud instance metadata&lt;/strong&gt; и получить временные credentials → &lt;a href="https://attack.mitre.org/techniques/T1552/005/" rel="noopener noreferrer"&gt;T1552.005&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Technique должна описывать &lt;strong&gt;действие&lt;/strong&gt;, а не просто ассоциироваться с названием finding.&lt;/p&gt;

&lt;h3&gt;
  
  
  Правило 2. Не путайте prerequisite и выполненную technique
&lt;/h3&gt;

&lt;p&gt;Например, excessive Kubernetes RBAC ещё не означает &lt;code&gt;T1610 — Deploy Container&lt;/code&gt;. Он только создаёт prerequisite.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;T1610&lt;/code&gt; появляется, когда adversary действительно &lt;strong&gt;использует доступ для развёртывания контейнера&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Точно так же украденный cloud token ещё не означает &lt;code&gt;T1078.004 — Valid Accounts: Cloud Accounts&lt;/code&gt;. Эта technique становится релевантной, когда attacker &lt;strong&gt;использует&lt;/strong&gt; valid cloud credentials.&lt;/p&gt;

&lt;h3&gt;
  
  
  Правило 3. Не мэппите следующий шаг только потому, что он возможен
&lt;/h3&gt;

&lt;p&gt;Attack path может выглядеть так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Exploit
 ↓
Credential Access
 ↓
Discovery
 ↓
Collection
 ↓
Exfiltration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Но если вы доказали только первые два шага, не надо автоматически красить следующие три.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Разделяйте:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;observed&lt;/strong&gt; — действие реально наблюдалось;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;validated&lt;/strong&gt; — действие воспроизведено в controlled test;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;feasible&lt;/strong&gt; — архитектура делает его реально достижимым;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;hypothetical&lt;/strong&gt; — теоретически возможно, но evidence пока нет.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Правило 4. Если ATT&amp;amp;CK ничего не добавляет — не используйте её
&lt;/h3&gt;

&lt;p&gt;Не каждый Product Security risk нужно мэппить.&lt;/p&gt;

&lt;p&gt;Например, business-logic flaw в payout API может позволить изменить реквизиты получателя или обойти approval workflow. Это может быть критический риск, даже если ATT&amp;amp;CK mapping получается натянутым.&lt;/p&gt;

&lt;p&gt;В таком случае лучше оставить:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Business Abuse Case
 → Security Requirement
 → Control
 → Test
 → Monitoring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;чем ставить случайный ATT&amp;amp;CK ID ради красивой таблицы. Это не недостаток ATT&amp;amp;CK. Просто она решает другой класс задач.&lt;/p&gt;




&lt;h2&gt;
  
  
  Product Security mapping: от finding к attack path
&lt;/h2&gt;

&lt;p&gt;Я бы использовал такую рабочую цепочку:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Asset / Crown Jewel
        ↓
Data Flow / Trust Boundary
        ↓
Abuse Case / Finding
        ↓
Attacker Action
        ↓
ATT&amp;amp;CK Technique(s)
        ↓
Attack Path + Business Impact
        ↓
Preventive Control
        ↓
Security Validation
        ↓
Telemetry / Detection
        ↓
Owner + Release Decision
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это принципиально отличается от стандартного workflow:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Critical finding → Jira → developer → fixed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для Product Security важен не только факт исправления дефекта.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Нужно понять:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;какой asset или trust boundary затронут;&lt;/li&gt;
&lt;li&gt;что именно attacker сможет сделать;&lt;/li&gt;
&lt;li&gt;какой следующий шаг становится достижимым;&lt;/li&gt;
&lt;li&gt;где находится реальный business impact;&lt;/li&gt;
&lt;li&gt;какой control разрывает path;&lt;/li&gt;
&lt;li&gt;как проверить этот control;&lt;/li&gt;
&lt;li&gt;увидим ли мы атаку, если control обойдут;&lt;/li&gt;
&lt;li&gt;кто владеет residual risk;&lt;/li&gt;
&lt;li&gt;можно ли после этого выпускать продукт.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Кейс №1. Public-facing API: RCE — это только начало
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Представим обычную архитектуру:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
   ↓
API Gateway
   ↓
Public API
   ↓
Application Service
   ↓
Kubernetes / VM
   ↓
Cloud Services / Database / Storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pentest находит vulnerability, позволяющую добиться server-side code execution. В классическом AppSec report можно написать:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Critical RCE in public API.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Это правильно, но для Product Security слишком плоско.&lt;/p&gt;

&lt;h3&gt;
  
  
  Шаг 1. Как attacker попадает внутрь?
&lt;/h3&gt;

&lt;p&gt;Если exploitation публичного приложения используется как initial access, здесь хорошо ложится:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://attack.mitre.org/techniques/T1190/" rel="noopener noreferrer"&gt;T1190 — Exploit Public-Facing Application&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Но сама по себе &lt;code&gt;RCE&lt;/code&gt; не означает, что мы должны автоматически добавить ещё пять Execution techniques. Сначала нужно посмотреть, &lt;strong&gt;что происходит после exploitation&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Шаг 2. Что реально умеет compromised process?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Product Security должен спросить:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;от какого OS user работает процесс;&lt;/li&gt;
&lt;li&gt;какие filesystem permissions у него есть;&lt;/li&gt;
&lt;li&gt;можно ли запустить shell или interpreter;&lt;/li&gt;
&lt;li&gt;какие environment variables доступны;&lt;/li&gt;
&lt;li&gt;какие secrets смонтированы;&lt;/li&gt;
&lt;li&gt;какой service account / workload identity используется;&lt;/li&gt;
&lt;li&gt;доступен ли Kubernetes API;&lt;/li&gt;
&lt;li&gt;доступен ли cloud metadata endpoint;&lt;/li&gt;
&lt;li&gt;какой outbound traffic разрешён;&lt;/li&gt;
&lt;li&gt;какие internal services достижимы;&lt;/li&gt;
&lt;li&gt;можно ли обратиться к database/storage напрямую.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Если attacker действительно начинает выполнять shell-команды, тогда можно рассматривать релевантную &lt;code&gt;Command and Scripting Interpreter&lt;/code&gt; sub-technique. Но &lt;strong&gt;не надо выводить её только из слова RCE&lt;/strong&gt; — mapping должен следовать фактическому действию.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;### Шаг 3. Где blast radius?&lt;/strong&gt;&lt;br&gt;
Допустим, application workload имеет доступ к cloud instance metadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Следующий action:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Attacker обращается к metadata endpoint за credentials.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Это уже сильный mapping на:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://attack.mitre.org/techniques/T1552/005/" rel="noopener noreferrer"&gt;T1552.005 — Unsecured Credentials: Cloud Instance Metadata API&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;И тут появляется хороший Product Security-вопрос:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Даже если application layer когда-нибудь будет скомпрометирован, что сможет получить этот workload и куда он сможет пойти дальше?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Controls:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;workload identity вместо долгоживущих static credentials;&lt;/li&gt;
&lt;li&gt;least privilege IAM;&lt;/li&gt;
&lt;li&gt;hardened metadata access;&lt;/li&gt;
&lt;li&gt;egress restrictions;&lt;/li&gt;
&lt;li&gt;минимизация secrets в environment/config;&lt;/li&gt;
&lt;li&gt;network segmentation;&lt;/li&gt;
&lt;li&gt;минимальные permissions к internal APIs и storage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;То есть один AppSec finding начинает влиять на &lt;strong&gt;architecture и blast radius&lt;/strong&gt;, а не только на код vulnerable endpoint.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;## Кейс №2. SSRF → cloud metadata → credentials → data&lt;/strong&gt;&lt;br&gt;
SSRF — один из самых наглядных примеров, потому что сама MITRE для &lt;code&gt;T1552.005&lt;/code&gt; прямо рассматривает сценарий доступа к cloud metadata через SSRF.&lt;/p&gt;

&lt;p&gt;Представим public-facing application с SSRF. Плоский triage:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;SSRF. High/Critical. Исправить URL validation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Attack-path подход:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SSRF
  ↓
Attacker queries Cloud Metadata API
  ↓
Temporary Credentials
  ↓
Attacker uses Cloud Account / Workload Identity
  ↓
Cloud Discovery
  ↓
Cloud Storage Access
  ↓
Collection / Exfiltration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Здесь возможны разные ATT&amp;amp;CK techniques — &lt;strong&gt;но только когда соответствующее действие реально происходит или подтверждено как feasible&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attack step&lt;/th&gt;
&lt;th&gt;Возможный ATT&amp;amp;CK mapping&lt;/th&gt;
&lt;th&gt;Когда mapping оправдан&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Exploitation public app&lt;/td&gt;
&lt;td&gt;&lt;a href="https://attack.mitre.org/techniques/T1190/" rel="noopener noreferrer"&gt;T1190&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;SSRF используется как механизм exploitation / initial access в конкретном сценарии&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Query metadata&lt;/td&gt;
&lt;td&gt;&lt;a href="https://attack.mitre.org/techniques/T1552/005/" rel="noopener noreferrer"&gt;T1552.005&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Attacker обращается к metadata API за credentials / sensitive metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use stolen cloud credentials&lt;/td&gt;
&lt;td&gt;&lt;a href="https://attack.mitre.org/techniques/T1078/004/" rel="noopener noreferrer"&gt;T1078.004&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Credentials не просто получены, а реально используются&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enumerate cloud services&lt;/td&gt;
&lt;td&gt;&lt;a href="https://attack.mitre.org/techniques/T1526/" rel="noopener noreferrer"&gt;T1526&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Attacker определяет доступные cloud services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enumerate cloud infrastructure&lt;/td&gt;
&lt;td&gt;&lt;a href="https://attack.mitre.org/techniques/T1580/" rel="noopener noreferrer"&gt;T1580&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Attacker перечисляет cloud infrastructure/resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Collect data from object storage&lt;/td&gt;
&lt;td&gt;&lt;a href="https://attack.mitre.org/techniques/T1530/" rel="noopener noreferrer"&gt;T1530&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Данные действительно читаются/собираются из cloud storage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Обрати внимание на разницу между &lt;code&gt;T1526&lt;/code&gt; и &lt;code&gt;T1580&lt;/code&gt;. Не надо ставить оба ID «на всякий случай».&lt;/p&gt;

&lt;p&gt;Если attacker выясняет, какие cloud services доступны identity — это один тип discovery. Если enumerates конкретную cloud infrastructure — другой. &lt;strong&gt;Technique выбирается по действию, а не по желанию сделать chain длиннее.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe88qcjmf82sdbzmmgt1c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe88qcjmf82sdbzmmgt1c.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Как это превращается в Product Security controls
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attack step&lt;/th&gt;
&lt;th&gt;Preventive control&lt;/th&gt;
&lt;th&gt;Validation&lt;/th&gt;
&lt;th&gt;Detection / telemetry&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SSRF&lt;/td&gt;
&lt;td&gt;strict allowlist, безопасный URL parsing, запрет ненужных outbound destinations&lt;/td&gt;
&lt;td&gt;targeted SSRF regression tests&lt;/td&gt;
&lt;td&gt;unusual outbound requests from service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Metadata access&lt;/td&gt;
&lt;td&gt;hardened metadata mechanism, network restrictions&lt;/td&gt;
&lt;td&gt;проверить доступ к metadata из workload&lt;/td&gt;
&lt;td&gt;обращения к metadata endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Credential theft&lt;/td&gt;
&lt;td&gt;short-lived workload identity, минимизация exposed credentials&lt;/td&gt;
&lt;td&gt;credential exposure review&lt;/td&gt;
&lt;td&gt;аномальное получение/использование temporary credentials&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud account abuse&lt;/td&gt;
&lt;td&gt;least privilege IAM, scoped roles, conditional restrictions&lt;/td&gt;
&lt;td&gt;effective-permissions test&lt;/td&gt;
&lt;td&gt;unusual API calls для workload identity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discovery&lt;/td&gt;
&lt;td&gt;минимальные &lt;code&gt;list/describe&lt;/code&gt; permissions&lt;/td&gt;
&lt;td&gt;IAM simulation / controlled enumeration&lt;/td&gt;
&lt;td&gt;burst of enumeration calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage access&lt;/td&gt;
&lt;td&gt;resource policies, access boundaries&lt;/td&gt;
&lt;td&gt;negative/positive authorization tests&lt;/td&gt;
&lt;td&gt;unusual object listing / reads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exfiltration&lt;/td&gt;
&lt;td&gt;egress controls, rate/anomaly limits&lt;/td&gt;
&lt;td&gt;controlled exfiltration simulation&lt;/td&gt;
&lt;td&gt;anomalous data volume / destination&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Теперь security review перестаёт быть разговором об одной SSRF. Мы проверяем &lt;strong&gt;устойчивость продукта к целой post-exploitation chain&lt;/strong&gt;. И особенно полезно, если chain разрывается раньше:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SSRF
 ↓
Metadata unreachable
 ↓
STOP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;или:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Credentials obtained
 ↓
IAM role cannot access sensitive data
 ↓
STOP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это уже evidence того, что defense-in-depth реально уменьшает blast radius.&lt;/p&gt;




&lt;h2&gt;
  
  
  Кейс №3. Kubernetes: misconfiguration ещё не technique
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Допустим, security review обнаружил:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;container запускается как root;&lt;/li&gt;
&lt;li&gt;разрешён &lt;code&gt;privileged: true&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;используется опасный &lt;code&gt;hostPath&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;service account имеет избыточный RBAC;&lt;/li&gt;
&lt;li&gt;NetworkPolicy отсутствует.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это серьёзные security weaknesses. Но сам список &lt;strong&gt;ещё не является ATT&amp;amp;CK chain&lt;/strong&gt;. Нужен attacker action. Представим, что workload уже скомпрометирован, а его service account позволяет создавать pods.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Тогда возможна цепочка:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Compromised workload
       ↓
Attacker uses excessive Kubernetes permissions
       ↓
Deploys privileged container
       ↓
Mounts / accesses host resources
       ↓
Escapes to host
       ↓
Accesses other workloads / node resources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Здесь уже появляются:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://attack.mitre.org/techniques/T1610/" rel="noopener noreferrer"&gt;T1610 — Deploy Container&lt;/a&gt;&lt;/strong&gt; — когда adversary действительно разворачивает container;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://attack.mitre.org/techniques/T1611/" rel="noopener noreferrer"&gt;T1611 — Escape to Host&lt;/a&gt;&lt;/strong&gt; — когда происходит выход из containerized environment к host.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Product Security controls
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;run as non-root;&lt;/li&gt;
&lt;li&gt;запрет privileged containers;&lt;/li&gt;
&lt;li&gt;минимизация Linux capabilities;&lt;/li&gt;
&lt;li&gt;read-only root filesystem где возможно;&lt;/li&gt;
&lt;li&gt;seccomp / AppArmor / SELinux;&lt;/li&gt;
&lt;li&gt;Pod Security Admission / equivalent admission policy;&lt;/li&gt;
&lt;li&gt;запрет опасных &lt;code&gt;hostPath&lt;/code&gt; mounts;&lt;/li&gt;
&lt;li&gt;запрет host PID / IPC / network без необходимости;&lt;/li&gt;
&lt;li&gt;least privilege Kubernetes RBAC;&lt;/li&gt;
&lt;li&gt;отдельные service accounts для workloads;&lt;/li&gt;
&lt;li&gt;NetworkPolicy;&lt;/li&gt;
&lt;li&gt;минимизация Kubernetes API access;&lt;/li&gt;
&lt;li&gt;audit logging.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Validation
&lt;/h3&gt;

&lt;p&gt;Не только manifest scanning. Полезнее проверить сам attacker path:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;может ли compromised service account создать новый pod;&lt;/li&gt;
&lt;li&gt;может ли он создать privileged pod;&lt;/li&gt;
&lt;li&gt;может ли mount host filesystem;&lt;/li&gt;
&lt;li&gt;доступны ли node credentials / sockets;&lt;/li&gt;
&lt;li&gt;можно ли обращаться к Kubernetes API из workload;&lt;/li&gt;
&lt;li&gt;можно ли добраться до соседних workloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Runtime
&lt;/h3&gt;

&lt;p&gt;Telemetry тоже следует из attack path:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;создание privileged pods;&lt;/li&gt;
&lt;li&gt;неожиданные DaemonSets;&lt;/li&gt;
&lt;li&gt;новые &lt;code&gt;hostPath&lt;/code&gt; mounts;&lt;/li&gt;
&lt;li&gt;изменения RBAC;&lt;/li&gt;
&lt;li&gt;выдача cluster-level privileges;&lt;/li&gt;
&lt;li&gt;аномальные API calls от workload identities;&lt;/li&gt;
&lt;li&gt;запуск контейнеров из неожиданных images/registries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;В итоге одна цепочка связывает &lt;strong&gt;AppSec, platform security, Kubernetes hardening, policy-as-code и runtime detection&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq2w6gn9t2n4lgcd19939.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq2w6gn9t2n4lgcd19939.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Кейс №4. CI/CD: когда valid signature ничего не гарантирует
&lt;/h2&gt;

&lt;p&gt;Product Security сегодня отвечает не только за application code, но и за то, &lt;strong&gt;как этот код превращается в production artifact&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Представим сценарий:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;attacker получает developer или CI credential;&lt;/li&gt;
&lt;li&gt;меняет pipeline definition или referenced build script;&lt;/li&gt;
&lt;li&gt;CI выполняет malicious step;&lt;/li&gt;
&lt;li&gt;build создаёт изменённый artifact;&lt;/li&gt;
&lt;li&gt;legitimate signing system подписывает artifact;&lt;/li&gt;
&lt;li&gt;release попадает в production или к downstream customers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;При этом формально всё может выглядеть хорошо:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SAST — passed;&lt;/li&gt;
&lt;li&gt;SCA — passed;&lt;/li&gt;
&lt;li&gt;image scan — passed;&lt;/li&gt;
&lt;li&gt;signature — valid.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Но доверенный build path уже контролируется attacker.&lt;/p&gt;

&lt;h3&gt;
  
  
  T1677 и T1195 — не одно и то же. Это место особенно важно не смешивать.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://attack.mitre.org/techniques/T1677/" rel="noopener noreferrer"&gt;T1677 — Poisoned Pipeline Execution&lt;/a&gt;&lt;/strong&gt; описывает malicious execution внутри CI/CD pipeline: прямое изменение pipeline configuration, indirect execution через referenced scripts/tests или запуск malicious code через public pipeline execution.&lt;/p&gt;

&lt;p&gt;А &lt;strong&gt;&lt;a href="https://attack.mitre.org/techniques/T1195/" rel="noopener noreferrer"&gt;T1195 — Supply Chain Compromise&lt;/a&gt;&lt;/strong&gt; описывает manipulation продукта или delivery mechanism &lt;strong&gt;до получения конечным потребителем&lt;/strong&gt;.&lt;br&gt;
**&lt;br&gt;
У него есть, в частности:**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://attack.mitre.org/techniques/T1195/001/" rel="noopener noreferrer"&gt;T1195.001 — Compromise Software Dependencies and Development Tools&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://attack.mitre.org/techniques/T1195/002/" rel="noopener noreferrer"&gt;T1195.002 — Compromise Software Supply Chain&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Поэтому:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Attacker edits your CI pipeline and steals secrets
→ T1677 is a strong mapping
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;А если manipulated build/dependency затем становится механизмом compromise для downstream consumer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Compromised build / dependency
→ malicious release
→ downstream victim installs / receives it
→ T1195 becomes relevant to the supply-chain path
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Не каждый CI compromise автоматически надо называть &lt;code&gt;T1195&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Product Security controls
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Repository / SCM
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;protected branches;&lt;/li&gt;
&lt;li&gt;mandatory review;&lt;/li&gt;
&lt;li&gt;CODEOWNERS для pipeline и security-sensitive files;&lt;/li&gt;
&lt;li&gt;phishing-resistant MFA;&lt;/li&gt;
&lt;li&gt;short-lived authentication;&lt;/li&gt;
&lt;li&gt;минимизация personal access tokens;&lt;/li&gt;
&lt;li&gt;audit privileged changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  CI/CD
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;protected pipeline definitions;&lt;/li&gt;
&lt;li&gt;isolated / ephemeral runners;&lt;/li&gt;
&lt;li&gt;least privilege CI identity;&lt;/li&gt;
&lt;li&gt;separation build / deploy / signing authority;&lt;/li&gt;
&lt;li&gt;secrets только на тех stages, где они реально нужны;&lt;/li&gt;
&lt;li&gt;запрет untrusted PR на privileged runners;&lt;/li&gt;
&lt;li&gt;контроль third-party actions/plugins;&lt;/li&gt;
&lt;li&gt;immutable or tightly controlled runner images.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Artifact integrity
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;provenance;&lt;/li&gt;
&lt;li&gt;SBOM;&lt;/li&gt;
&lt;li&gt;signatures;&lt;/li&gt;
&lt;li&gt;immutable artifact storage;&lt;/li&gt;
&lt;li&gt;promotion одного и того же artifact между environments вместо повторной сборки;&lt;/li&gt;
&lt;li&gt;reproducible/verifiable builds там, где это практически оправдано.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Release governance
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;independent approval для high-risk production changes;&lt;/li&gt;
&lt;li&gt;audit trail;&lt;/li&gt;
&lt;li&gt;rollback;&lt;/li&gt;
&lt;li&gt;kill switch;&lt;/li&gt;
&lt;li&gt;разделение прав на source, build, signing и deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;И здесь есть хороший принцип:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Valid signature подтверждает, что artifact прошёл через signing authority. Она не доказывает, что build process до подписания был trustworthy.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Поэтому supply-chain threat model должен смотреть на всю цепочку:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source
  ↓
Build Configuration
  ↓
Dependencies
  ↓
Runner
  ↓
Artifact
  ↓
Signing
  ↓
Registry
  ↓
Deployment / Distribution
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv7lsmtxc8cnzzz32irs6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv7lsmtxc8cnzzz32irs6.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Как встроить ATT&amp;amp;CK в pentest, а не просто приклеить ID к отчёту
&lt;/h2&gt;

&lt;p&gt;Pentest отлично интегрируется в такую модель, если перестать воспринимать его как PDF со списком findings. Для каждого high-risk finding я бы добавлял четыре вопроса:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Какое конкретное действие attacker теперь может выполнить?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какой prerequisite нужен для следующего шага?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какая ATT&amp;amp;CK technique описывает этот action, если такая техника действительно есть?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какой control разрывает следующий шаг?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Пример:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pentest finding / evidence&lt;/th&gt;
&lt;th&gt;Attacker action&lt;/th&gt;
&lt;th&gt;Возможный ATT&amp;amp;CK context&lt;/th&gt;
&lt;th&gt;Product Security follow-up&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RCE в public API&lt;/td&gt;
&lt;td&gt;Exploits public service&lt;/td&gt;
&lt;td&gt;T1190&lt;/td&gt;
&lt;td&gt;Что доступно compromised process после exploitation?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSRF с доступом к metadata&lt;/td&gt;
&lt;td&gt;Queries metadata API&lt;/td&gt;
&lt;td&gt;T1552.005&lt;/td&gt;
&lt;td&gt;Можно ли получить credentials и какие у них permissions?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Получен cloud token&lt;/td&gt;
&lt;td&gt;Uses valid cloud credentials&lt;/td&gt;
&lt;td&gt;T1078.004&lt;/td&gt;
&lt;td&gt;Какие resources реально доступны identity?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Excessive K8s RBAC&lt;/td&gt;
&lt;td&gt;Creates new privileged workload&lt;/td&gt;
&lt;td&gt;T1610&lt;/td&gt;
&lt;td&gt;Admission policy остановит deployment?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privileged container + host mount&lt;/td&gt;
&lt;td&gt;Escapes to host&lt;/td&gt;
&lt;td&gt;T1611&lt;/td&gt;
&lt;td&gt;Какие host/node resources становятся доступны?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Изменяемый CI pipeline&lt;/td&gt;
&lt;td&gt;Executes attacker-controlled build step&lt;/td&gt;
&lt;td&gt;T1677&lt;/td&gt;
&lt;td&gt;Может ли pipeline получить signing/deploy credentials?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compromised dependency&lt;/td&gt;
&lt;td&gt;Delivers manipulated dependency/software&lt;/td&gt;
&lt;td&gt;T1195.001 / T1195.002 при соответствующем сценарии&lt;/td&gt;
&lt;td&gt;Может ли malicious code дойти до downstream consumer?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read access to object storage&lt;/td&gt;
&lt;td&gt;Collects objects from cloud storage&lt;/td&gt;
&lt;td&gt;T1530&lt;/td&gt;
&lt;td&gt;Какие данные доступны и есть ли detection на массовое чтение?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Так pentest finding превращается в &lt;strong&gt;security engineering input&lt;/strong&gt;, а не просто remediation ticket.&lt;/p&gt;




&lt;h2&gt;
  
  
  Что получает red team
&lt;/h2&gt;

&lt;p&gt;Для red team ATT&amp;amp;CK mapping — привычная вещь, но Product Security добавляет другой фокус. Red team может проверить не только «можем ли мы выполнить technique», а &lt;strong&gt;какие product controls должны были остановить путь раньше&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Например:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;T1190 — public application exploited
 ↓
Product control failed
 ↓
T1552.005 — metadata queried
 ↓
Cloud boundary failed
 ↓
T1078.004 — cloud identity used
 ↓
IAM boundary failed
 ↓
T1530 — storage data collected
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;После exercise обсуждение становится намного полезнее:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;какой control отсутствовал;&lt;/li&gt;
&lt;li&gt;какой существовал, но был bypassed;&lt;/li&gt;
&lt;li&gt;какой сработал;&lt;/li&gt;
&lt;li&gt;где detection появился слишком поздно;&lt;/li&gt;
&lt;li&gt;где attack path остановился;&lt;/li&gt;
&lt;li&gt;какой team владеет remediation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это уже не просто «red team дошёл до цели», а проверка &lt;strong&gt;многослойной security architecture продукта&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Threat modeling + ATT&amp;amp;CK
&lt;/h2&gt;

&lt;p&gt;STRIDE и ATT&amp;amp;CK иногда пытаются противопоставлять. На мой взгляд, гораздо полезнее использовать их вместе. STRIDE помогает задавать design-time вопросы:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;можно ли spoof identity;&lt;/li&gt;
&lt;li&gt;можно ли tamper data;&lt;/li&gt;
&lt;li&gt;есть ли repudiation problem;&lt;/li&gt;
&lt;li&gt;возможен information disclosure;&lt;/li&gt;
&lt;li&gt;можно ли вызвать denial of service;&lt;/li&gt;
&lt;li&gt;возможна privilege escalation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;ATT&amp;amp;CK добавляет другой слой:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Как подобное поведение может выглядеть в реальном adversary operation?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Представим data flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
 ↓
Web / Mobile
 ↓
API
 ↓
Identity Provider
 ↓
Backend
 ↓
Database
 ↓
Cloud Storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;После определения assets и trust boundaries я бы &lt;strong&gt;не открывал всю Enterprise Matrix и не шёл слева направо по каждой клетке&lt;/strong&gt;. Лучше начать с attacker objectives и релевантных surfaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для internet-facing SaaS могут быть полезны:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initial Access;&lt;/li&gt;
&lt;li&gt;Credential Access;&lt;/li&gt;
&lt;li&gt;Discovery;&lt;/li&gt;
&lt;li&gt;Persistence;&lt;/li&gt;
&lt;li&gt;Collection;&lt;/li&gt;
&lt;li&gt;Exfiltration;&lt;/li&gt;
&lt;li&gt;Impact.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Для cloud-native продукта:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cloud account abuse;&lt;/li&gt;
&lt;li&gt;metadata / credential access;&lt;/li&gt;
&lt;li&gt;cloud discovery;&lt;/li&gt;
&lt;li&gt;storage access;&lt;/li&gt;
&lt;li&gt;cloud resource modification;&lt;/li&gt;
&lt;li&gt;logging / defense impairment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Для Kubernetes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;container execution/deployment;&lt;/li&gt;
&lt;li&gt;cluster credentials;&lt;/li&gt;
&lt;li&gt;container escape;&lt;/li&gt;
&lt;li&gt;discovery;&lt;/li&gt;
&lt;li&gt;lateral movement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Для software factory:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Poisoned Pipeline Execution;&lt;/li&gt;
&lt;li&gt;credential abuse;&lt;/li&gt;
&lt;li&gt;dependency/development-tool compromise;&lt;/li&gt;
&lt;li&gt;software supply-chain compromise.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ATT&amp;amp;CK становится не заменой threat model, а &lt;strong&gt;библиотекой attacker behavior&lt;/strong&gt;, которая помогает расширить threat modeling session реальными post-exploitation сценариями.&lt;/p&gt;




&lt;h2&gt;
  
  
  От ATT&amp;amp;CK к controls: Mitigations и D3FEND
&lt;/h2&gt;

&lt;p&gt;Есть ещё один полезный нюанс. ATT&amp;amp;CK содержит &lt;a href="https://attack.mitre.org/mitigations/enterprise/" rel="noopener noreferrer"&gt;Enterprise Mitigations&lt;/a&gt; — классы defensive measures, способных снижать вероятность успешного выполнения techniques.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Но Product Security controls часто намного конкретнее:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;deny hostPath&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;require non-root&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pin GitHub Action to immutable commit&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;block workload access to metadata&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;require step-up auth for payout change&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;separate signing identity from build identity&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Поэтому ATT&amp;amp;CK Mitigations можно использовать как reference, но &lt;strong&gt;не обязательно заставлять всю engineering control library жить внутри ATT&amp;amp;CK taxonomy&lt;/strong&gt;. Если нужен именно defensive knowledge graph, можно дополнительно посмотреть на &lt;a href="https://d3fend.mitre.org/" rel="noopener noreferrer"&gt;MITRE D3FEND&lt;/a&gt;, который ориентирован на cybersecurity countermeasures и связи defensive techniques с offensive behavior.&lt;/p&gt;

&lt;p&gt;Практический подход может быть таким:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ATT&amp;amp;CK
What does the attacker do?

Product Security Controls / ASVS / Cloud &amp;amp; K8s Policies
What prevents it in our product?

D3FEND / ATT&amp;amp;CK Mitigations
What defensive patterns may complement the design?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  От prevention к detection: не заканчиваем на fix
&lt;/h2&gt;

&lt;p&gt;Product Security иногда слишком сильно уходит в shift-left. Shift-left полезен, но продукт после релиза не исчезает. Поэтому для critical attack path я бы всегда задавал два вопроса:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Как мы предотвращаем этот behavior?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Как мы поймём, что он происходит, если prevention обойдут?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Современная ATT&amp;amp;CK detection-модель хорошо поддерживает этот подход.&lt;/p&gt;

&lt;p&gt;Например, для &lt;code&gt;T1552.005&lt;/code&gt; у MITRE есть Detection Strategy &lt;strong&gt;DET0001&lt;/strong&gt;, ориентированная на обращения к cloud metadata endpoint, включая direct access и SSRF-related patterns. Это хороший пример связи design и telemetry.&lt;/p&gt;

&lt;p&gt;Если metadata access является важным security boundary, Product Security может потребовать:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;network telemetry для metadata requests;&lt;/li&gt;
&lt;li&gt;workload identity context;&lt;/li&gt;
&lt;li&gt;cloud audit logs;&lt;/li&gt;
&lt;li&gt;correlation с необычным последующим API usage;&lt;/li&gt;
&lt;li&gt;alerting для workload, который обычно metadata не запрашивает.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;То же самое для Kubernetes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;privileged pod creation;&lt;/li&gt;
&lt;li&gt;RBAC modifications;&lt;/li&gt;
&lt;li&gt;неожиданные DaemonSets;&lt;/li&gt;
&lt;li&gt;access к sensitive cluster resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;И для CI/CD:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;изменение pipeline definitions;&lt;/li&gt;
&lt;li&gt;запуск workflow из необычного context;&lt;/li&gt;
&lt;li&gt;доступ build job к signing secrets;&lt;/li&gt;
&lt;li&gt;изменение trusted dependency/action;&lt;/li&gt;
&lt;li&gt;anomalous artifact publication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Так Product Security начинает влиять не только на secure code, но и на &lt;strong&gt;security observability продукта&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Простой шаблон для threat model / Jira / security backlog
&lt;/h2&gt;

&lt;p&gt;Не обязательно строить отдельную дорогую платформу. Можно добавить несколько полей в существующий security backlog.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Например:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Asset&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payments-api&lt;/span&gt;
&lt;span class="na"&gt;Crown jewel&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payout data&lt;/span&gt;
&lt;span class="na"&gt;Trust boundary&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Internet -&amp;gt; API&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*Finding&lt;/span&gt;&lt;span class="s"&gt;:** SSRF in webhook validation&lt;/span&gt;
&lt;span class="na"&gt;Severity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;High&lt;/span&gt;

&lt;span class="s"&gt;Attacker action:**&lt;/span&gt;
  &lt;span class="s"&gt;Query cloud instance metadata through SSRF&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*ATT&lt;/span&gt;&lt;span class="nl"&gt;&amp;amp;CK&lt;/span&gt;&lt;span class="s"&gt;:**&lt;/span&gt;
  &lt;span class="s"&gt;validated&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;T1552.005&lt;/span&gt;
  &lt;span class="na"&gt;feasible_if_credentials_are_used&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;T1078.004&lt;/span&gt;
  &lt;span class="na"&gt;feasible_if_storage_is_reachable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;T1530&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*Attack&lt;/span&gt; &lt;span class="s"&gt;path:**&lt;/span&gt;
  &lt;span class="s"&gt;SSRF -&amp;gt; metadata -&amp;gt; temporary credentials -&amp;gt; cloud storage&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*Business&lt;/span&gt; &lt;span class="s"&gt;impact:**&lt;/span&gt;
  &lt;span class="s"&gt;Unauthorized access to payout/customer data&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*Preventive&lt;/span&gt; &lt;span class="s"&gt;controls:**&lt;/span&gt;
  &lt;span class="s"&gt;- outbound destination allowlist&lt;/span&gt;
  &lt;span class="s"&gt;- hardened metadata access&lt;/span&gt;
  &lt;span class="s"&gt;- scoped workload identity&lt;/span&gt;
  &lt;span class="s"&gt;- least privilege storage policy&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*Validation&lt;/span&gt;&lt;span class="s"&gt;:**&lt;/span&gt;
  &lt;span class="s"&gt;- SSRF regression test&lt;/span&gt;
  &lt;span class="s"&gt;- metadata reachability test&lt;/span&gt;
  &lt;span class="s"&gt;- IAM effective-permission test&lt;/span&gt;
  &lt;span class="s"&gt;- negative storage authorization test&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*Detection&lt;/span&gt;&lt;span class="s"&gt;:**&lt;/span&gt;
  &lt;span class="s"&gt;- metadata access telemetry&lt;/span&gt;
  &lt;span class="s"&gt;- unusual cloud API enumeration&lt;/span&gt;
  &lt;span class="s"&gt;- abnormal storage reads&lt;/span&gt;

&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;*Owner&lt;/span&gt;&lt;span class="s"&gt;:** Payments Platform&lt;/span&gt;
&lt;span class="na"&gt;Release status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Blocked until metadata/credential path is broken&lt;/span&gt;
&lt;span class="na"&gt;Residual risk&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Low after control validation&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Обратите внимание на поля &lt;code&gt;validated&lt;/code&gt; и &lt;code&gt;feasible&lt;/code&gt;. Они помогают не превращать ATT&amp;amp;CK mapping в утверждение, будто вся цепочка уже была реально выполнена.&lt;/p&gt;




&lt;h2&gt;
  
  
  Как использовать ATT&amp;amp;CK Navigator в Product Security
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://mitre-attack.github.io/attack-navigator/" rel="noopener noreferrer"&gt;ATT&amp;amp;CK Navigator&lt;/a&gt; удобен для визуализации coverage.&lt;/p&gt;

&lt;p&gt;Но здесь есть ловушка. Очень легко получить красивую матрицу, в которой половина cells зелёная, четверть жёлтая, и никто не может объяснить, что именно означает цвет.&lt;/p&gt;

&lt;p&gt;Я бы не начинал с вопроса:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Сколько процентов MITRE ATT&amp;amp;CK мы закрываем?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для Product Security это почти всегда слишком абстрактно. Полезнее сделать несколько отдельных layers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 1 — Threat Relevance
&lt;/h3&gt;

&lt;p&gt;Techniques, реально релевантные конкретному product architecture и threat model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 2 — Preventive Coverage
&lt;/h3&gt;

&lt;p&gt;Где существует реальный preventive control.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 3 — Validation Coverage
&lt;/h3&gt;

&lt;p&gt;Какие controls проверены через:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pentest;&lt;/li&gt;
&lt;li&gt;adversarial testing;&lt;/li&gt;
&lt;li&gt;CI/CD tests;&lt;/li&gt;
&lt;li&gt;cloud/Kubernetes assessment;&lt;/li&gt;
&lt;li&gt;architecture review.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Layer 4 — Detection Coverage
&lt;/h3&gt;

&lt;p&gt;Какие relevant techniques видны через production telemetry и detections.&lt;/p&gt;

&lt;h3&gt;
  
  
  Layer 5 — Known Gaps
&lt;/h3&gt;

&lt;p&gt;Самый полезный слой.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Например:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Эти семь behaviors релевантны продукту, но для трёх у нас нет validated prevention, а для двух — detection. Вот это уже security roadmap.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ATT&amp;amp;CK как мост между AppSec, DevSecOps, Cloud и SOC
&lt;/h2&gt;

&lt;p&gt;Одна из постоянных организационных проблем в security — разные команды говорят на разных языках.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AppSec:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;SSRF in public service.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Cloud Security:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Workload role is overprivileged.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;SOC:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Unexpected API enumeration from service identity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;DevOps:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Это обычный pod с access к AWS API.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Product Security&lt;/strong&gt; может соединить их:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AppSec
SSRF in public service
        ↓
ATT&amp;amp;CK / Attack Path
T1552.005 -&amp;gt; T1078.004 -&amp;gt; discovery -&amp;gt; T1530
        ↓
Cloud Security
Metadata + IAM blast radius
        ↓
DevSecOps
Egress / workload identity / policy-as-code
        ↓
SOC / Detection
Metadata access + unusual cloud API activity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Теперь разные команды обсуждают &lt;strong&gt;один attack path&lt;/strong&gt;, а не четыре независимых тикета. Для меня это одна из самых сильных сторон ATT&amp;amp;CK в Product Security.&lt;/p&gt;




&lt;h2&gt;
  
  
  Как встроить ATT&amp;amp;CK в Secure SDLC
&lt;/h2&gt;

&lt;p&gt;Не надо добавлять отдельный двадцатистраничный процесс. Mapping можно встроить в существующие точки SDLC.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SDLC stage&lt;/th&gt;
&lt;th&gt;Как использовать ATT&amp;amp;CK&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Requirements&lt;/td&gt;
&lt;td&gt;определить critical assets, abuse cases и adversary objectives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture&lt;/td&gt;
&lt;td&gt;связать attack paths с trust boundaries и security controls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Threat modeling&lt;/td&gt;
&lt;td&gt;выбрать только релевантные techniques, а не всю matrix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;превратить controls в engineering requirements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CI/CD&lt;/td&gt;
&lt;td&gt;проверить pipeline, identity и supply-chain paths&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pre-release&lt;/td&gt;
&lt;td&gt;использовать mapping для targeted pentest/adversarial validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Production&lt;/td&gt;
&lt;td&gt;связать critical behaviors с telemetry и detections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incident&lt;/td&gt;
&lt;td&gt;вернуть observed TTPs обратно в threat model и backlog&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Получается feedback loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Threat Model
    ↓
Engineering Controls
    ↓
Security Validation
    ↓
Production Telemetry
    ↓
Incidents / Threat Intelligence
    ↓
Updated Threat Model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Так ATT&amp;amp;CK становится живым инструментом, а не compliance-таблицей.&lt;/p&gt;




&lt;h2&gt;
  
  
  Минимальный вариант, с которого можно начать завтра
&lt;/h2&gt;

&lt;p&gt;Если ATT&amp;amp;CK пока живёт только у SOC/red team, не надо запускать большой transformation project. Возьмите один critical product.&lt;/p&gt;

&lt;h3&gt;
  
  
  Шаг 1. Выберите crown jewels
&lt;/h3&gt;

&lt;p&gt;Например:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;customer data;&lt;/li&gt;
&lt;li&gt;payment flow;&lt;/li&gt;
&lt;li&gt;production deployment;&lt;/li&gt;
&lt;li&gt;signing keys;&lt;/li&gt;
&lt;li&gt;cloud control plane.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Шаг 2. Выберите 5–10 realistic attack paths
&lt;/h3&gt;

&lt;p&gt;Не techniques. Именно paths.&lt;br&gt;
Например:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Public API exploit
→ workload identity
→ cloud storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;или:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer account
→ CI pipeline
→ signing
→ production release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Шаг 3. Для каждого шага сформулируйте attacker action
&lt;/h3&gt;

&lt;p&gt;Если action нельзя сформулировать — mapping ещё сырой.&lt;/p&gt;

&lt;h3&gt;
  
  
  Шаг 4. Добавьте ATT&amp;amp;CK только там, где есть точное соответствие
&lt;/h3&gt;

&lt;p&gt;Не пытайтесь заполнить каждую строку.&lt;/p&gt;

&lt;h3&gt;
  
  
  Шаг 5. Для каждой relevant technique укажите
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;prerequisite;&lt;/li&gt;
&lt;li&gt;preventive control;&lt;/li&gt;
&lt;li&gt;validation method;&lt;/li&gt;
&lt;li&gt;telemetry/detection;&lt;/li&gt;
&lt;li&gt;owner.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Шаг 6. Проведите targeted security test
&lt;/h3&gt;

&lt;p&gt;Не «пентест всего интернета», а проверку конкретного path.&lt;/p&gt;

&lt;h3&gt;
  
  
  Шаг 7. Зафиксируйте evidence
&lt;/h3&gt;

&lt;p&gt;Например:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;validated&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;blocked&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;detected&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;not tested&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;accepted risk&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Шаг 8. Обновляйте mapping после изменений
&lt;/h3&gt;

&lt;p&gt;Триггеры:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;major architecture change;&lt;/li&gt;
&lt;li&gt;новый cloud service;&lt;/li&gt;
&lt;li&gt;новая CI/CD platform;&lt;/li&gt;
&lt;li&gt;material pentest finding;&lt;/li&gt;
&lt;li&gt;incident;&lt;/li&gt;
&lt;li&gt;значимое изменение threat intelligence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Этого уже достаточно, чтобы ATT&amp;amp;CK начала приносить практическую пользу.&lt;/p&gt;




&lt;h2&gt;
  
  
  Какие метрики действительно полезны
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;% critical attack paths с validated preventive controls&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;% critical attack paths с detection coverage&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;% high-impact techniques с defined owner&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;количество attack paths, где следующий шаг остаётся feasible после remediation;&lt;/li&gt;
&lt;li&gt;количество release blockers по high-impact paths;&lt;/li&gt;
&lt;li&gt;время от finding до validated control;&lt;/li&gt;
&lt;li&gt;количество повторных findings, указывающих на один systematic control gap;&lt;/li&gt;
&lt;li&gt;количество critical paths, проверенных adversarial testing;&lt;/li&gt;
&lt;li&gt;coverage &lt;strong&gt;релевантных&lt;/strong&gt;, а не всех существующих ATT&amp;amp;CK techniques.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Для Product Security lead/director это уже нормальный разговор о &lt;strong&gt;risk reduction&lt;/strong&gt;, а не о раскрашивании framework.&lt;/p&gt;




&lt;h2&gt;
  
  
  Итог
&lt;/h2&gt;

&lt;p&gt;MITRE ATT&amp;amp;CK не делает Product Security за нас. Она не заменяет:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;secure architecture;&lt;/li&gt;
&lt;li&gt;threat modeling;&lt;/li&gt;
&lt;li&gt;OWASP ASVS;&lt;/li&gt;
&lt;li&gt;code review;&lt;/li&gt;
&lt;li&gt;SAST/SCA/DAST;&lt;/li&gt;
&lt;li&gt;pentest;&lt;/li&gt;
&lt;li&gt;cloud hardening;&lt;/li&gt;
&lt;li&gt;Kubernetes security;&lt;/li&gt;
&lt;li&gt;secure CI/CD;&lt;/li&gt;
&lt;li&gt;detection engineering;&lt;/li&gt;
&lt;li&gt;incident response.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Но она может связать эти дисциплины в одну понятную цепочку. Для меня главный смысл выглядит так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Vulnerability говорит, где продукт слаб. ATT&amp;amp;CK помогает описать, что adversary делает с этой слабостью дальше. Product Security должен разорвать attack path — и уметь доказать, что он разорван.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Поэтому вместо вопроса:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;На какую технику MITRE замэппить этот finding?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;я бы задавал другой:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Какое конкретное действие attacker выполняет, какой следующий шаг оно открывает и на каком этапе мы этот путь предотвращаем, проверяем и детектируем?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Тогда ATT&amp;amp;CK перестаёт быть матрицей «для SOC и red team» и становится вполне практичным инструментом Product Security.&lt;/p&gt;




&lt;h2&gt;
  
  
  Полезные источники
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/" rel="noopener noreferrer"&gt;MITRE ATT&amp;amp;CK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/matrices/enterprise/" rel="noopener noreferrer"&gt;Enterprise ATT&amp;amp;CK Matrix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/resources/updates/" rel="noopener noreferrer"&gt;ATT&amp;amp;CK Updates — current release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/resources/attack-data-and-tools/" rel="noopener noreferrer"&gt;ATT&amp;amp;CK Data &amp;amp; Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mitre-attack.github.io/attack-navigator/" rel="noopener noreferrer"&gt;ATT&amp;amp;CK Navigator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/mitigations/enterprise/" rel="noopener noreferrer"&gt;Enterprise Mitigations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/detectionstrategies/" rel="noopener noreferrer"&gt;Detection Strategies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/analytics/" rel="noopener noreferrer"&gt;Analytics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/datacomponents/" rel="noopener noreferrer"&gt;Data Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1190/" rel="noopener noreferrer"&gt;T1190 — Exploit Public-Facing Application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1552/005/" rel="noopener noreferrer"&gt;T1552.005 — Cloud Instance Metadata API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/detectionstrategies/DET0001/" rel="noopener noreferrer"&gt;DET0001 — Detect Access to Cloud Instance Metadata API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1078/004/" rel="noopener noreferrer"&gt;T1078.004 — Valid Accounts: Cloud Accounts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1526/" rel="noopener noreferrer"&gt;T1526 — Cloud Service Discovery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1580/" rel="noopener noreferrer"&gt;T1580 — Cloud Infrastructure Discovery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1530/" rel="noopener noreferrer"&gt;T1530 — Data from Cloud Storage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1610/" rel="noopener noreferrer"&gt;T1610 — Deploy Container&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1611/" rel="noopener noreferrer"&gt;T1611 — Escape to Host&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1677/" rel="noopener noreferrer"&gt;T1677 — Poisoned Pipeline Execution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1195/" rel="noopener noreferrer"&gt;T1195 — Supply Chain Compromise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1195/001/" rel="noopener noreferrer"&gt;T1195.001 — Compromise Software Dependencies and Development Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://attack.mitre.org/techniques/T1195/002/" rel="noopener noreferrer"&gt;T1195.002 — Compromise Software Supply Chain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://d3fend.mitre.org/" rel="noopener noreferrer"&gt;MITRE D3FEND&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>devsecops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Как я учусь сложным вещам: практическая система для памяти, фокуса и самообучения в CyberSec</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Sun, 27 Sep 2026 22:00:00 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/kak-ia-uchus-slozhnym-vieshcham-praktichieskaia-sistiema-dlia-pamiati-fokusa-i-samoobuchieniia-v-cybersec-4elk</link>
      <guid>https://dev.to/ivan-piskunov/kak-ia-uchus-slozhnym-vieshcham-praktichieskaia-sistiema-dlia-pamiati-fokusa-i-samoobuchieniia-v-cybersec-4elk</guid>
      <description>&lt;h3&gt;
  
  
  Preview
&lt;/h3&gt;

&lt;p&gt;Хей, парни! на связи Иван | White2Hack &lt;/p&gt;

&lt;p&gt;И так, кто не знает несколько лет назад, а точнее в 2023 году я собрал большую брошюру про обучение и самообучение. Получилось больше ста страниц: память, внимание, нейропластичность, интервальные повторения, мнемотехники, скорочтение, Pomodoro, мотивация, приоритизация и ещё куча всего. За это время я продолжал преподавать, читать курсы, готовиться к сертификациям, учить языки, осваивать новые security-технологии и собирать свои собственные лаборатории. И постепенно понял неприятную вещь: &lt;strong&gt;знать много техник обучения — ещё не значит хорошо учиться&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Можно идеально знать, что такое spaced repetition, завести пять приложений для заметок, купить три курса по Kubernetes — и через месяц всё равно не суметь с нуля объяснить, как работает NetworkPolicy.&lt;/p&gt;

&lt;p&gt;Я видел похожую картину и у студентов. Пока слайд открыт — всё понятно. Убираешь слайд и просишь объяснить своими словами — начинается самое интересное. Поэтому сейчас я смотрю на обучение гораздо приземлённее. Мне нужен не красивый процесс. Мне нужен результат, который можно проверить.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Не “я изучил тему”, а “я могу что-то сделать без подсказки”.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ниже, в этом материале — система, которую я сегодня использую для себя. Она подходит не только для IT\CyberSec: тем же способом я учу английский, читаю технические книги, разбираю видео, готовлюсь к интервью и вхожу в новые области Product Security / AppSec / DevSecOps.&lt;/p&gt;

&lt;p&gt;Сразу оговорюсь: здесь не будет обещаний «выучить всё за 20 часов» или магического расписания повторений. В моей старой работе такие формулировки местами были слишком смелыми. Сейчас я бы их не повторял. И, так выдаю базу!&lt;/p&gt;




&lt;h2&gt;
  
  
  Главный сдвиг: учить не тему, а действие
&lt;/h2&gt;

&lt;p&gt;Самая полезная привычка, которую я вынес из преподавания и собственного обучения: &lt;strong&gt;формулировать цель глаголом&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Плохо:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;выучить API Security;&lt;/li&gt;
&lt;li&gt;подтянуть английский;&lt;/li&gt;
&lt;li&gt;разобраться с AWS;&lt;/li&gt;
&lt;li&gt;посмотреть курс по DevSecOps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Намного лучше:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;найти Broken Object Level Authorization в тестовом API, показать exploit path и предложить remediation;&lt;/li&gt;
&lt;li&gt;за 10 минут рассказать на английском о своём проекте и ответить на follow-up questions;&lt;/li&gt;
&lt;li&gt;построить threat model небольшого сервиса;&lt;/li&gt;
&lt;li&gt;добавить SAST (Static Application Security Testing) и SCA (Software Composition Analysis) в pipeline, намеренно сломать gate, понять причину и настроить policy;&lt;/li&gt;
&lt;li&gt;прочитать главу и через день восстановить её основные идеи без книги.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это, кстати, хорошо совпадает с тем, как профессиональные cybersecurity frameworks описывают работу: через &lt;strong&gt;tasks, knowledge and skills&lt;/strong&gt;, а не через абстрактное «знаком с безопасностью».&lt;/p&gt;

&lt;p&gt;Для себя я называю это &lt;strong&gt;performance-first learning&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Тема&lt;/th&gt;
&lt;th&gt;Слабая цель&lt;/th&gt;
&lt;th&gt;Проверяемая цель&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;English&lt;/td&gt;
&lt;td&gt;Improve speaking&lt;/td&gt;
&lt;td&gt;Провести 20-минутное mock interview без русского&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pentest&lt;/td&gt;
&lt;td&gt;Learn web pentesting&lt;/td&gt;
&lt;td&gt;Найти и воспроизвести 3 класса уязвимостей в lab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AppSec&lt;/td&gt;
&lt;td&gt;Learn threat modeling&lt;/td&gt;
&lt;td&gt;Сделать threat model сервиса и защитить решения перед инженером&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DevSecOps&lt;/td&gt;
&lt;td&gt;Learn CI/CD security&lt;/td&gt;
&lt;td&gt;Настроить security gate и обработать FP/exception&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Книга&lt;/td&gt;
&lt;td&gt;Прочитать 300 страниц&lt;/td&gt;
&lt;td&gt;Через неделю объяснить 10 ключевых идей и применить 2 из них&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Видео&lt;/td&gt;
&lt;td&gt;Посмотреть курс&lt;/td&gt;
&lt;td&gt;Воспроизвести показанное без видео и решить похожую задачу&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Если цель невозможно проверить, обучение очень легко превращается в потребление контента.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fglajvtlswpd1h84oxiw2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fglajvtlswpd1h84oxiw2.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Мой learning loop или как Я сам это делаю
&lt;/h2&gt;

&lt;p&gt;Сегодня мой базовый цикл выглядит примерно так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Результат, который хочу получить
        ↓
Карта предмета
        ↓
Один хороший пример
        ↓
Объяснить пример самому себе
        ↓
Закрыть источник и вспомнить
        ↓
Сделать самому
        ↓
Получить обратную связь
        ↓
Вернуться через интервал
        ↓
Решить похожую, но уже новую задачу
        ↓
Объяснить другому человеку
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Мне нравится эта схема тем, что в ней почти невозможно спрятаться за фразой «я вроде понял». Либо сделал, либо нет.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Я больше не начинаю с первой страницы
&lt;/h2&gt;

&lt;p&gt;Открыть книгу на Chapter 1 и дисциплинированно идти до Chapter 27 выглядит правильным. Иногда так и надо. Но при ограниченном времени это часто плохая стратегия входа в новую область.&lt;/p&gt;

&lt;p&gt;Сначала я хочу увидеть &lt;strong&gt;карту&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Если это книга&lt;/strong&gt; — смотрю оглавление, введение, summary, заголовки, основные термины. &lt;strong&gt;Если это технология&lt;/strong&gt; — architecture overview, glossary, quick start, типичный workflow. &lt;strong&gt;Если это security&lt;/strong&gt; — assets, trust boundaries, attack surface, identities, data flows, controls, telemetry. &lt;strong&gt;Если это английский&lt;/strong&gt; — не «все времена английского языка», а конкретные ситуации: meeting, email, interview, объяснение finding, disagreement, clarification.&lt;/p&gt;

&lt;p&gt;Это тот случай, когда старый принцип 80/20 для меня всё ещё полезен — &lt;strong&gt;не как математический закон, а как вопрос&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Какие несколько понятий дадут мне возможность понимать остальные?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Например, прежде чем читать сто страниц про OAuth/OIDC, полезно понять участников протокола, tokens, redirect flow и trust relationships. После этого детали перестают быть набором терминов.&lt;/p&gt;

&lt;p&gt;В моей старой брошюре была формулировка: &lt;em&gt;новая информация легче «цепляется» за уже существующий скелет знаний.&lt;/em&gt; Сейчас я бы сказал проще: &lt;strong&gt;сначала построи систему координат, потом добавляй детали&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Новичку не всегда полезно сразу бросаться в задачу. Сначала посмотри один хороший worked example
&lt;/h2&gt;

&lt;p&gt;В IT популярен совет: «не читай — просто делай». В нём есть правда, но для совсем новой области он иногда превращается в другое: человек два часа хаотично тыкается, копирует команды из Stack Overflow и вообще не понимает, почему что-то заработало.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для нового типа задач мне больше нравится такой порядок:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;посмотреть &lt;strong&gt;один качественный решённый пример&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;на каждом существенном шаге спросить себя: &lt;em&gt;почему автор сделал именно это?&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;закрыть пример;&lt;/li&gt;
&lt;li&gt;повторить самостоятельно;&lt;/li&gt;
&lt;li&gt;потом изменить условия задачи.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Исследования worked examples и self-explanation давно показывают, что для раннего этапа освоения сложных когнитивных навыков это может быть эффективнее, чем сразу бросать новичка в полностью самостоятельное problem solving.&lt;/p&gt;

&lt;p&gt;В security это выглядит очень естественно. Допустим, я впервые разбираю SSRF (Server-Side Request Forgery). Не просто смотрю готовый exploit, а проговариваю:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Почему этот input controllable?
Почему backend делает server-side request?
Какая trust boundary пересекается?
Что именно доступно из internal network?
Как отличить реальный SSRF от красивого payload, который ничего не даёт?
Какой control устранит root cause, а какой только усложнит эксплуатацию?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Вот в этот момент чужой walkthrough превращается в мою модель.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  3. Перечитывание даёт ощущение знания. Retrieval показывает правду
&lt;/h2&gt;

&lt;p&gt;Это, пожалуй, самый ценный инструмент во всей статье. Схема, на которой я сам много раз ловился:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;прочитал → понятно → перечитал → ещё понятнее → закрыл → ничего не помню
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Знакомость материала очень легко спутать со знанием. Поэтому после небольшого блока я закрываю источник и пытаюсь &lt;strong&gt;извлечь материал из памяти&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Не посмотреть правильный ответ ещё раз. Сначала именно вспомнить.&lt;br&gt;
**&lt;br&gt;
После OAuth/OIDC** — нарисовать flow с пустого листа.&lt;br&gt;
&lt;strong&gt;После Kubernetes&lt;/strong&gt; — написать manifest без copy-paste.&lt;br&gt;
&lt;strong&gt;После видео по Burp Suite&lt;/strong&gt; — повторить последовательность действий самому.&lt;br&gt;
&lt;strong&gt;После английского&lt;/strong&gt; — сказать фразу вслух до того, как открыл карточку.&lt;br&gt;
&lt;strong&gt;После главы книги&lt;/strong&gt; — записать 5–7 тезисов по памяти.&lt;/p&gt;

&lt;p&gt;Retrieval practice хорошо поддерживается исследованиями обучения и, что для меня важнее, прекрасно работает как диагностика. Если я не могу восстановить идею — значит, проблема обнаружена &lt;strong&gt;сейчас&lt;/strong&gt;, а не на интервью или в production.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxt6nnhx1n9b3gcq1dugw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxt6nnhx1n9b3gcq1dugw.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Мой простой тест понимания
&lt;/h3&gt;

&lt;p&gt;После любой темы я задаю себе три вопроса:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Могу ли я объяснить это без источника?
2. Могу ли я сделать это без пошагового гайда?
3. Узнаю ли я эту же идею в другом контексте?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Первый&lt;/strong&gt; проверяет память.&lt;br&gt;
&lt;strong&gt;Второй&lt;/strong&gt; — навык.&lt;br&gt;
&lt;strong&gt;Третий&lt;/strong&gt; — transfer.&lt;br&gt;
Вот &lt;strong&gt;третий&lt;/strong&gt; обычно самый неприятный :)&lt;/p&gt;


&lt;h2&gt;
  
  
  4. Spacing: возвращаться к материалу полезнее, чем пытаться «вбить» его за один вечер
&lt;/h2&gt;

&lt;p&gt;В версии 2023 года я много писал про кривую Эббингауза и давал довольно конкретные интервалы повторений. Сегодня я бы оставил принцип, но убрал магию вокруг цифр.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Распределённая практика работает. Универсального идеального расписания для любого человека и любого материала — нет.&lt;/strong&gt; Для новой темы я могу начать примерно так:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Этап&lt;/th&gt;
&lt;th&gt;Примерный момент&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Первый контакт&lt;/td&gt;
&lt;td&gt;День 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recall без подсказки&lt;/td&gt;
&lt;td&gt;В тот же день&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Короткая проверка&lt;/td&gt;
&lt;td&gt;День 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ещё одно извлечение&lt;/td&gt;
&lt;td&gt;День 3–4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Практика в новой задаче&lt;/td&gt;
&lt;td&gt;День 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Проверка сохранности&lt;/td&gt;
&lt;td&gt;Через 2–4 недели&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Но это не календарь религиозных праздников. Если вспоминаю легко — увеличиваю интервал. Если всё развалилось — возвращаюсь раньше.&lt;/p&gt;

&lt;p&gt;Для языка это удобно отдавать Anki или другой системе интервальных повторений (SRS). Для технических навыков карточки нужны далеко не всегда. Иногда лучший spaced repetition для AppSec — через неделю получить другую уязвимую API и снова пройти путь &lt;code&gt;identify → exploit → impact → remediation → retest&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr47dwmfyqoi3nyksi45r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr47dwmfyqoi3nyksi45r.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  5. Для security я использую цикл «увидел → сломал → починил → объяснил»
&lt;/h2&gt;

&lt;p&gt;Вот здесь generic learning advice обычно заканчивается, а мне как раз становится интересно. *&lt;em&gt;Cybersecurity плохо учится только чтением. *&lt;/em&gt;Систематический обзор университетских cybersecurity courses показывает устойчивый акцент на active learning, case studies, simulations, virtual labs и project-based assessment. NIST NICE Framework тоже описывает развитие специалиста через реальные work roles, tasks, knowledge и skills; вокруг него существуют challenge-based и hands-on training environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;На практике я стараюсь превращать тему в цикл:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Observe
  ↓
Reproduce
  ↓
Break / Attack
  ↓
Fix / Mitigate
  ↓
Retest
  ↓
Explain the risk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Penetration Testing
&lt;/h3&gt;

&lt;p&gt;Если тема — IDOR/BOLA, мне мало определения из OWASP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Я хочу:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;увидеть нормальный request;&lt;/li&gt;
&lt;li&gt;понять identity/authorization context;&lt;/li&gt;
&lt;li&gt;изменить identifier;&lt;/li&gt;
&lt;li&gt;воспроизвести unauthorized access;&lt;/li&gt;
&lt;li&gt;доказать impact;&lt;/li&gt;
&lt;li&gt;предложить server-side control;&lt;/li&gt;
&lt;li&gt;проверить fix другим пользователем/tenant.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Тогда vulnerability перестаёт быть карточкой с термином.&lt;/p&gt;

&lt;h3&gt;
  
  
  Product Security / AppSec
&lt;/h3&gt;

&lt;p&gt;Для каждого класса проблем полезно собрать небольшой mental template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Asset
→ Entry point
→ Trust boundary
→ Preconditions
→ Abuse / attack path
→ Business impact
→ Control
→ Validation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;После десятка реальных разборов ты начинаешь узнавать структуру проблемы раньше, чем вспоминаешь номер или название CWE-класса.&lt;/p&gt;

&lt;h3&gt;
  
  
  DevSecOps
&lt;/h3&gt;

&lt;p&gt;Здесь я вообще считаю лабораторию обязательной.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Не «я посмотрел, как работает SAST», а:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;добавил scanner в pipeline;&lt;/li&gt;
&lt;li&gt;положил в код заведомую проблему;&lt;/li&gt;
&lt;li&gt;увидел finding;&lt;/li&gt;
&lt;li&gt;настроил gate;&lt;/li&gt;
&lt;li&gt;поймал false positive;&lt;/li&gt;
&lt;li&gt;сделал exception с понятным сроком и owner;&lt;/li&gt;
&lt;li&gt;проверил, что pipeline не превратился в генератор ненависти разработчиков к Security.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Последний пункт часто важнее первых шести.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Английский я тоже перестал учить как «предмет»
&lt;/h2&gt;

&lt;p&gt;С иностранным языком особенно легко коллекционировать знания вместо навыка. Можно знать &lt;code&gt;Present Perfect&lt;/code&gt;, иметь 8 000 карточек и всё равно зависнуть, когда на митинге тебя внезапно спрашивают:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;What exactly is blocking the release?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Поэтому мой подход к языку сейчас сценарный. Не учу слово отдельно, если могу выучить &lt;strong&gt;рабочий chunk&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;clarify
→ Could you clarify what you mean by ...?
concern
→ My main concern is ...
blocked
→ I'm currently blocked by ...
recommend
→ I'd recommend validating this before release.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Исследования L2 vocabulary показывают, что простое массовое повторение слабее, чем сочетание repetition с retrieval, spacing и semantic elaboration. Исследования corrective feedback также в целом поддерживают пользу обратной связи при освоении второго языка.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmu7nu6fq711y1yl6ezfn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmu7nu6fq711y1yl6ezfn.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Но мне важна практическая часть: &lt;strong&gt;слово должно начать жить в речи&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Мой короткий цикл для Technical English
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INPUT
услышал / прочитал 5–10 полезных конструкций
RETRIEVAL
закрыл список и попытался вспомнить
OUTPUT
сказал их своими словами в другом контексте
FEEDBACK
проверил формулировку / получил correction
REUSE
использовал через день в новом сценарии
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Например, вместо 40 минут vocabulary list я могу 20 минут разыгрывать один сценарий:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SAST нашёл authorization issue перед релизом. Объясни разработчику finding, impact и next step на английском.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Там одновременно тренируются vocabulary, grammar, pronunciation, security thinking и способность не превращать разговор в набор заученных фраз. Если язык нужен для работы — и практика должна быть похожа на работу.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Как я теперь смотрю обучающие видео
&lt;/h2&gt;

&lt;p&gt;YouTube очень хорошо умеет создавать ощущение продуктивности. Полтора часа прошло, progress bar дошёл до конца — мозг доволен. А что осталось?&lt;/p&gt;

&lt;p&gt;Видео я стараюсь смотреть &lt;strong&gt;с остановками по смысловым кускам&lt;/strong&gt;, а не как сериал. Это хорошо согласуется с исследованиями multimedia learning: learner-paced segmentation снижает перегрузку на сложном материале, а более свежий meta-analysis по video learning показывает преимущества active learning strategies для retention, comprehension и transfer.&lt;/p&gt;

&lt;p&gt;Мой режим простой:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10–20 минут видео
↓
PAUSE
↓
3–5 тезисов по памяти
↓
один вопрос: «что здесь было непонятно?»
↓
повторить показанное самому
↓
только потом следующий кусок
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Если в видео показывают лабораторию, я не считаю её пройденной, пока не смог сделать хотя бы ключевую часть без автора на втором мониторе.&lt;/p&gt;

&lt;p&gt;Скорость &lt;code&gt;1.5x&lt;/code&gt;? Иногда отлично для знакомой темы или review. Для нового плотного материала я лучше посмотрю медленнее и один раз нормально пойму причинно-следственную связь.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Скорость плеера — плохая метрика скорости обучения.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Как я читаю технические книги и большие документы
&lt;/h2&gt;

&lt;p&gt;Здесь я разделяю два режима.&lt;/p&gt;

&lt;h3&gt;
  
  
  Triage reading
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Мне нужно понять:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;стоит ли материал моего времени;&lt;/li&gt;
&lt;li&gt;где лежат нужные куски;&lt;/li&gt;
&lt;li&gt;как устроена тема;&lt;/li&gt;
&lt;li&gt;что читать глубоко.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Тогда я быстро прохожу:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;TOC → intro → headings → diagrams → summary/conclusion → нужные разделы&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deep reading
&lt;/h3&gt;

&lt;p&gt;Если раздел реально нужен, скорость перестаёт быть целью. Я читаю небольшой кусок и превращаю его в вопросы:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Почему это работает?
При каких условиях перестанет работать?
Как это выглядит в реальной системе?
Что здесь можно перепутать?
Как я это проверю в lab?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Для сложных тем полезен self-explanation: не просто повторить предложение автора, а связать его с уже известными принципами и объяснить самому себе, &lt;strong&gt;почему следующий шаг следует из предыдущего&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Это гораздо медленнее, чем «прочитать 100 страниц за вечер». Зато через неделю есть что вспомнить.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Я перестал коллекционировать информацию. Теперь я её сжимаю
&lt;/h2&gt;

&lt;p&gt;Ещё одна ловушка самообучения — бесконечная агрегация.&lt;br&gt;
50 bookmarks.&lt;br&gt;
17 YouTube playlists.&lt;br&gt;
Три Notion workspace.&lt;br&gt;
Папка &lt;code&gt;READ_LATER_FINAL_v2&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;И прекрасное чувство, что знания почти принадлежат тебе :) Сейчас для темы я стараюсь иметь &lt;strong&gt;одну рабочую точку сборки&lt;/strong&gt;. Не обязательно красивую.&lt;/p&gt;

&lt;p&gt;Мой минимальный шаблон заметки:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Тема

**Зачем мне это?**
## 5–10 core concepts
## Что я пока не понимаю
## Как это проверить руками
## Ошибки / failure modes
## Что я могу объяснить без источника
## Ссылки на 2–5 действительно хороших источников
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;После каждого нового источника я не копирую всё подряд, а спрашиваю:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Что в моей модели изменилось?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Если ничего — возможно, источник мне больше не нужен. Это особенно полезно в Product Security, где один и тот же тезис можно встретить в OWASP, NIST, vendor documentation, блоге, conference talk и пяти Medium-постах. Пять ссылок не обязательно означают пять новых знаний.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Фокус: я не пытаюсь выиграть у уведомлений силой воли
&lt;/h2&gt;

&lt;p&gt;В старой брошюре у меня был раздел &lt;code&gt;Multitasking VS Focus&lt;/code&gt; и отдельный «метод трёх часов без шума».&lt;/p&gt;

&lt;p&gt;Сейчас я сохранил идею, но перестал поклоняться цифре «три часа». Для сложного learning block мне нужны:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;одна задача
+ один контекст
+ выключенные уведомления
+ заранее понятный output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Иногда это 25 минут. Иногда 50. Иногда полтора часа, если пошла нормальная глубокая работа.&lt;/p&gt;

&lt;p&gt;Task switching имеет реальную cognitive cost. Мне не нужно знать точное число потерянных процентов, чтобы заметить очевидное: после Slack → документация → Telegram → lab → почта я каждый раз заново собираю контекст в голове.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pomodoro
&lt;/h3&gt;

&lt;p&gt;Использую, когда не хочется начинать.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;25/5&lt;/code&gt; — отличный starter motor.&lt;/p&gt;

&lt;p&gt;Но если я вошёл в сложную лабораторию и на 25-й минуте наконец понял, где ошибка в policy, таймер не имеет права командовать мной только потому, что он помидор.&lt;/p&gt;




&lt;h2&gt;
  
  
  11. Прокрастинация часто исчезает, когда следующий шаг становится смешно маленьким
&lt;/h2&gt;

&lt;p&gt;«Выучить Kubernetes» — прекрасная задача, если хочется ничего не делать. Она огромная, бесформенная и без точки входа.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;А вот:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Запустить cluster и создать namespace»&lt;br&gt;
— уже почти не страшно.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Мне хорошо работает связка из двух вещей.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Уменьшить первый шаг
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Не «сегодня два часа английского»&lt;/strong&gt;, а «записать 90 секунд self-introduction». &lt;strong&gt;Не «готовиться к OSCP целиком»&lt;/strong&gt;, а «поднять одну penetration-testing машину и сделать initial enumeration». &lt;strong&gt;Не «разобраться с Terraform»&lt;/strong&gt;, а «создать один resource и уничтожить его».&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Заранее решить, когда это произойдёт
&lt;/h3&gt;

&lt;p&gt;Implementation intentions — обычная конструкция &lt;code&gt;если → то&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Если я закончил утренний кофе и открыл ноутбук,
то первые 25 минут работаю над lab до Slack и почты.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это намного полезнее, чем ежедневное внутреннее собрание совета директоров на тему «есть ли у меня сегодня мотивация?».&lt;/p&gt;




&lt;h2&gt;
  
  
  12. Сомнение и страх я тоже считаю частью learning loop
&lt;/h2&gt;

&lt;p&gt;Есть забавный момент: чем дольше мы готовимся, тем легче назвать подготовку «обучением» и не проверять себя в реальности. Особенно это видно в двух областях.&lt;/p&gt;

&lt;h3&gt;
  
  
  Иностранный язык
&lt;/h3&gt;

&lt;p&gt;«Сначала я подтяну grammar, потом начну говорить». Через год grammar стала лучше. Говорить всё ещё страшно.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;p&gt;«Сначала дочитаю весь курс, потом пойду в lab». Курс закончен. Перед пустым terminal всё равно тишина. Для себя я ввёл неофициальное правило &lt;strong&gt;minimum viable embarrassment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Нужно достаточно рано попасть в ситуацию, где немного неловко&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;записать себя на английском и услышать собственные ошибки;&lt;/li&gt;
&lt;li&gt;ответить на interview question без конспекта;&lt;/li&gt;
&lt;li&gt;попробовать exploit и увидеть, что гипотеза была неверной;&lt;/li&gt;
&lt;li&gt;показать threat model человеку, который найдёт в нём дыру;&lt;/li&gt;
&lt;li&gt;написать первый плохой скрипт вместо чтения пятой книги про Python.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это не самоистязание. Это быстрая обратная связь. Ошибку, которую ты увидел сегодня, не придётся торжественно обнаруживать через шесть месяцев.&lt;/p&gt;




&lt;h2&gt;
  
  
  13. «Крепкая четвёрка» — мой любимый антидот от перфекционизма
&lt;/h2&gt;

&lt;p&gt;Эту идею из своей старой брошюры я оставляю почти без изменений.&lt;br&gt;
Есть работа «на тройку» — лишь бы отстали.&lt;br&gt;
Есть отличная работа «на пятёрку».&lt;br&gt;
А есть пятёрка-перевёртыш: &lt;strong&gt;перфекционизм, который мешает результату вообще появиться&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Человек две недели проектирует идеальный learning plan. Полирует CV вместо отправки applications. Учится писать идеально правильный English sentence и поэтому молчит на встрече. Читает про программирование вместо первого кривого скрипта.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Я предпочитаю крепкую четвёрку:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Сделать достаточно хорошо, получить реальную обратную связь и улучшить следующую итерацию.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;В обучении версия &lt;code&gt;0.1&lt;/code&gt;, которую можно проверить, почти всегда полезнее версии &lt;code&gt;1.0&lt;/code&gt;, которая существует только в голове.&lt;/p&gt;


&lt;h2&gt;
  
  
  14. Не мотивация, а короткий цикл и scoreboard
&lt;/h2&gt;

&lt;p&gt;Мотивация хороша. Просто она не подписывала SLA. Сегодня есть, завтра нет. Поэтому большие цели я режу на циклы примерно по &lt;strong&gt;6–12 недель&lt;/strong&gt; и заранее решаю, какой observable result должен появиться.&lt;/p&gt;

&lt;p&gt;Не:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«улучшить английский».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;А:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«через восемь недель пройти 30-минутное mock interview без русского и без заранее написанного текста».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Не:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«изучить AWS Security».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;А:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«собрать lab с несколькими attack paths, настроить detection и объяснить архитектуру без слайдов».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Каждую неделю я смотрю не на часы, а на output. &lt;strong&gt;Что появилось?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lab? Threat model? Write-up? Recorded answer? Working pipeline? Решённая задача? Если я десять часов «учился», но ничего из этого не появилось, я не считаю неделю особенно успешной.&lt;/p&gt;


&lt;h1&gt;
  
  
  Если мне нужно быстро освоить новый security skill
&lt;/h1&gt;

&lt;p&gt;Вот универсальный двухнедельный шаблон, который я бы использовал сегодня.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;День&lt;/th&gt;
&lt;th&gt;Работа&lt;/th&gt;
&lt;th&gt;Проверяемый результат&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Формулирую конечное действие&lt;/td&gt;
&lt;td&gt;Знаю, что должен уметь сделать&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Строю карту темы&lt;/td&gt;
&lt;td&gt;10–15 core concepts + неизвестные слова&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Разбираю 1–2 хороших worked examples&lt;/td&gt;
&lt;td&gt;Могу объяснить каждый шаг&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Повторяю пример без подсказки&lt;/td&gt;
&lt;td&gt;Первый самостоятельный результат&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Делаю простую лабораторию&lt;/td&gt;
&lt;td&gt;Working scenario&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Закрываю источники и восстанавливаю тему&lt;/td&gt;
&lt;td&gt;Список реальных пробелов&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Исправляю пробелы&lt;/td&gt;
&lt;td&gt;Короткая обновлённая карта&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Беру другую задачу того же класса&lt;/td&gt;
&lt;td&gt;Первый перенос навыка (transfer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;8&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Пауза + recall&lt;/td&gt;
&lt;td&gt;Проверка retention&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Усложняю условия&lt;/td&gt;
&lt;td&gt;Failure / attack scenario&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Добавляю mitigation&lt;/td&gt;
&lt;td&gt;Fix + retest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;11&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Объясняю тему вслух&lt;/td&gt;
&lt;td&gt;5–10 минут без конспекта&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;12&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Решаю задачу без walkthrough&lt;/td&gt;
&lt;td&gt;Blind practice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;13&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Сам себе экзамен&lt;/td&gt;
&lt;td&gt;Questions + troubleshooting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;14&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Делаю итоговый артефакт&lt;/td&gt;
&lt;td&gt;Lab / write-up / demo / checklist&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Смысл не в том, что любую профессию можно выучить за 14 дней. Смысл в том, что через две недели у тебя должен быть &lt;strong&gt;работающий первый слой навыка&lt;/strong&gt;, а не только история браузера.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdnvjk8qtvgrx9ay14w2f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdnvjk8qtvgrx9ay14w2f.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  Если мне нужно быстрее подтянуть Technical English
&lt;/h1&gt;

&lt;p&gt;Здесь цикл немного другой. Я бы выбрал &lt;strong&gt;одну рабочую ситуацию на неделю&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Например: security interview.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;День 1 — собрать 10–15 ключевых phrases/chunks
День 2 — recall + 5 коротких ответов вслух
День 3 — 15 минут mock interview
День 4 — разобрать ошибки и переформулировать ответы
День 5 — новый mock без старого текста
День 6 — listening: интервью/митинг кусками + пересказ
День 7 — 20–30 минут разговора без конспекта
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Следующая неделя — &lt;strong&gt;meetings.&lt;/strong&gt;&lt;br&gt;
Потом &lt;strong&gt;explaining findings.&lt;/strong&gt;&lt;br&gt;
Потом &lt;strong&gt;disagreement / risk discussion.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Так язык постепенно собирается вокруг реальных задач, а не вокруг ощущения «я когда-нибудь закончу учебник».&lt;/p&gt;




&lt;h1&gt;
  
  
  Что я бы сегодня выкинул из типичного learning advice
&lt;/h1&gt;

&lt;p&gt;За годы вокруг обучения накопилось слишком много красивых правил. Часть из них полезна как метафора, но плохо выдерживает слово «доказано».&lt;/p&gt;

&lt;p&gt;Вот что я больше не использую как жёсткую истину:&lt;/p&gt;

&lt;h3&gt;
  
  
  «Пирамида обучения» с точными процентами
&lt;/h3&gt;

&lt;p&gt;Знаменитые &lt;code&gt;10% читаем / 20% слышим / 90% делаем&lt;/code&gt; часто приписывают Edgar Dale. У этих цифр нет той научной основы, которую им обычно приписывают. Практика действительно важна. Но проценты лучше оставить мотивационным плакатам.&lt;/p&gt;

&lt;h3&gt;
  
  
  «20 часов — и навык освоен»
&lt;/h3&gt;

&lt;p&gt;20 часов хорошей практики могут дать очень заметный старт. Но сложность навыков различается на порядки. &lt;code&gt;20 hours&lt;/code&gt; — полезный антидот от страха перед стартом, а не гарантия компетентности. Но тоже база. Хотя бы с нее стартануть.&lt;/p&gt;

&lt;h3&gt;
  
  
  «10 000 часов — и ты эксперт»
&lt;/h3&gt;

&lt;p&gt;Тоже не закон природы. Важны качество практики, feedback, стартовый уровень, область и куча других факторов. Но в целом общйи каркас 10к часов верен.&lt;/p&gt;

&lt;h3&gt;
  
  
  «Концентрация всегда заканчивается ровно через 25 минут»
&lt;/h3&gt;

&lt;p&gt;Нет. Pomodoro — инструмент организации работы, а не таймер человеческой биологии.&lt;/p&gt;

&lt;h3&gt;
  
  
  «Есть идеальные интервалы повторения для всех»
&lt;/h3&gt;

&lt;p&gt;Spacing полезен. Конкретная сетка зависит от задачи, человека и требуемого retention interval.&lt;/p&gt;

&lt;h3&gt;
  
  
  «Скорочтение позволит читать в 3–5 раз быстрее без потери понимания»
&lt;/h3&gt;

&lt;p&gt;Для поиска и triage — можно читать очень быстро.&lt;/p&gt;

&lt;p&gt;Для глубокого понимания сложного материала скорость и comprehension приходится балансировать. И это нормально, мен.&lt;/p&gt;




&lt;h1&gt;
  
  
  Быстрая диагностика: что сломалось в обучении?
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Симптом&lt;/th&gt;
&lt;th&gt;Что проверить первым&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Через неделю ничего не помню&lt;/td&gt;
&lt;td&gt;Retrieval + spacing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Всё понимаю только пока открыт конспект&lt;/td&gt;
&lt;td&gt;Recall без подсказки&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Посмотрел пять курсов, навык не появился&lt;/td&gt;
&lt;td&gt;Практика без walkthrough&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Не знаю, с чего начать новую тему&lt;/td&gt;
&lt;td&gt;Performance goal + карта предмета&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lab кажется слишком сложным&lt;/td&gt;
&lt;td&gt;Один worked example → self-explanation → повтор&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Тону в источниках&lt;/td&gt;
&lt;td&gt;Один canonical note + 2–5 основных sources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Постоянно отвлекаюсь&lt;/td&gt;
&lt;td&gt;Single-task block + notifications off&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Не могу начать&lt;/td&gt;
&lt;td&gt;Первый шаг на 5–25 минут + &lt;code&gt;если → то&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Боюсь говорить по-английски&lt;/td&gt;
&lt;td&gt;Короткий output + correction + повтор&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Боюсь technical interview&lt;/td&gt;
&lt;td&gt;Ответ вслух без конспекта + запись&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Хочу знать всё до практики&lt;/td&gt;
&lt;td&gt;Minimum viable embarrassment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Всё полирую и не выпускаю&lt;/td&gt;
&lt;td&gt;«Крепкая четвёрка»&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  И ещё одна вещь, которую преподавание научило меня ценить
&lt;/h1&gt;

&lt;p&gt;Когда человек может &lt;strong&gt;объяснить&lt;/strong&gt; сложную вещь другому человеку, очень быстро становится видно, где у него понимание, а где набор знакомых слов. Поэтому финальным тестом я часто делаю не quiz, а объяснение.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Попробуй без конспекта рассказать:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;почему эта vulnerability возникает;&lt;/li&gt;
&lt;li&gt;какой trust boundary нарушен;&lt;/li&gt;
&lt;li&gt;почему mitigation реально работает;&lt;/li&gt;
&lt;li&gt;чем severity отличается от business priority;&lt;/li&gt;
&lt;li&gt;почему именно эта фраза на английском звучит естественнее;&lt;/li&gt;
&lt;li&gt;что было главным в прочитанной главе.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Если в объяснении приходится прыгать через логические дыры — отлично. Ты только что бесплатно нашёл следующую тему для обучения.&lt;/p&gt;




&lt;h2&gt;
  
  
  Итог
&lt;/h2&gt;

&lt;p&gt;После многих лет преподавания и собственного самообучения я всё меньше верю в «секретные техники сверхобучения» и всё больше — в хорошо собранный процесс.&lt;/p&gt;

&lt;p&gt;Мне не нужно поглотить максимум информации.&lt;/p&gt;

&lt;p&gt;Мне нужно:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;понять, что я должен уметь → быстро построить карту → увидеть хороший пример → попробовать вспомнить → сделать самому → получить feedback → вернуться позже → применить в другом контексте.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;И повторить цикл.&lt;/p&gt;

&lt;p&gt;Самая опасная иллюзия — принять знакомство с материалом за владение им.&lt;/p&gt;

&lt;p&gt;Поэтому моя главная метрика сегодня очень простая:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Не сколько я посмотрел и прочитал, а что я теперь могу воспроизвести, сделать и объяснить без подсказки.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Если эта цифра растёт — обучение работает.&lt;/p&gt;

&lt;p&gt;Всё остальное вторично.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frfb3dixgd2ty37efnfwi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frfb3dixgd2ty37efnfwi.png" alt=" " width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Источники и что я перепроверил для этой версии (статьи)
&lt;/h2&gt;

&lt;p&gt;Основа статьи — моя self-published брошюра &lt;strong&gt;«(Само)обучение: исследования, факты и лучшие практики» (2023)&lt;/strong&gt; и собственный опыт преподавания, профессионального обучения и самообучения. Для этой версии я отдельно перепроверил ключевые тезисы по исследованиям и профильным материалам. И дабы все могли проверить материалы на которые я опирался при написании материала, ниже вот основная исследовательская база:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Carpenter S. K., Pan S. C., Butler A. C. &lt;em&gt;The science of effective learning with spacing and retrieval practice&lt;/em&gt;. Nature Reviews Psychology, 2022.
&lt;a href="https://doi.org/10.1038/s44159-022-00089-1" rel="noopener noreferrer"&gt;https://doi.org/10.1038/s44159-022-00089-1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agarwal P. K., Nunes L. D., Blunt J. R. &lt;em&gt;Retrieval Practice Consistently Benefits Student Learning: a Systematic Review of Applied Research in Schools and Classrooms&lt;/em&gt;. Educational Psychology Review, 2021.
&lt;a href="https://doi.org/10.1007/s10648-021-09595-9" rel="noopener noreferrer"&gt;https://doi.org/10.1007/s10648-021-09595-9&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Kim S. K., Webb S. &lt;em&gt;The Effects of Spaced Practice on Second Language Learning: A Meta-Analysis&lt;/em&gt;. Language Learning, 2022.
&lt;a href="https://doi.org/10.1111/lang.12479" rel="noopener noreferrer"&gt;https://doi.org/10.1111/lang.12479&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Barcroft J. et al. &lt;em&gt;A Review of Laboratory Studies of Adult Second Language Vocabulary Training&lt;/em&gt;. Studies in Second Language Acquisition, 2020.
&lt;a href="https://doi.org/10.1017/S0272263119000500" rel="noopener noreferrer"&gt;https://doi.org/10.1017/S0272263119000500&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Li S. &lt;em&gt;The Effectiveness of Corrective Feedback in SLA: A Meta-Analysis&lt;/em&gt;. Language Learning, 2010.
&lt;a href="https://doi.org/10.1111/j.1467-9922.2010.00561.x" rel="noopener noreferrer"&gt;https://doi.org/10.1111/j.1467-9922.2010.00561.x&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Chi M. T. H. et al. &lt;em&gt;Self-explanations: How students study and use examples in learning to solve problems&lt;/em&gt;. Cognitive Science, 1989.
&lt;a href="https://doi.org/10.1016/0364-0213(89)90002-5" rel="noopener noreferrer"&gt;https://doi.org/10.1016/0364-0213(89)90002-5&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mayer R. E. &lt;em&gt;Using multimedia for e-learning&lt;/em&gt;. Journal of Computer Assisted Learning, 2017.
&lt;a href="https://doi.org/10.1111/jcal.12197" rel="noopener noreferrer"&gt;https://doi.org/10.1111/jcal.12197&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Zhang Y. et al. &lt;em&gt;Active learning strategies in video learning: A meta-analysis&lt;/em&gt;. Educational Research Review, 2025.
&lt;a href="https://doi.org/10.1016/j.edurev.2025.100708" rel="noopener noreferrer"&gt;https://doi.org/10.1016/j.edurev.2025.100708&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;How universities teach cybersecurity courses online: a systematic literature review&lt;/em&gt;. Frontiers in Computer Science, 2024.
&lt;a href="https://doi.org/10.3389/fcomp.2024.1499490" rel="noopener noreferrer"&gt;https://doi.org/10.3389/fcomp.2024.1499490&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tang C. et al. &lt;em&gt;Introducing Penetration Test with Case Study and Course Project in Cybersecurity Education&lt;/em&gt;. Journal of The Colloquium for Information Systems Security Education.
&lt;a href="https://journal.cisse.info/index.php/jcisse/article/view/148" rel="noopener noreferrer"&gt;https://journal.cisse.info/index.php/jcisse/article/view/148&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST. &lt;em&gt;NICE Framework Resource Center — Education and Training Provider Resources&lt;/em&gt;.
&lt;a href="https://www.nist.gov/itl/applied-cybersecurity/nice/nice-framework-resource-center/resources/education-and-training" rel="noopener noreferrer"&gt;https://www.nist.gov/itl/applied-cybersecurity/nice/nice-framework-resource-center/resources/education-and-training&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rayner K. et al. &lt;em&gt;So Much to Read, So Little Time: How Do We Read, and Can Speed Reading Help?&lt;/em&gt; Psychological Science in the Public Interest, 2016.
&lt;a href="https://doi.org/10.1177/1529100615623267" rel="noopener noreferrer"&gt;https://doi.org/10.1177/1529100615623267&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gollwitzer P. M., Sheeran P. &lt;em&gt;Implementation Intentions and Goal Achievement: A Meta-analysis of Effects and Processes&lt;/em&gt;. Advances in Experimental Social Psychology, 2006.
&lt;a href="https://doi.org/10.1016/S0065-2601(06)38002-1" rel="noopener noreferrer"&gt;https://doi.org/10.1016/S0065-2601(06)38002-1&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>productivity</category>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>Product Security Fast Track: готовлю практическую брошюру для инженеров, которые хотят двигаться дальше</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Mon, 21 Sep 2026 05:00:00 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/product-security-fast-track-ghotovliu-praktichieskuiu-broshiuru-dlia-inzhienierov-kotoryie-khotiat-dvighatsia-3h02</link>
      <guid>https://dev.to/ivan-piskunov/product-security-fast-track-ghotovliu-praktichieskuiu-broshiuru-dlia-inzhienierov-kotoryie-khotiat-dvighatsia-3h02</guid>
      <description>&lt;p&gt;Последние годы я собирал собственную систему подготовки по Application Security, DevSecOps и Product Security: рабочие заметки, реальные кейсы, вопросы с интервью, архитектурные сценарии, ошибки, метрики и подходы, которые действительно приходилось использовать на практике.&lt;/p&gt;

&lt;p&gt;В какой-то момент понял, что из этого уже получается не очередной набор заметок, а вполне самостоятельное пособие. Так появился &lt;strong&gt;Product Security Fast Track&lt;/strong&gt; — практическая брошюра для тех, кто хочет систематизировать знания, подготовиться к техническим интервью и постепенно перейти от отдельных инженерных задач к более целостному мышлению Product Security Engineer / Lead.&lt;/p&gt;

&lt;p&gt;Брошюра скоро появится в продаже.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9hr7udj4l0bg5myhjfkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9hr7udj4l0bg5myhjfkl.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Что внутри
&lt;/h2&gt;

&lt;p&gt;Я специально строил материал не вокруг списка модных инструментов, а вокруг жизненного цикла продукта и вопроса: &lt;em&gt;как сделать продукт безопаснее от идеи и архитектуры до production — и как добиться того, чтобы найденный риск действительно был устранён?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Теоретическая база
&lt;/h3&gt;

&lt;p&gt;Поэтому внутри есть фундамент Product Security, Secure SDLC и DevSecOps, Threat Modeling, SAST/SCA/DAST/IAST, vulnerability management, API Security, identity и authorization, software supply chain, CI/CD security, Cloud, IaC, containers, Kubernetes, PSIRT и security program management. Отдельно рассматриваются современные Web/API-атаки, архитектурные сценарии и risk-based подходы вроде CVSS, EPSS, KEV, VEX, ASPM/CNAPP, SSDF и SAMM.&lt;/p&gt;

&lt;p&gt;Но основная ценность для меня не в количестве терминов. Я сделал материал, который помогает объяснять и применять знания, а не просто помнить определения.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg8e010ruke0tpc9w0ekk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg8e010ruke0tpc9w0ekk.png" alt=" " width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Например, если на интервью спрашивают про security review нового продукта, задача не в том, чтобы быстрее назвать SAST. Сначала нужно увидеть assets, trust boundaries, privileged paths, attack surface и business context — а уже затем выбирать controls и tooling. Именно такое мышление я стараюсь тренировать на протяжении всей брошюры.&lt;/p&gt;

&lt;h3&gt;
  
  
  Практика вместо энциклопедии
&lt;/h3&gt;

&lt;p&gt;Внутри есть технические и архитектурные кейсы, whiteboard-сценарии, insecure configurations, CI/CD, Kubernetes, API, AWS/Azure-задачи и большой набор сложных вопросов для интервью.&lt;/p&gt;

&lt;p&gt;Для части вопросов есть короткий ответ на 30–60 секунд, затем более глубокий разбор и follow-up questions. Идея простая: не заучивать текст, а учиться думать и объяснять решение вслух.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq14lnbbtcgyyzp70u9kk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq14lnbbtcgyyzp70u9kk.png" alt=" " width="799" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Отдельный блок посвящён уровню Senior / Lead / Director.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Там разговор уже не только о том, какой control использовать, но и о том, как встроить его в engineering workflow, назначить ownership, определить SLA, измерить эффективность и не превратить Security в бесконечную фабрику findings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Как показать результат своей работы
&lt;/h3&gt;

&lt;p&gt;Мне хотелось отдельно закрыть проблему, которую я постоянно вижу у сильных инженеров: человек сделал много полезного, но на интервью рассказывает об этом как о списке действий.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;«Настроил SAST. Внедрил DevSecOps. Работал с Kubernetes.»&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Для senior-level позиции этого мало. Нужно уметь показать:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;problem → decision → action → measurable outcome → business/security impact.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdjo1g0o1ftp47wo70m5c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdjo1g0o1ftp47wo70m5c.png" alt=" " width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Поэтому в брошюре есть работа с метриками, результатами и STAR stories: как превратить технический опыт в понятный рассказ для интервьюера и показать не только activity, но и реальный outcome. Сам документ отдельно делает акцент на measurable results и business value как на сильном differentiator кандидата.&lt;/p&gt;

&lt;h3&gt;
  
  
  Английский для реального технического интервью
&lt;/h3&gt;

&lt;p&gt;Ещё один отдельный слой — American English для Product Security interviews. Не учебниковый английский, а формулировки, которыми удобно:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;структурировать технический ответ;&lt;/li&gt;
&lt;li&gt;объяснять trade-offs;&lt;/li&gt;
&lt;li&gt;корректно спорить с premise интервьюера;&lt;/li&gt;
&lt;li&gt;говорить о risk и residual risk;&lt;/li&gt;
&lt;li&gt;объяснять архитектурное решение;&lt;/li&gt;
&lt;li&gt;описывать incident или failure;&lt;/li&gt;
&lt;li&gt;отвечать на follow-up;&lt;/li&gt;
&lt;li&gt;презентовать собственный результат без ненужного пафоса.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;В расширенной interview-части есть отдельные English answer templates, а STAR-кейсы также переводятся в формат, пригодный для behavioural interview.&lt;/p&gt;

&lt;h3&gt;
  
  
  Онбординг после оффера и первые 100 дней работы
&lt;/h3&gt;

&lt;p&gt;И это не заканчивается получением offer. Я намеренно добавил ещё один блок, которого обычно нет в материалах «как пройти интервью»:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;что делать, если интервью уже пройдено и вы получили роль.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Внутри есть Product Security operating approach и подробная логика 30/60/90 Days — от discovery и поиска реальных P0/P1 рисков до operating model, roadmap, metrics, champions, budget и executive reporting.&lt;/p&gt;

&lt;p&gt;Потому что конечная цель всё-таки не научиться красиво отвечать на вопросы. Цель — &lt;strong&gt;уметь выполнять эту работу.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Для кого брошюра
&lt;/h2&gt;

&lt;p&gt;Product Security Fast Track я делаю прежде всего для AppSec / DevSecOps / Security Engineers, которые хотят систематизировать фундамент, подготовиться к серьёзным Product Security интервью и со временем двигаться от выполнения отдельных технических задач к архитектурному и leadership-мышлению.&lt;/p&gt;

&lt;p&gt;Внутри будет необходимая теория, но основной фокус — практические модели мышления, реальные сценарии, интервью, кейсы и применение знаний.&lt;/p&gt;

&lt;p&gt;Скоро расскажу подробнее о формате, содержании и публикации. Следи за лентой White2Hack канала и других официальных ресурсах. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Автор: Ivan Piskunov&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;White2Hack&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>"Почем безопасность?" Или о том как складывается цена на услуги ИБ в Product Security</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Fri, 18 Sep 2026 17:56:16 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/pochiem-biezopasnost-ili-o-tom-kak-skladyvaietsia-tsiena-na-uslughi-ib-v-product-security-529m</link>
      <guid>https://dev.to/ivan-piskunov/pochiem-biezopasnost-ili-o-tom-kak-skladyvaietsia-tsiena-na-uslughi-ib-v-product-security-529m</guid>
      <description>&lt;h3&gt;
  
  
  Прозрачное ценообразование в кибербезопасности, стоимость senior-экспертизы и экономика честного коммерческого предложения
&lt;/h3&gt;

&lt;p&gt;Коммерческое предложение по безопасности часто выглядит как одно число.&lt;/p&gt;

&lt;p&gt;К примеру, сумма в разделе "Прайс" на сайте или презентации\визитки. Это, может быть $4,500 или $12,000, а то и $25,000, а так же почасовка как $150 в час или $8,000 в месяц и т.д.&lt;/p&gt;

&lt;p&gt;Для клиента возникает вполне нормальный вопрос: &lt;strong&gt;из чего именно получилась эта сумма?&lt;/strong&gt; На этот вопрос должен существовать более содержательный ответ, чем "такой рынок", "это premium expertise" или "безопасность просто дорого стоит". Хм... разберемся в этой теме.&lt;/p&gt;

&lt;p&gt;Хорошая цена должна выдерживать декомпозицию. Должно быть понятно, что именно входит в работу, какие роли нужны для delivery, сколько инженерного времени требует scope, какие инструменты и инфраструктура используются, сколько времени уходит на координацию, QA и подготовку результата, какие assumptions заложены в оценку и какие изменения действительно могут изменить итоговую стоимость.&lt;/p&gt;

&lt;p&gt;Именно на этом принципе я строю коммерческую модель Bulwark Advisory.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Честная цена в Security - это не минимальная цена. Это цена, которую можно объяснить, разложить, проверить и связать с конкретным результатом. Работа (услуга) стоит своих денег когда это подкреплено фактами&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Эта статья о том, как такой подход работает на практике, почему высокий hourly rate senior-специалиста не обязательно означает дорогой результат, почему зарплату сотрудника нельзя напрямую сравнивать с consulting rate и в каких случаях консалтинг вообще оказывается неправильной экономической моделью. Цель материала не в том, чтобы оправдать "дорогую" безопасность, высокий прайс. Цель в том, чтобы сделать экономику Security достаточно прозрачной для нормального бизнес-решения. Ну, а уже адекватные люди (собственники бизнеса, заказчики) сами выберут что ом по душе и по карману.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8dya7s6zkzlgrmu7h4xd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8dya7s6zkzlgrmu7h4xd.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Cost, rate, price и value - это четыре разных понятия
&lt;/h2&gt;

&lt;p&gt;Разговор о цене быстро становится бессмысленным, если смешивать четыре разные сущности. Рассмотрим их подробнее.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost&lt;/strong&gt; - реальная себестоимость выполнения работы. Сюда входят труд, benefits или contractor cost, non-billable time, tooling, инфраструктура, страхование, административные расходы, presale, QA и delivery risk.&lt;br&gt;
&lt;strong&gt;Rate&lt;/strong&gt; - коммерческая единица стоимости времени. Часовая или дневная ставка удобна для расчета, но сама по себе она еще не является итоговой ценой проекта.&lt;br&gt;
&lt;strong&gt;Price&lt;/strong&gt; - сумма, которую клиент согласовал за конкретный engagement. Если scope зафиксирован, fixed price не должен расти только потому, что исполнитель ошибся в собственной оценке трудозатрат.&lt;br&gt;
&lt;strong&gt;Value&lt;/strong&gt; - экономический эффект результата. Это может быть снижение риска, высвобождение времени engineering-команды, снятие blocker для enterprise-сделки, сокращение release delay, отказ от дублирующего tooling, закрытие критического attack path или снижение управленческой неопределенности.&lt;/p&gt;

&lt;p&gt;Зрелая коммерческая модель учитывает &lt;strong&gt;все четыре уровня&lt;/strong&gt;. Слабая модель смотрит только на &lt;strong&gt;hourly rate.&lt;/strong&gt; Нечестная модель скрывает scope. Убыточная модель считает только часы инженера и забывает обо всем, что делает delivery профессиональным. Value-blind подход предполагает, что самый дорогой вариант автоматически лучший. И все четыре ошибки одинаково опасны.&lt;/p&gt;


&lt;h2&gt;
  
  
  2. Базовая формула ценообразования
&lt;/h2&gt;

&lt;p&gt;Большинство Security-услуг можно разложить до достаточно простой операционной модели.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Expected Effort
= Σ(Task Units × Hours per Unit × Complexity Factor)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Затем:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Labor Component
= Σ(Role Hours × Commercial Role Rate)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Добавляются прямые delivery costs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Direct Costs
= Tooling + Temporary Infrastructure + Travel + Specialist/Subcontractor Cost + Other Pass-Through Costs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;И отдельно учитывается работа, которую легко забыть:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Delivery Basis
= Labor
+ Direct Costs
+ Coordination
+ QA / Peer Review
+ Reporting
+ Commercial / Delivery Risk Reserve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Для хорошо ограниченного fixed-scope engagement из этой модели получается фиксированная цена проекта. И это норм! Здесь не требуется сложная финансовая математика (мы хоть и инженеры, но таки не бухгалтеры и не экономисты шарить за все эти нюансы расчетов). Важнее другое: &lt;strong&gt;каждая существенная часть цены должна иметь связь с delivery model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;В Bulwark Advisory оценка начинается со scope и ожидаемой трудоемкости, а не с числа, которое кажется приемлемым для конкретного клиента.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fht0tenfhtgz5feodglc2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fht0tenfhtgz5feodglc2.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Scope - первый фактор цены
&lt;/h2&gt;

&lt;p&gt;Одинаковое название услуги может скрывать совершенно разный объем работы.&lt;/p&gt;

&lt;p&gt;К примеру, одна из услуг "AWS Security Assessment" может означать:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;один небольшой AWS account;&lt;/li&gt;
&lt;li&gt;AWS Organizations с 40 accounts;&lt;/li&gt;
&lt;li&gt;EKS, serverless, IAM Identity Center, несколько регионов, десятки data stores и несколько CI/CD paths;&lt;/li&gt;
&lt;li&gt;только read-only architecture review;&lt;/li&gt;
&lt;li&gt;assessment вместе с validation, implementation, Terraform changes и remediation support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это разные проекты. Разный скоуп, разный ценник, разный outcome на выходе. Это не значит, что какой-то "плохо" или не нужный, а какой-то проект хороший и делать нужно только его или больше никак. Кастомизации и выполнение запроса клиента (заказчика) при соблюдении технических компетенций - это то что отличает профессионала от любителя.&lt;/p&gt;

&lt;p&gt;То же самое относится к penetration testing. API с 30 документированными endpoints и одной auth-моделью нельзя сравнивать с multi-tenant SaaS, в котором несколько ролей, сложная authorization logic, GraphQL, asynchronous workflows, third-party integrations и business-logic abuse cases. Разница чествуется уже при прочтении... А покажи это тру пентестеру и он объяснит все более детальнее, но суть при этом остается той же.&lt;/p&gt;

&lt;p&gt;Авторитетный фреймворк OWASP прямо указывает, что глубина тестирования должна зависеть от архитектуры, чувствительности данных, threat model и risk tolerance. Web Security Testing Guide также подчеркивает, что техническое тестирование является только частью consultancy assessment. Scope, limitations, reproducibility, reporting, remediation guidance и executive communication также входят в полноценный deliverable.&lt;/p&gt;

&lt;p&gt;Поэтому нормальный scope должен фиксировать как минимум:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Параметр&lt;/th&gt;
&lt;th&gt;Пример&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Target&lt;/td&gt;
&lt;td&gt;1 web app, 1 AWS account, 2 clusters, 50 API endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access model&lt;/td&gt;
&lt;td&gt;Black-box, authenticated, source-assisted, read-only cloud access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Roles / tenants&lt;/td&gt;
&lt;td&gt;Admin, standard user, partner, customer tenant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence&lt;/td&gt;
&lt;td&gt;Repositories, diagrams, pipelines, IAM exports, scanner output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deliverables&lt;/td&gt;
&lt;td&gt;Findings, risk model, roadmap, executive readout, retest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constraints&lt;/td&gt;
&lt;td&gt;Production restrictions, testing windows, excluded systems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client dependencies&lt;/td&gt;
&lt;td&gt;VPN, test account, VM, allowlisting, interviews&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timeline&lt;/td&gt;
&lt;td&gt;Standard, accelerated, hard deadline&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Цена без этого контекста мало что означает. Цена это итог, но профессионал всегда может рассказать, объяснить из чего она складывается. &lt;/p&gt;




&lt;h2&gt;
  
  
  4. Клиент тоже тратит время, даже если vendor выставил fixed fee
&lt;/h2&gt;

&lt;p&gt;Это одна из самых недооцененных частей экономики Security-проекта.&lt;br&gt;
Для penetration test инженер клиента может быть обязан:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;подготовить VM;&lt;/li&gt;
&lt;li&gt;создать временные credentials;&lt;/li&gt;
&lt;li&gt;настроить VPN tunnel;&lt;/li&gt;
&lt;li&gt;добавить IP тестировщика в allowlist;&lt;/li&gt;
&lt;li&gt;установить agent;&lt;/li&gt;
&lt;li&gt;подготовить staging environment;&lt;/li&gt;
&lt;li&gt;загрузить репрезентативные test data;&lt;/li&gt;
&lt;li&gt;объяснить архитектуру и trust boundaries;&lt;/li&gt;
&lt;li&gt;воспроизвести finding;&lt;/li&gt;
&lt;li&gt;координировать remediation и retest.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это реальные трудозатраты. Vendor их может не выставлять в invoice, но компания все равно за них платит.&lt;/p&gt;

&lt;p&gt;Поэтому более честная формула выглядит так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total Client Economic Cost
= Vendor Fee
+ Internal Preparation Hours
+ Internal Coordination Hours
+ Remediation Effort
+ Temporary Infrastructure
+ Opportunity Cost of Delayed Engineering Work
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Хороший поставщик должен показывать client-side dependencies еще на стадии scoping. Если этого не делать, предложение может выглядеть искусственно дешевым, а реальная часть затрат просто переедет в engineering-команду клиента. Это не профессионально. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Низкий vendor fee не всегда означает дешевый engagement.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Почему зарплату сотрудника (в найме) нельзя сравнивать с consulting rate
&lt;/h2&gt;

&lt;p&gt;Типичный procurement-аргумент выглядит примерно так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Security engineer получает около $130K в год. Это примерно $62 в час. Почему консультант должен стоить $150 или $200 в час?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Арифметика простая. Экономическая модель неверная.&lt;/strong&gt; И сейчас я объясню почему так.  По данным U.S. Bureau of Labor Statistics, медианная годовая зарплата Information Security Analyst в мае 2025 года составляла &lt;strong&gt;$129,180&lt;/strong&gt;, а верхние 10% получали более &lt;strong&gt;$199,850&lt;/strong&gt;. По данным BLS за март 2026 года, wages составляли около &lt;strong&gt;69.9% total compensation&lt;/strong&gt; в private industry, а benefits - около &lt;strong&gt;30.1%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Если использовать это соотношение только как грубую нормализацию:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$129,180 / 0.699 ≈ $184,807 loaded compensation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Для уровня BLS top 10%:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$199,850 / 0.699 ≈ $285,908 loaded compensation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;И это еще без company-specific расходов на recruiting, оборудование, security tooling, management time, обучение, офис и стоимость неудачного найма.&lt;/p&gt;

&lt;p&gt;Данные SHRM в Recruiting Benchmarking 2026 указывает &lt;strong&gt;39 календарных дней median time-to-fill для nonexecutive positions&lt;/strong&gt;. В 2025 benchmark средняя стоимость nonexecutive hire составляла &lt;strong&gt;$5,475&lt;/strong&gt;. CyberSeek также отмечал, что cybersecurity-роли в среднем закрываются дольше других технологических вакансий. И отсюда есть вываод. А какой? Читаем дальше.&lt;/p&gt;

&lt;p&gt;По итогу деление salary на 2,080 часов не показывает реальную стоимость приобретения и эксплуатации capability. Кроме того, оно предполагает, что каждый оплаченный час превращается в productive security work. Так не работает ни одна инженерная организация.&lt;/p&gt;

&lt;p&gt;Meetings, planning, documentation, internal projects, incidents, training, PTO, context switching и организационная нагрузка тоже потребляют время (а мы помним, что формальный трудовой день = 8 часов). Если компании нужен specialist на bounded project объемом 80 часов, full-time hire (найм в штат) не является покупкой этих самых 80 часов. Это решение о постоянной capacity, то есть перманентно, на долго, "на постоянку" с полноценной загрузкой от месяца к месяцу.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Почему consulting hour также не равен зарплатному часу
&lt;/h2&gt;

&lt;p&gt;На стороне provider действует та же логика. Консалтинговая компания не может продать клиентам каждый оплаченный час команды.&lt;/p&gt;

&lt;p&gt;Sales calls обычно не billable. Proposal writing не billable. Internal training, research, maintenance внутренних инструментов, accounting, contract review, marketing, productization, quality systems, bench time и проигранные presales также не billable. То есть время то тратишь, ресурсы тоже, ездишь к клиенту, ждешь его, а денег за это не спрашиваешь. Таков цикл продаж и реалии бизнеса.&lt;/p&gt;

&lt;p&gt;В 2026 SPI Professional Services Maturity Benchmark, который разбирает Certinia, &lt;strong&gt;billable utilization за 2025 год снизился до 66.4%&lt;/strong&gt;, минимального значения за историю benchmark. Это не целевой показатель Bulwark Advisory и не универсальная норма. Он показывает структурный факт: &lt;strong&gt;billable hour финансирует часть non-billable деятельности сервисного бизнеса&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ПО ИТОГУ:&lt;/strong&gt; из $150 billed hour нельзя сделать вывод, что $150 превращаются в зарплату или прибыль.&lt;/p&gt;

&lt;p&gt;Более же реалистичная формула выглядит так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Required Commercial Rate
≈ (Annual People Cost + Operating Overhead + Tools + Insurance + Non-Billable Cost + Risk + Target Operating Margin)
  / Expected Billable Hours
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Поэтому invoice rate и base salary rate - две разные экономические величины. И кто их понимает - тот профессионал (не в смысле только инженер, а в смысле Security как бизнеса).&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Актуальные рыночные ориентиры без попытки придумать одну "правильную цену"
&lt;/h2&gt;

&lt;p&gt;Цены в cybersecurity сильно зависят от geography, specialization, бренда, liability, urgency и scope. Публичные значения полезны как reference points, но не как тарифная сетка. В этом плане, например, США  - топ, ЕС - меньше, Африка - сам понимаешь:)&lt;/p&gt;

&lt;p&gt;На сентябрь 2026 года можно использовать несколько ориентиров:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Публичный ориентир&lt;/th&gt;
&lt;th&gt;Опубликованное значение&lt;/th&gt;
&lt;th&gt;Что этот показатель реально показывает&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Clutch Cybersecurity Pricing Guide&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$100-$149/hour&lt;/strong&gt; average provider cost на Clutch&lt;/td&gt;
&lt;td&gt;Широкий marketplace anchor для cybersecurity providers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;vCISO.com market overview&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;$3,000-$15,000/month&lt;/strong&gt; за vCISO retainers; &lt;strong&gt;$200-$400/hour&lt;/strong&gt; за hourly consulting&lt;/td&gt;
&lt;td&gt;Публичный commercial reference для senior/fractional leadership&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Atlant Security&lt;/td&gt;
&lt;td&gt;API pentest &lt;strong&gt;from $4,000&lt;/strong&gt;, web pentest &lt;strong&gt;from $5,000&lt;/strong&gt;, cloud pentest &lt;strong&gt;from $6,000&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Публичные starting prices специализированного security provider&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UK IT Jobs Watch&lt;/td&gt;
&lt;td&gt;Median Security Consultant contract rate &lt;strong&gt;£563/day&lt;/strong&gt; за 6 месяцев до 17 Sep 2026&lt;/td&gt;
&lt;td&gt;Сигнал contractor labor market, а не клиентская цена consulting company&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eurostat&lt;/td&gt;
&lt;td&gt;EU average whole-economy labor cost &lt;strong&gt;€34.9/hour&lt;/strong&gt; в 2025, euro area &lt;strong&gt;€38.2/hour&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Employer labor-cost baseline, а не ставка cybersecurity consulting&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Eurostat хорошо показывает, почему понятие "средняя европейская ставка" часто бессмысленно. В 2025 году whole-economy hourly labor cost в ЕС находился в диапазоне от &lt;strong&gt;€12.0 в Болгарии до €56.8 в Люксембурге&lt;/strong&gt;. Non-wage costs составляли &lt;strong&gt;24.8% total labor cost в EU&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;И, вот после этого geography накладывается на specialization. Затем на цену влияют liability, insurance, требования к data handling, contractual risk и уровень качества deliverable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffbthh5df0miu7dtfqho5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffbthh5df0miu7dtfqho5.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Публичные starting prices Bulwark Advisory - это planning anchors
&lt;/h2&gt;

&lt;p&gt;Bulwark Advisory публикует starting prices для сфокусированного baseline scope, а не прячет любое число за кнопкой "request a quote".&lt;/p&gt;

&lt;p&gt;Некоторые ориентиры 2026 года:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Публичный baseline&lt;/th&gt;
&lt;th&gt;Typical bounded delivery&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Product Security Baseline Sprint&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $3,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5-7 business days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product Security Program Assessment&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $4,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1-3 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secure Architecture &amp;amp; Threat Modeling&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $3,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3-10 business days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DevSecOps &amp;amp; CI/CD Security Assessment&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $4,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1-2 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS Security Assessment&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $3,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1-3 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kubernetes &amp;amp; Container Security&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $4,000&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1-2 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AppSec Toolchain Optimization&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $3,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1-2 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Metrics &amp;amp; Executive Reporting&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $2,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3-10 business days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fractional Product Security Leadership&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $4,000/month&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;recurring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web Application Security Testing&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $4,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;7-10 business days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Security Testing&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $3,500&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5-7 business days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud Penetration Testing&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;from $5,000&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;7-10 business days&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;У слова "from" здесь есть конкретный смысл. Это &lt;strong&gt;tightly bounded baseline scope с нормальным доступом к evidence и stakeholders&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Multi-product environment, неясный ownership, hard deadline, implementation-heavy work, большое количество cloud accounts, сложный Kubernetes estate, нестандартные legal requirements, travel или расширенный retest &lt;strong&gt;закономерно меняют оценку.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Final scope, assumptions, exclusions, timeline и fixed price &lt;strong&gt;фиксируются до начала delivery. Это 100% правило. Без исключений.&lt;/strong&gt; Так можно одновременно сохранить прозрачность и не делать вид, что все инфраструктуры одинаковы.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Модельный пример: что реально может находиться внутри assessment за $18K
&lt;/h2&gt;

&lt;p&gt;Следующий расчет является демонстрационной моделью. Это не Bulwark quote и не отраслевой benchmark. Предположим, компании нужен authenticated web/API security assessment customer-facing SaaS-продукта.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;одно web application;&lt;/li&gt;
&lt;li&gt;около 35 API endpoints;&lt;/li&gt;
&lt;li&gt;три значимых user roles;&lt;/li&gt;
&lt;li&gt;один staging environment;&lt;/li&gt;
&lt;li&gt;architecture walkthrough;&lt;/li&gt;
&lt;li&gt;manual authorization и business-logic testing;&lt;/li&gt;
&lt;li&gt;автоматизация там, где она полезна;&lt;/li&gt;
&lt;li&gt;exploit validation;&lt;/li&gt;
&lt;li&gt;executive и technical reporting;&lt;/li&gt;
&lt;li&gt;remediation readout;&lt;/li&gt;
&lt;li&gt;один bounded retest.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Effort model может выглядеть так:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Work package&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Modeled hours&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scoping, ROE, success criteria&lt;/td&gt;
&lt;td&gt;Principal&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture and evidence review&lt;/td&gt;
&lt;td&gt;Senior security engineer&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access validation and test setup&lt;/td&gt;
&lt;td&gt;Senior security engineer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test design and attack-path mapping&lt;/td&gt;
&lt;td&gt;Senior security engineer&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual web/API testing&lt;/td&gt;
&lt;td&gt;Senior security engineer&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool-assisted discovery and validation&lt;/td&gt;
&lt;td&gt;Senior security engineer&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Finding reproduction and de-duplication&lt;/td&gt;
&lt;td&gt;Senior security engineer&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical report and remediation guidance&lt;/td&gt;
&lt;td&gt;Senior security engineer&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Principal QA / challenge review&lt;/td&gt;
&lt;td&gt;Principal&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executive and engineering readout&lt;/td&gt;
&lt;td&gt;Principal&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bounded retest&lt;/td&gt;
&lt;td&gt;Senior security engineer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;104 hours&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Далее применяется условный role mix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Senior: 92 h × $150 = $13,800
Principal: 12 h × $220 = $2,640
Temporary tooling / infrastructure = $450
Modeled delivery basis = $16,890
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fixed commercial price около &lt;strong&gt;$18K-$19K&lt;/strong&gt; для такого модельного scope может быть абсолютно рациональным после учета разумного delivery uncertainty и fixed-fee risk. &lt;strong&gt;Это не rate card. Это демонстрация происхождения числа.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NIST разделяет penetration testing как минимум на planning, discovery, attack и reporting. OWASP еще прямее отмечает, что** technical testing - только половина assessment process.** Нормальный проект должен превратить &lt;strong&gt;evidence в результат,&lt;/strong&gt; который developer способен воспроизвести, manager способен приоритизировать, а бизнес способен использовать в решении. &lt;strong&gt;На это требуется экспертное время.&lt;/strong&gt; А время, как мы знаем, деньги. А время = это твоя жизнь. И если ты в найме, то как раз за время и продаешь себя. Так что "время" это фундаментальная категория.&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Client-side effort в том же сценарии
&lt;/h2&gt;

&lt;p&gt;Со стороны клиента также может понадобиться:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Client activity&lt;/th&gt;
&lt;th&gt;Modeled internal hours&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Engineering setup, test users, environment checks&lt;/td&gt;
&lt;td&gt;6-10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPN / allowlisting / access support&lt;/td&gt;
&lt;td&gt;2-4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture и threat-context interviews&lt;/td&gt;
&lt;td&gt;3-5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security / PM coordination&lt;/td&gt;
&lt;td&gt;3-5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Finding clarification и retest support&lt;/td&gt;
&lt;td&gt;4-8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total client-side effort&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;18-32 hours&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Именно поэтому хороший scoping имеет экономическую ценность еще до тестирования. Если provider способен заранее сформулировать evidence requests, пакетно провести интервью, быстро настроить доступы, не задавать повторно одни и те же вопросы и выдавать воспроизводимые findings, клиент экономит внутреннее engineering time. Эта экономия &lt;strong&gt;&lt;em&gt;редко появляется в invoice, но является частью качества услуги.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  11. Senior rate против junior rate: правильная формула
&lt;/h2&gt;

&lt;p&gt;Высокий hourly rate не означает дорогой результат. Единица измерения должна быть не &lt;strong&gt;cost per hour&lt;/strong&gt;, а скорее &lt;strong&gt;cost per accepted result&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Для двух специалистов, которые должны выдать сопоставимое по качеству решение:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Senior Cost = Senior Rate × Senior Hours
Junior Cost = Junior Rate × Junior Hours + Review + Rework + Delay Cost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Если пока убрать review и rework, senior оказывается дешевле, когда:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Senior Hours / Junior Hours &amp;lt; Junior Rate / Senior Rate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Например:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;senior rate: $200/hour;&lt;/li&gt;
&lt;li&gt;junior rate: $80/hour;&lt;/li&gt;
&lt;li&gt;senior стоит по rate в 2.5 раза дороже.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Но по чистому labor senior уже экономически выгоднее, если ему требуется менее 40% времени junior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Модель:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Senior: 24 h × $200 = $4,800
Junior: 60 h × $80 = $4,800
+ Senior QA: 8 h × $200 = $1,600
Total junior-led delivery = $6,400
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Низкий hourly rate дал более дорогой outcome. Теперь крайний sensitivity example. Senior rate выше в 5 раз, но тот же приемлемый результат получается в 10 раз быстрее.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Senior = 5R × H/10 = 0.5RH
Junior = R × H = 1.0RH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Даже здесь senior обходится на 50% дешевле до учета rework, ошибок, management overhead и delay. Это не означает, что senior должен выполнять все задачи. Есть огромное количество repeatable work, где junior, analyst, automation workflow или managed service экономически правильнее.&lt;/p&gt;

&lt;p&gt;Вывод же здесь несколько другой:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hourly rate - плохой procurement metric, когда productivity, judgment, error rate и review burden заметно различаются.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  12. Senior expertise не должна применяться ко всему подряд
&lt;/h2&gt;

&lt;p&gt;Прозрачность означает также отказ от ситуации, когда principal-level expertise оплачивается за commodity work, где она не нужна.&lt;/p&gt;

&lt;p&gt;Экономичный role mix может выглядеть так:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Тип работы&lt;/th&gt;
&lt;th&gt;Рациональная модель&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Architecture judgment, risk acceptance support&lt;/td&gt;
&lt;td&gt;Principal / senior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex authorization logic testing&lt;/td&gt;
&lt;td&gt;Senior specialist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Threat modeling facilitation&lt;/td&gt;
&lt;td&gt;Senior / principal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard evidence collection&lt;/td&gt;
&lt;td&gt;Analyst / automation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repeatable scanning&lt;/td&gt;
&lt;td&gt;Automation / platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Initial finding normalization&lt;/td&gt;
&lt;td&gt;Analyst / automation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High-impact finding validation&lt;/td&gt;
&lt;td&gt;Senior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executive translation and prioritization&lt;/td&gt;
&lt;td&gt;Principal / senior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Continuous commodity monitoring&lt;/td&gt;
&lt;td&gt;Managed service, если оправдано&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Именно поэтому productized services часто экономически эффективнее completely bespoke delivery. И важно понимать, что Reusable checklists, evidence requests, templates, scripts, dashboards и report structures уменьшают low-value manual effort. Они не заменяют экспертное judgment. Они концентрируют экспертное время там, где оно действительно нужно.&lt;/p&gt;




&lt;h2&gt;
  
  
  13. Fixed fee, T&amp;amp;M, retainer, outstaffing, MSSP или full-time hire?
&lt;/h2&gt;

&lt;p&gt;Универсально лучшей коммерческой модели не существует. Все зависит от формы спроса на capability.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Модель&lt;/th&gt;
&lt;th&gt;Где работает лучше всего&lt;/th&gt;
&lt;th&gt;Экономическое преимущество&lt;/th&gt;
&lt;th&gt;Ограничение&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fixed-scope project&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bounded assessment, architecture review, pentest, roadmap&lt;/td&gt;
&lt;td&gt;Predictable budget, ориентация на deliverable&lt;/td&gt;
&lt;td&gt;Требует качественного scoping&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Time &amp;amp; Materials&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Discovery-heavy или неопределенная engineering work&lt;/td&gt;
&lt;td&gt;Гибкость при изменении реальности&lt;/td&gt;
&lt;td&gt;Больше duration risk у клиента&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Retainer / fractional leadership&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Регулярные senior decisions без full-time потребности&lt;/td&gt;
&lt;td&gt;Senior judgment на частичной capacity&lt;/td&gt;
&lt;td&gt;Плохо подходит для постоянной hands-on execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Outstaffing / contractor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Embedded capacity внутри client backlog&lt;/td&gt;
&lt;td&gt;Быстрое расширение capacity&lt;/td&gt;
&lt;td&gt;Management и prioritization остаются у клиента&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Managed service / MSSP / MDR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Repeatable continuous operations&lt;/td&gt;
&lt;td&gt;Масштаб, coverage, operational leverage&lt;/td&gt;
&lt;td&gt;Меньше product-specific context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Full-time hire&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Стабильная постоянная workload и ownership&lt;/td&gt;
&lt;td&gt;Глубокий контекст, долгосрочное ownership&lt;/td&gt;
&lt;td&gt;Hiring time, fixed annual commitment, utilization risk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tooling-only&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Массовое repeatable detection при уже выстроенном workflow&lt;/td&gt;
&lt;td&gt;Automation и scale&lt;/td&gt;
&lt;td&gt;Tool output не равен risk judgment и remediation ownership&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Вопрос не должен звучать как "consultant или employee?" Гораздо полезнее будет узнать:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Как выглядит спрос, насколько он постоянный и какая operating model покупает нужный outcome с минимальным waste?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  14. Простой break-even для consulting против найма
&lt;/h2&gt;

&lt;p&gt;Предположим, компании нужна senior security capability для bounded project и небольшого follow-up. Если использовать BLS median wage только как отправную точку, нормализованный loaded compensation получился примерно &lt;strong&gt;$185K/year&lt;/strong&gt;. Для специалиста верхнего диапазона эта цифра легко становится заметно выше.&lt;/p&gt;

&lt;p&gt;Упрощенная in-house модель:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Annualized In-House Cost
= Loaded Compensation
+ Recruiting
+ Tooling
+ Equipment
+ Training
+ Management Overhead
+ Vacancy / Onboarding Cost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;External specialist:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;External Specialist Cost
= Project / Retainer Fees
+ Client Coordination Cost
+ Pass-Through Expenses
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Если организации ежегодно требуется 1,400-1,700 часов постоянного security ownership, full-time hire может оказаться очевидным решением. Если нужен 150-hour architecture review, 100-hour assessment или временный senior decision-maker на переходный период, permanent hire может оказаться экономически бессмысленным. Не потому, что сотрудники менее эффективны. Причина проще: &lt;strong&gt;fixed capacity слишком дорога при intermittent demand&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;НО! И обратное также верно.&lt;/strong&gt; Если компания годами покупает по 160 consulting hours каждый месяц, стоит проверить, не пора ли часть capability перенести in-house. Честный консультант должен быть способен это сказать.&lt;/p&gt;




&lt;h2&gt;
  
  
  15. Tooling является альтернативой только тогда, когда проблема действительно решается tooling
&lt;/h2&gt;

&lt;p&gt;Частый вопрос: "Зачем платить за assessment, если scanner subscription стоит дешевле?"&lt;/p&gt;

&lt;p&gt;Иногда это абсолютно правильный вопрос. Если задача состоит в повторяемом detection известных vulnerability classes в большом масштабе, automation может быть лучшей инвестицией.&lt;/p&gt;

&lt;p&gt;Но scanner сам по себе не дает:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;architecture context;&lt;/li&gt;
&lt;li&gt;business-logic testing;&lt;/li&gt;
&lt;li&gt;сложный authorization analysis;&lt;/li&gt;
&lt;li&gt;exploitability validation;&lt;/li&gt;
&lt;li&gt;finding de-duplication между несколькими tools;&lt;/li&gt;
&lt;li&gt;business impact translation;&lt;/li&gt;
&lt;li&gt;prioritization с учетом продукта;&lt;/li&gt;
&lt;li&gt;ownership decisions;&lt;/li&gt;
&lt;li&gt;remediation design;&lt;/li&gt;
&lt;li&gt;executive communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OWASP отдельно рассматривает source review, penetration testing и automated SAST/DAST/SCA именно потому, что эти методы решают разные части задачи.&lt;/p&gt;

&lt;p&gt;Корректная модель не "human или tool". Она выглядит так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Best Delivery Cost
= Automation for Repeatable Work
+ Human Judgment for Ambiguous / High-Context Work
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Чем больше первой категории безопасно автоматизируется, тем больше senior time остается для второй. Это выгодно обеим сторонам. Profit!&lt;/p&gt;




&lt;h2&gt;
  
  
  16. Value cross-check: Security-проект вообще стоит своих денег?
&lt;/h2&gt;

&lt;p&gt;Transparent pricing не означает, что любой security project нужно покупать. Некоторые покупать не нужно.&lt;/p&gt;

&lt;p&gt;Control может быть технически правильным и экономически неоправданным. Compliance activity может быть реальной, но преждевременной. Tool может быть хорошим, но дублирующим. Assessment может быть слишком широким для решения, которое бизнес пытается принять. &lt;strong&gt;Поэтому цена должна проходить value cross-check.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Упрощенно:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Security Value
≈ Expected Loss Reduced
+ Engineering Time Recovered
+ Release Delay Avoided
+ Revenue / Procurement Enabled
+ Tooling or Operating Cost Removed
- Implementation and Remediation Cost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Для risk reduction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Expected Loss Reduction
= (Probability_before × Impact_before)
- (Probability_after × Impact_after)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Это scenario analysis, а не попытка предсказать будущее.&lt;/p&gt;

&lt;p&gt;Probability и impact обычно неопределенны, поэтому range часто честнее одной красивой цифры.&lt;/p&gt;

&lt;p&gt;Assessment за $15K, который позволяет убрать $80K duplicated annual tooling, сокращает recurring release delays и дает рабочую control model, экономически совершенно не равен другому assessment за $15K, после которого остается PDF, который никто не использует.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Invoice одинаковый. Value разный.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Security value появляется только тогда, когда результат меняет решение, control, engineering behavior или material risk.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  17. Что бизнес должен видеть в прозрачном proposal
&lt;/h2&gt;

&lt;p&gt;Нормальное предложение делает экономику проверяемой, не превращая proposal в публикацию внутренней бухгалтерии provider.&lt;/p&gt;

&lt;p&gt;Минимально должны быть понятны следующие вещи:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Что входит в scope?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Что явно находится out of scope?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какие deliverables включены?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;От каких assumptions зависит price?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какой access и preparation нужны от клиента?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какой delivery window?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Включен ли retest?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Что происходит при scope change?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Travel, tooling, infrastructure и third-party costs включены или pass-through?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Какие senior roles отвечают за technical quality и final judgment?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Как выглядит acceptance?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Что происходит после выдачи findings?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Для fixed-scope engagement ответ не должен быть: "мы потратили больше часов, поэтому счет вырос". Если scope не изменился, а provider ошибся в estimate, это в нормальной fixed-fee модели его estimation risk.&lt;/p&gt;

&lt;p&gt;Если клиент добавил три applications, два cloud accounts, новые roles или implementation work, это уже scope change. Он оформляется до выполнения дополнительной работы. Так защищаются обе стороны. Это нормально. Это бизнес, это Profit для всех участников.&lt;/p&gt;




&lt;h2&gt;
  
  
  18. Pricing anti-patterns
&lt;/h2&gt;

&lt;p&gt;Дорогой quote не обязательно нечестный. Дешевый quote не обязательно выгодный. Есть несколько моделей, на которые стоит смотреть особенно внимательно.&lt;/p&gt;

&lt;h3&gt;
  
  
  Senior rate, junior delivery
&lt;/h3&gt;

&lt;p&gt;В proposal продается principal-level expertise, но большая часть delivery незаметно уходит inexperienced staff без соответствующей корректировки economics и QA.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scanner pass-through под видом consulting
&lt;/h3&gt;

&lt;p&gt;Запускается стандартный tool, raw output немного форматируется, а клиент платит за "expert assessment" без meaningful validation и prioritization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Искусственно низкий entry price
&lt;/h3&gt;

&lt;p&gt;Публичный "from" невозможно получить ни при каком реалистичном scope. Он нужен только как lead magnet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hidden coordination fees
&lt;/h3&gt;

&lt;p&gt;PM, reporting, calls, retesting или базовый QA не включены, а после старта превращаются в доплаты.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overstaffed delivery
&lt;/h3&gt;

&lt;p&gt;Несколько людей присутствуют на одних и тех же встречах или многократно проверяют одну работу без понятной value, а buyer финансирует внутреннюю неэффективность provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  Senior занимается analyst work
&lt;/h3&gt;

&lt;p&gt;Обратная ошибка. Дорогая expertise расходуется на data collection, formatting и repeatable checks, которые можно автоматизировать или делегировать.&lt;/p&gt;

&lt;h3&gt;
  
  
  Margin спрятан в ненужном scope
&lt;/h3&gt;

&lt;p&gt;Вместо честной цены небольшой задачи engagement расширяется только для того, чтобы достичь target contract value.&lt;/p&gt;

&lt;h3&gt;
  
  
  "Compliance требует" без applicability analysis
&lt;/h3&gt;

&lt;p&gt;Controls, audits или tools продаются как mandatory до проверки реальной contractual или regulatory applicability.&lt;/p&gt;

&lt;p&gt;А какой из всего этого вывод? ВОТ ОН: &lt;strong&gt;Transparent pricing снижает риск всех этих сценариев.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  19. Практическая модель Bulwark Advisory
&lt;/h2&gt;

&lt;p&gt;Процесс намеренно выглядит просто. Это преимущество, а не недостаток.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Scope
&lt;/h3&gt;

&lt;p&gt;Targets, evidence, deliverables, assumptions, exclusions, authorization, success criteria и client dependencies фиксируются до оценки.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Decompose
&lt;/h3&gt;

&lt;p&gt;Проект разбивается на work packages и measurable scope units.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Estimate
&lt;/h3&gt;

&lt;p&gt;Используются realistic effort ranges, основанные на прошлой delivery, complexity и качестве access.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Role mix
&lt;/h3&gt;

&lt;p&gt;Senior/principal time резервируется для judgment-heavy work. Repeatable work уходит в automation или lower-cost execution там, где это не снижает качество.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Direct costs
&lt;/h3&gt;

&lt;p&gt;Tooling, temporary cloud infrastructure, travel, contractor support и special data-handling requirements попадают в модель явно.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. QA и reporting
&lt;/h3&gt;

&lt;p&gt;Это часть продукта, а не бесплатная административная надстройка.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Fixed-scope risk
&lt;/h3&gt;

&lt;p&gt;Fixed fee переносит разумный estimation risk на provider. Этот риск должен быть учтен в цене, а не автоматически перевыставлен клиенту как дополнительные часы.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Value sanity check
&lt;/h3&gt;

&lt;p&gt;Если outcome не оправдывает cost, нужно уменьшить scope, сменить delivery model или не продавать работу.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Confirm in writing
&lt;/h3&gt;

&lt;p&gt;Final scope, timeline, price, assumptions и exclusions попадают в proposal / SOW / ROE в зависимости от услуги.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Scope change только явно
&lt;/h3&gt;

&lt;p&gt;Никаких surprise hourly overages. Material expansion сначала оформляется как change order, а уже потом выполняется.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Так price становится объяснимым, а не произвольным.&lt;/strong&gt; Понятные условия = адекватное доверие, взаимовыгодное сотрудничество = контракт.&lt;/p&gt;




&lt;h2&gt;
  
  
  Заключение: задача не в том, чтобы сделать Security дешевым
&lt;/h2&gt;

&lt;p&gt;Качественная cybersecurity expertise действительно может стоить дорого. Senior expertise формируется годами через production incidents, architecture decisions, неудачные подходы, testing, research, certifications, code, cloud environments, pipelines, investigations, reports, customer conversations и сложные tradeoffs.&lt;/p&gt;

&lt;p&gt;Но экономическая ценность опыта появляется только тогда, когда он снижает стоимость достижения правильного результата. Высокий rate с небольшим waste может быть дешевле низкого rate с большим количеством часов, слабым judgment, rework и management overhead.&lt;/p&gt;

&lt;p&gt;Consultant может быть дешевле hire, если demand временный.&lt;br&gt;
Hire может быть дешевле consultant, если demand постоянный.&lt;br&gt;
Managed service может выиграть у обоих для repeatable 24x7 operations.&lt;br&gt;
Automation может быть выгоднее всех для deterministic repetitive work.&lt;/p&gt;

&lt;p&gt;А иногда экономически правильное решение - &lt;strong&gt;вообще не покупать конкретную Security-услугу&lt;/strong&gt;. Это принципиальный момент.&lt;/p&gt;

&lt;p&gt;Transparent pricing не обещает, что любые затраты на security имеют положительный ROI. Он делает assumptions достаточно видимыми, чтобы это можно было проверить.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Цель не в максимизации Security spend. Цель в покупке правильного количества квалифицированного judgment, engineering effort и operating capability под тот риск и business outcome, которые реально существуют.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для Bulwark Advisory именно это лежит в основе pricing model: ясный scope, понятные assumptions, senior ownership, right-sized delivery и отсутствие искусственно созданной работы ради более крупного invoice.&lt;/p&gt;

&lt;p&gt;Security должна быть достаточно измеримой, чтобы ее можно было оспаривать. Pricing тоже.&lt;/p&gt;




&lt;h2&gt;
  
  
  Источники и рыночные ориентиры
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;U.S. Bureau of Labor Statistics, &lt;strong&gt;Information Security Analysts&lt;/strong&gt;, May 2025 wage data: &lt;a href="https://www.bls.gov/ooh/computer-and-information-technology/information-security-analysts.htm" rel="noopener noreferrer"&gt;https://www.bls.gov/ooh/computer-and-information-technology/information-security-analysts.htm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;U.S. Bureau of Labor Statistics, &lt;strong&gt;Employer Costs for Employee Compensation&lt;/strong&gt;, March/June 2026: &lt;a href="https://www.bls.gov/ecec/factsheets/compensation-percentile-estimates.htm" rel="noopener noreferrer"&gt;https://www.bls.gov/ecec/factsheets/compensation-percentile-estimates.htm&lt;/a&gt; и &lt;a href="https://www.bls.gov/news.release/ecec.nr0.htm" rel="noopener noreferrer"&gt;https://www.bls.gov/news.release/ecec.nr0.htm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SHRM, &lt;strong&gt;2026 Recruiting Executives Benchmarking&lt;/strong&gt;: &lt;a href="https://www.shrm.org/topics-tools/research/recruiting-benchmarking" rel="noopener noreferrer"&gt;https://www.shrm.org/topics-tools/research/recruiting-benchmarking&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SHRM, &lt;strong&gt;2025 Benchmarking Reports&lt;/strong&gt;, включая cost-per-hire: &lt;a href="https://www.shrm.org/about/press-room/shrm-releases-2025-benchmarking-reports--how-does-your-organizat" rel="noopener noreferrer"&gt;https://www.shrm.org/about/press-room/shrm-releases-2025-benchmarking-reports--how-does-your-organizat&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CyberSeek, U.S. cybersecurity workforce data: &lt;a href="https://www.cyberseek.org/" rel="noopener noreferrer"&gt;https://www.cyberseek.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Clutch, &lt;strong&gt;Cybersecurity Pricing Guide, September 2026&lt;/strong&gt;: &lt;a href="https://clutch.co/it-services/cybersecurity/pricing" rel="noopener noreferrer"&gt;https://clutch.co/it-services/cybersecurity/pricing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Atlant Security, public cybersecurity pricing: &lt;a href="https://atlantsecurity.com/pricing" rel="noopener noreferrer"&gt;https://atlantsecurity.com/pricing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;vCISO.com, public 2026 vCISO / consulting pricing overview: &lt;a href="https://www.vciso.com/vciso-cost" rel="noopener noreferrer"&gt;https://www.vciso.com/vciso-cost&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;IT Jobs Watch, &lt;strong&gt;UK Security Consultant contract rates&lt;/strong&gt;, September 2026: &lt;a href="https://www.itjobswatch.co.uk/contracts/uk/security%20consultant.do" rel="noopener noreferrer"&gt;https://www.itjobswatch.co.uk/contracts/uk/security%20consultant.do&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Eurostat, &lt;strong&gt;EU hourly labour costs in 2025&lt;/strong&gt;: &lt;a href="https://ec.europa.eu/eurostat/en/web/products-eurostat-news/w/ddn-20260331-2" rel="noopener noreferrer"&gt;https://ec.europa.eu/eurostat/en/web/products-eurostat-news/w/ddn-20260331-2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Certinia, summary of the &lt;strong&gt;2026 SPI Professional Services Maturity Benchmark&lt;/strong&gt;: &lt;a href="https://www.certinia.com/blog/analyzing-the-2026-spi-research-professional-services-maturity-benchmark-report/" rel="noopener noreferrer"&gt;https://www.certinia.com/blog/analyzing-the-2026-spi-research-professional-services-maturity-benchmark-report/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NIST SP 800-115, &lt;strong&gt;Technical Guide to Information Security Testing and Assessment&lt;/strong&gt;: &lt;a href="https://csrc.nist.gov/pubs/sp/800/115/final" rel="noopener noreferrer"&gt;https://csrc.nist.gov/pubs/sp/800/115/final&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OWASP, &lt;strong&gt;Web Security Testing Guide&lt;/strong&gt;: &lt;a href="https://wstg.owasp.org/latest/5-Reporting/01-Reporting_Structure/" rel="noopener noreferrer"&gt;https://wstg.owasp.org/latest/5-Reporting/01-Reporting_Structure/&lt;/a&gt; и &lt;a href="https://wstg.owasp.org/latest/2-Introduction/" rel="noopener noreferrer"&gt;https://wstg.owasp.org/latest/2-Introduction/&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Методологическая оговорка (DISCLAIMER)
&lt;/h3&gt;

&lt;p&gt;Все project calculations в статье являются illustrative planning models. Это не заявления об универсальной отраслевой трудоемкости, фактических счетах клиентов или гарантированном ROI. Реальная цена зависит от scope, access, complexity, timeline, geography, contractual requirements, third-party cost и delivery risk.&lt;/p&gt;

</description>
      <category>appsec</category>
      <category>devsecops</category>
      <category>cybersecurity</category>
      <category>productsecurity</category>
    </item>
    <item>
      <title>Технический английский для security engineer: База о том как писать, говорить и проходить интервью</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Sun, 13 Sep 2026 22:00:00 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/tiekhnichieskii-anghliiskii-dlia-security-engineer-baza-o-tom-kak-pisat-ghovorit-i-prokhodit-intierviu-3a58</link>
      <guid>https://dev.to/ivan-piskunov/tiekhnichieskii-anghliiskii-dlia-security-engineer-baza-o-tom-kak-pisat-ghovorit-i-prokhodit-intierviu-3a58</guid>
      <description>&lt;h3&gt;
  
  
  Preview
&lt;/h3&gt;

&lt;p&gt;Hey, you'all &lt;/p&gt;

&lt;p&gt;Не секрет, что у многих русскоязычных IT/security-специалистов (РФ, СНГ) английский ассоциируется с чем-то огромным и неприятным: &lt;em&gt;времена, артикли, неправильные глаголы, идеальное произношение, «надо сначала подтянуть уровень, а потом уже пробовать».&lt;/em&gt; И так по кругу, до бесконечности: их идеал — недостижим, а реальный же английский — это инструмент, который нужен уже сегодня, а не завтра. Просто интсрумет, просто еще один скилл что бы жить полноценно.&lt;/p&gt;

&lt;p&gt;На практике в международной команде всё намного приземлённее. Тебе не нужно сначала стать филологом. Тебе нужно уметь делать вот это базовые рабочие вещи:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;написать status update;&lt;/li&gt;
&lt;li&gt;уточнить scope;&lt;/li&gt;
&lt;li&gt;попросить доступ;&lt;/li&gt;
&lt;li&gt;объяснить finding;&lt;/li&gt;
&lt;li&gt;описать risk и impact;&lt;/li&gt;
&lt;li&gt;не звучать грубо в Slack;&lt;/li&gt;
&lt;li&gt;не потеряться на митинге;&lt;/li&gt;
&lt;li&gt;пройти HR screening;&lt;/li&gt;
&lt;li&gt;рассказать о себе на интервью;&lt;/li&gt;
&lt;li&gt;задать нормальный вопрос, когда что-то непонятно.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это другой подход. Не «выучить весь английский», а собрать рабочий набор фраз, сценариев и паттернов.&lt;/p&gt;

&lt;p&gt;Я сам долго воспринимал английский как школьно-университетский предмет: слова, тексты, упражнения, оценки. Но реальная рабочая коммуникация — созвоны, письма, security reports, американские рекрутеры, обсуждение findings с engineering-командами — быстро показывает, что язык нужен не «для галочки». Английский — обязательный поинт для работы в иностранной компании, новые возможности для нетворкинга, опора в путешествиях и релокейте, документация в оригинале и не только. Как же его освоить быстро и эффективно? - об этом и перетрем в нашей сегодняшней статье.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Английский в IT — это рабочий интерфейс. Через него ты объясняешь задачи, риски, решения и собственную ценность.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2nbl1cf3y0s38d10bq0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2nbl1cf3y0s38d10bq0j.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Главная проблема: люди знают термины, но не умеют ими работать
&lt;/h2&gt;

&lt;p&gt;У русскоязычных специалистов часто проблема не в том, что они «совсем не знают английский». Часто картина такая:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;читают документацию, но боятся писать;&lt;/li&gt;
&lt;li&gt;знают слова &lt;code&gt;vulnerability&lt;/code&gt;, &lt;code&gt;endpoint&lt;/code&gt;, &lt;code&gt;credentials&lt;/code&gt;, но не могут объяснить &lt;code&gt;impact&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;переводят русские фразы буквально/дословно;&lt;/li&gt;
&lt;li&gt;звучат резче (грубовато для носителя), чем хотели;&lt;/li&gt;
&lt;li&gt;на митингах молчат, потому что боятся ошибиться или жуют «кашу»;&lt;/li&gt;
&lt;li&gt;в интервью отвечают либо слишком коротко, либо слишком хаотично;&lt;/li&gt;
&lt;li&gt;пишут отчёты языком Google Translate;&lt;/li&gt;
&lt;li&gt;знают инструмент/фреймворк, но не могут описать результат своей работы.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;В security это особенно заметно. Мы часто говорим о неприятных вещах: баги, риски, инциденты, дедлайны, ownership, remediation, false positives, blockers.Если написать слишком резко — разработчики услышат обвинение. Если написать слишком размыто — никто не поймёт, что делать дальше.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Хороший technical English — это не сложный английский. Это понятный, спокойный и actionable English.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Рабочая формула: clarity, ownership, next steps
&lt;/h2&gt;

&lt;p&gt;В международной IT-команде ценят не красоту языка, а понятность. Хорошее сообщение обычно отвечает на три вопроса:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Что происходит?&lt;/li&gt;
&lt;li&gt;Кто владелец / от кого зависит следующий шаг?&lt;/li&gt;
&lt;li&gt;Что делаем дальше?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Плохо:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There is some problem with scanner.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Лучше:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The scanner cannot reach the staging endpoint because VPN access is missing. I’m checking with the platform team and will update the ticket today.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Почему лучше:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;есть конкретная проблема;&lt;/li&gt;
&lt;li&gt;есть причина;&lt;/li&gt;
&lt;li&gt;есть dependency;&lt;/li&gt;
&lt;li&gt;есть следующий шаг;&lt;/li&gt;
&lt;li&gt;есть срок.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это и есть рабочий английский. Не надо писать сложно. Надо писать так, чтобы другой человек мог принять решение или выполнить действие.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Не надо учить «весь английский»
&lt;/h2&gt;

&lt;p&gt;Для старта в IT/security достаточно собрать рабочий минимум. Помним правило Парето? — 20% усилий дают покрытие 80% всех потребностей.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Что учить&lt;/th&gt;
&lt;th&gt;Минимум&lt;/th&gt;
&lt;th&gt;Что это даёт&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;General English&lt;/td&gt;
&lt;td&gt;1000–2000 частотных слов&lt;/td&gt;
&lt;td&gt;Понимать письма, чаты, интервью&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grammar&lt;/td&gt;
&lt;td&gt;Present / Past / Future + questions&lt;/td&gt;
&lt;td&gt;Объяснять статус, действия, планы&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security vocabulary&lt;/td&gt;
&lt;td&gt;300–400 терминов&lt;/td&gt;
&lt;td&gt;Читать findings, reports, tickets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patterns&lt;/td&gt;
&lt;td&gt;50–100 готовых фраз&lt;/td&gt;
&lt;td&gt;Писать и говорить без паники&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pronunciation&lt;/td&gt;
&lt;td&gt;10–20 сложных слов/звуков&lt;/td&gt;
&lt;td&gt;Быть понятным на звонках&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;A2–B1 уже можно превратить в рабочий инструмент&lt;/strong&gt;, если не пытаться говорить как профессор. Говорящий A2 на живом английском зачастую даст фору академическому B2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Базовые конструкции закрывают огромную часть задач:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Смысл&lt;/th&gt;
&lt;th&gt;Pattern&lt;/th&gt;
&lt;th&gt;Пример&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Что делаю сейчас&lt;/td&gt;
&lt;td&gt;&lt;code&gt;I’m working on…&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;I’m working on the remediation plan.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Что нашли&lt;/td&gt;
&lt;td&gt;&lt;code&gt;We found…&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;We found a logging gap yesterday.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Что показал сканер&lt;/td&gt;
&lt;td&gt;&lt;code&gt;The scan detected…&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The scan detected three medium-severity issues.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Что уже сделали&lt;/td&gt;
&lt;td&gt;&lt;code&gt;We have completed…&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;We have completed the access review.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Следующий шаг&lt;/td&gt;
&lt;td&gt;&lt;code&gt;The next step is…&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The next step is to validate the fix.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Блокер&lt;/td&gt;
&lt;td&gt;&lt;code&gt;I’m blocked by…&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;I’m blocked by missing VPN access.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Для новичка хорошая фраза:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I’m blocked by missing access.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;намного ценнее, чем сложная, но сломанная конструкция на пять строк.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Почему «русский стиль» в английском часто звучит грубо
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Русский рабочий стиль часто прямой:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Сделай сегодня &lt;em&gt;(приказной\давящий тон)&lt;/em&gt;. &lt;br&gt;
Почему ты это сделал?&lt;br&gt;
Это неправильно. Косяк!&lt;br&gt;
Вы задерживаете релиз. Харэ гнать свою безопаность, нам работать нужно! &lt;br&gt;
Пришли отчёт. До вечера&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;В английском такая прямота легко звучит как наезд. &lt;strong&gt;Нужно поступать мягче и профессиональнее.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Хотел сказать&lt;/th&gt;
&lt;th&gt;Слишком резко&lt;/th&gt;
&lt;th&gt;Лучше&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Сделай сегодня&lt;/td&gt;
&lt;td&gt;Do it today.&lt;/td&gt;
&lt;td&gt;Could you take a look at this today?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Это неправильно&lt;/td&gt;
&lt;td&gt;This is wrong.&lt;/td&gt;
&lt;td&gt;I think there may be an issue here.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Я не понял&lt;/td&gt;
&lt;td&gt;I don’t understand.&lt;/td&gt;
&lt;td&gt;Could you clarify this part for me?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Это не моя задача&lt;/td&gt;
&lt;td&gt;It’s not my task.&lt;/td&gt;
&lt;td&gt;I think this may be owned by another team.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ты задерживаешь релиз&lt;/td&gt;
&lt;td&gt;You are blocking the release.&lt;/td&gt;
&lt;td&gt;This dependency is currently blocking the release.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Смысл не исчезает. Просто фокус смещается с человека на проблему, риск или зависимость. Для security это критично. Если команда воспринимает тебя как человека, который приходит только обвинять и блокировать, с тобой быстро перестанут нормально взаимодействовать.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Don’t translate literally: типичные ошибки
&lt;/h2&gt;

&lt;p&gt;Одна из главных проблем — калька с русского. Смотрим внимательно.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Хотел сказать&lt;/th&gt;
&lt;th&gt;Неудачно&lt;/th&gt;
&lt;th&gt;Лучше&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Я согласен&lt;/td&gt;
&lt;td&gt;I am agree with you.&lt;/td&gt;
&lt;td&gt;I agree with you.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Я хочу уточнить&lt;/td&gt;
&lt;td&gt;I want to specify.&lt;/td&gt;
&lt;td&gt;I’d like to clarify.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;У меня есть сомнения&lt;/td&gt;
&lt;td&gt;I have doubts.&lt;/td&gt;
&lt;td&gt;I have some concerns.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Мы обсудили вопрос&lt;/td&gt;
&lt;td&gt;We discussed about this question.&lt;/td&gt;
&lt;td&gt;We discussed this issue.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Я участвовал в проекте&lt;/td&gt;
&lt;td&gt;I participated in the project.&lt;/td&gt;
&lt;td&gt;I worked on the project / I was involved in the project.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Я отвечал за безопасность&lt;/td&gt;
&lt;td&gt;I answered for security.&lt;/td&gt;
&lt;td&gt;I was responsible for security.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Сделал анализ уязвимостей&lt;/td&gt;
&lt;td&gt;I made vulnerability analysis.&lt;/td&gt;
&lt;td&gt;I performed a vulnerability assessment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Зайти на митинг&lt;/td&gt;
&lt;td&gt;Enter the meeting.&lt;/td&gt;
&lt;td&gt;Join the meeting / jump on the call.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Закрыть задачу&lt;/td&gt;
&lt;td&gt;Close the task.&lt;/td&gt;
&lt;td&gt;Close the ticket / mark the task as done.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Мини-правило:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Если русская фраза содержит «осуществить», «провести», «выполнить мероприятие», в английском почти всегда можно заменить это одним сильным глаголом: &lt;code&gt;perform&lt;/code&gt;, &lt;code&gt;run&lt;/code&gt;, &lt;code&gt;review&lt;/code&gt;, &lt;code&gt;validate&lt;/code&gt;, &lt;code&gt;monitor&lt;/code&gt;, &lt;code&gt;investigate&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;mitigate&lt;/code&gt;, &lt;code&gt;document&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Плохо:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Carry out monitoring of information security.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Лучше:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Monitor security events.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Плохо:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make analysis of vulnerabilities.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Лучше:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Perform a vulnerability assessment.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ну, думаю, общую суть ты уловил! Идём дальше.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Professional, not robotic
&lt;/h2&gt;

&lt;p&gt;Professional English — это не сухой бюрократический английский. Хороший рабочий стиль звучит спокойно, ясно и уважительно. Особенно когда вы пишете о риске.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Плохо:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is bad. You need to fix it immediately.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Лучше:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This may create a security gap because logging is incomplete. I’d recommend adding authentication and authorization logs before launch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Во втором варианте есть:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;причина;&lt;/li&gt;
&lt;li&gt;security impact;&lt;/li&gt;
&lt;li&gt;рекомендация;&lt;/li&gt;
&lt;li&gt;контекст по сроку.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это не «мягкотелость». Это нормальная профессиональная коммуникация.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hedging: как говорить о риске
&lt;/h3&gt;

&lt;p&gt;В security нельзя всё превращать в &lt;code&gt;critical disaster&lt;/code&gt;. Но и размывать проблему нельзя.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Полезные конструкции:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Фраза&lt;/th&gt;
&lt;th&gt;Когда использовать&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;This may introduce additional risk.&lt;/td&gt;
&lt;td&gt;Когда риск возможен, но не доказан окончательно&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;My main concern is…&lt;/td&gt;
&lt;td&gt;Когда нужно объяснить основную проблему&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;From a security perspective…&lt;/td&gt;
&lt;td&gt;Когда важно отделить security view от product/business view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I wouldn’t call it critical yet, but it’s worth reviewing.&lt;/td&gt;
&lt;td&gt;Когда не хочется overclaim&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The risk seems manageable if we add compensating controls.&lt;/td&gt;
&lt;td&gt;Когда есть временное решение&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I’d recommend treating this as high priority.&lt;/td&gt;
&lt;td&gt;Когда нужно аккуратно поднять важность&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Пример:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I see why we want to keep the timeline. My concern is that without auth logs, we may have a hard time investigating suspicious activity. One option might be to add a minimal logging control before launch and complete the full implementation after release.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Это хороший security tone: без драмы, но с понятным риском и вариантом решения.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flxr044po4i20k5j6dtww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flxr044po4i20k5j6dtww.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Email, Slack и Teams: коротко, по делу
&lt;/h2&gt;

&lt;p&gt;Email обычно строится так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;greeting → purpose → context → ask → deadline → closing&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Slack/Teams короче, но контекст всё равно нужен.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Плохо:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hi&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;И тишина, пока человек не ответит.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Лучше:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hey Alex, quick question when you have a minute. I’m reviewing the DAST findings and need to confirm who owns the staging API. Do you know the right owner?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Сразу понятно:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;кто пишет;&lt;/li&gt;
&lt;li&gt;зачем;&lt;/li&gt;
&lt;li&gt;по какой задаче;&lt;/li&gt;
&lt;li&gt;какой конкретный ask.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Полезные фразы для email
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Задача&lt;/th&gt;
&lt;th&gt;Фраза&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Сразу к делу&lt;/td&gt;
&lt;td&gt;I’m reaching out about the upcoming security review.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Уточнить ожидания&lt;/td&gt;
&lt;td&gt;Could you clarify what level of detail you expect in the report?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Уточнить срок&lt;/td&gt;
&lt;td&gt;Just to confirm, is the deadline still Friday, May 15?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Попросить контекст&lt;/td&gt;
&lt;td&gt;Could you share a bit more context on the business impact?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Сообщить о блокере&lt;/td&gt;
&lt;td&gt;We’re currently blocked by missing access to the staging environment.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Предложить следующий шаг&lt;/td&gt;
&lt;td&gt;The next step would be to validate the finding with the application owner.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Мягко не согласиться&lt;/td&gt;
&lt;td&gt;I see your point. My concern is that this may increase the attack surface.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Эскалировать аккуратно&lt;/td&gt;
&lt;td&gt;I’d like to flag this as a timeline risk so we can agree on the best path forward.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Шаблон: request access
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi [Name],

I’m working on [task/project] and need read-only access to [system/logs/repository] to complete the review. Could you please grant access or point me to the right owner?

Context: [one sentence explaining why].
Target date: [date].

Thanks,
[Your Name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Шаблон: status update
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi team,

Quick update on [project/review]:

Completed: [what is done]
In progress: [what you are doing now]
Blockers: [dependency, if any]
Next step: [specific action]
ETA: [date/time]

Please let me know if you see any gaps or concerns.

Thanks,
[Your Name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Slack/Teams: сухо vs нормально
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Сухо / грубо&lt;/th&gt;
&lt;th&gt;Лучше&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Send me the report.&lt;/td&gt;
&lt;td&gt;Could you send me the report when you get a chance?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Explain.&lt;/td&gt;
&lt;td&gt;Could you give me a bit more context?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Why did you do that?&lt;/td&gt;
&lt;td&gt;Could you walk me through the reasoning here?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fixed.&lt;/td&gt;
&lt;td&gt;Fixed — could you please verify on your side?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Not working.&lt;/td&gt;
&lt;td&gt;I’m still seeing the issue on my side.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  7. Meeting survival kit: как не теряться на созвонах
&lt;/h2&gt;

&lt;p&gt;Митинг — это не экзамен по английскому. Обычно он держится на простой структуре:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;goal → status → blocker → decision → next step&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Полезные фразы:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ситуация&lt;/th&gt;
&lt;th&gt;Фраза&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Открыть встречу&lt;/td&gt;
&lt;td&gt;Thanks everyone for joining. Let’s start with the goals for today.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Дать agenda&lt;/td&gt;
&lt;td&gt;We have three items on the agenda: scope, risks, and next steps.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Дать статус&lt;/td&gt;
&lt;td&gt;I completed the threat model draft and I’m waiting for feedback from the backend team.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Назвать blocker&lt;/td&gt;
&lt;td&gt;My main blocker is missing access to the production-like dataset.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Попросить помощь&lt;/td&gt;
&lt;td&gt;I’d appreciate your help validating whether this is a false positive.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Вернуть фокус&lt;/td&gt;
&lt;td&gt;That’s a good point. To stay on track, let’s park it and come back after the meeting.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Подвести итог&lt;/td&gt;
&lt;td&gt;To recap, we agreed on three action items.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Закрыть встречу&lt;/td&gt;
&lt;td&gt;Thanks everyone. I’ll send the notes and owners right after this call.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Если не расслышали:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sorry, I didn’t catch that. Could you repeat it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Если связь плохая, глюки сети, микрофона:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You’re breaking up a bit. Could you say that again?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Если нужно еще время что-то пофиксить\подготовиться:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Let me think about it for a second.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Если не знаете ответ:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I don’t have the answer right now, but I can check and follow up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Лучше уточнить, чем молча согласиться и потом сделать не то.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Ask better questions: формула хорошего вопроса
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Плохой вопрос:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I have a problem with scanner.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Он слишком общий. Непонятно, что случилось, что уже проверили и какая помощь нужна.&lt;/p&gt;

&lt;p&gt;Хороший вопрос строится так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Context → Problem → What I tried → What I need&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Шаблон:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I’m working on [task]. I ran into [problem]. I already tried [steps]. Could you help me with [specific ask]?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Пример:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I’m having an issue with the scanner. It fails during authentication with a 401 error. I checked the token and network access, but the issue still happens. Could you help me verify the scanner configuration?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Другой пример:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I can’t access the staging logs. The VPN works, but Kibana returns a 403. Could you confirm whether my role includes read-only log access?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Ещё пример:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The scanner reports SQL injection on &lt;code&gt;/search&lt;/code&gt;, but I can’t reproduce it manually. Could you help me validate whether this is a false positive?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Такой вопрос показывает, что человек не просто «просит помочь», а уже провёл первичную диагностику.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Security communication: finding → risk → remediation
&lt;/h2&gt;

&lt;p&gt;Security-коммуникация должна быть &lt;strong&gt;calm, evidence-based and actionable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Не надо писать:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Всё плохо, это опасно, срочно чинить.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Лучше:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We identified a high-severity finding related to broken access control. The issue appears exploitable by authenticated users with a specific role. Recommended remediation: enforce object-level authorization on the server side. Validation plan: retest with two users from different tenants.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Хороший security report block отвечает на вопросы:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;что нашли;&lt;/li&gt;
&lt;li&gt;где нашли;&lt;/li&gt;
&lt;li&gt;насколько серьёзно;&lt;/li&gt;
&lt;li&gt;какой impact;&lt;/li&gt;
&lt;li&gt;какие evidence;&lt;/li&gt;
&lt;li&gt;что делать;&lt;/li&gt;
&lt;li&gt;кто owner;&lt;/li&gt;
&lt;li&gt;как проверим fix.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security report block
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Блок&lt;/th&gt;
&lt;th&gt;Формула&lt;/th&gt;
&lt;th&gt;Пример&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Summary&lt;/td&gt;
&lt;td&gt;We identified [severity] [issue] in [component].&lt;/td&gt;
&lt;td&gt;We identified a high-severity access control issue in the admin API.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Impact&lt;/td&gt;
&lt;td&gt;This may allow [actor] to [impact].&lt;/td&gt;
&lt;td&gt;This may allow an authenticated user to access another tenant’s records.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence&lt;/td&gt;
&lt;td&gt;Evidence: [log/screenshot/request/response].&lt;/td&gt;
&lt;td&gt;Evidence: request ID 8f2a…, response includes another &lt;code&gt;tenant_id&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recommendation&lt;/td&gt;
&lt;td&gt;Recommended remediation: [specific action].&lt;/td&gt;
&lt;td&gt;Recommended remediation: enforce tenant-level authorization on the server side.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Owner/date&lt;/td&gt;
&lt;td&gt;Owner: [team]. Target date: [date].&lt;/td&gt;
&lt;td&gt;Owner: Backend Team. Target date: 2026-05-20.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Validation&lt;/td&gt;
&lt;td&gt;Validation plan: [how you will verify].&lt;/td&gt;
&lt;td&gt;Validation plan: retest with two users from different tenants.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Важно не overclaim.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Плохо:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is definitely exploitable by anyone.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Лучше:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Based on current evidence, the issue appears exploitable by authenticated users with [role]. Further validation is needed to confirm external exposure.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  10. Incident communication: факты вместо паники
&lt;/h2&gt;

&lt;p&gt;В incident communication важно не выглядеть так, будто вы либо скрываете проблему, либо разгоняете пожар.&lt;/p&gt;

&lt;p&gt;Нормальная структура:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;what happened → current status → impact → actions → next update&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Примеры:&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Initial update
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;We are currently investigating suspicious activity affecting [system]. At this stage, we do not have evidence of data exfiltration, but we are validating logs and access patterns.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Containment
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;We have isolated the affected host and revoked the potentially compromised credentials.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Executive update
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The issue is contained. Business impact appears limited to [scope]. We will provide a full post-incident report after log review is complete.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Follow-up
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;We identified the likely root cause and are implementing preventive controls.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Security — это не только найти проблему. Это ещё и объяснить её так, чтобы команда могла принять решение.&lt;/p&gt;




&lt;h2&gt;
  
  
  11. Severity, priority, risk: не смешивайте всё в одно слово
&lt;/h2&gt;

&lt;p&gt;Русскоязычные специалисты часто используют «критично», «приоритетно», «опасно» почти как синонимы.&lt;/p&gt;

&lt;p&gt;В рабочем английском лучше разделять:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Термин&lt;/th&gt;
&lt;th&gt;Смысл&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Severity&lt;/td&gt;
&lt;td&gt;Насколько серьёзна уязвимость технически&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Priority&lt;/td&gt;
&lt;td&gt;Насколько срочно это чинить именно сейчас&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Risk&lt;/td&gt;
&lt;td&gt;Likelihood + impact в конкретном business context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Impact&lt;/td&gt;
&lt;td&gt;Что может произойти, если риск реализуется&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Likelihood&lt;/td&gt;
&lt;td&gt;Насколько вероятно, что риск реализуется&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mitigation&lt;/td&gt;
&lt;td&gt;Как снизить риск&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remediation&lt;/td&gt;
&lt;td&gt;Как устранить проблему полностью&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compensating control&lt;/td&gt;
&lt;td&gt;Временная мера, снижающая риск&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Хорошая фраза:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The technical severity is high, but the business priority may be medium because the affected system is internal and access is restricted.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Она звучит зрелее, чем просто:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It is critical.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  12. Как объяснять техническое простыми словами
&lt;/h2&gt;

&lt;p&gt;Security-инженер часто говорит не только с security-инженерами. Нужно уметь переводить technical detail в decision-ready language.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Технически&lt;/th&gt;
&lt;th&gt;Для бизнеса / менеджмента&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;The token is exposed in the client-side code.&lt;/td&gt;
&lt;td&gt;A secret key is visible to users, which could allow unauthorized access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The endpoint lacks authorization checks.&lt;/td&gt;
&lt;td&gt;Users may access data they are not supposed to see.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The dependency has a known CVE.&lt;/td&gt;
&lt;td&gt;We are using a component with a publicly known security issue.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The S3 bucket is public.&lt;/td&gt;
&lt;td&gt;Sensitive files may be accessible from the internet.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MFA is not enforced.&lt;/td&gt;
&lt;td&gt;Accounts are easier to compromise if passwords are stolen.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Это не «упрощение для глупых». Это часть работы: объяснить риск так, чтобы с ним можно было что-то сделать.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe1jpjshb3rkev66b02p7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe1jpjshb3rkev66b02p7.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  13. Jira, documentation и action plan
&lt;/h2&gt;

&lt;p&gt;Документация в security должна быть понятной для инженера, менеджера и аудитора.&lt;/p&gt;

&lt;p&gt;Хороший документ отвечает на вопросы:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;what, why, impact, owner, deadline, evidence, validation&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Пример action plan:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Finding: Missing object-level authorization
Risk: Users may access records from another tenant
Business impact: Potential data exposure between tenants
Recommended action: Add tenant-level authorization checks on the server side
Owner: Backend Team
Target date: 2026-05-20
Dependency: Confirm affected endpoints
Validation: Security retest with users from different tenants
Status: In progress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Полезные глаголы для Jira и reports:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;investigate;&lt;/li&gt;
&lt;li&gt;validate;&lt;/li&gt;
&lt;li&gt;reproduce;&lt;/li&gt;
&lt;li&gt;confirm;&lt;/li&gt;
&lt;li&gt;mitigate;&lt;/li&gt;
&lt;li&gt;escalate;&lt;/li&gt;
&lt;li&gt;document.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Примеры:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Investigate repeated authentication failures.&lt;br&gt;
Validate whether this finding is reproducible.&lt;br&gt;
Reproduce the issue in staging.&lt;br&gt;
Mitigate the risk with a temporary control.&lt;br&gt;
Document the decision and risk acceptance.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  14. Interview English: не отвечайте как словарь
&lt;/h2&gt;

&lt;p&gt;На интервью проверяют не только английский. Проверяют, можете ли вы структурно объяснить опыт. Это важный этап где рекрутёр понимает стоит ли с тобой идти в processing дальше или нет.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Типичный процесс:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Этап&lt;/th&gt;
&lt;th&gt;Что проверяют&lt;/th&gt;
&lt;th&gt;Как отвечать&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Recruiter screening&lt;/td&gt;
&lt;td&gt;Опыт, мотивация, English, compensation, location, timeline&lt;/td&gt;
&lt;td&gt;Коротко, без глубоких технических деталей&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hiring manager&lt;/td&gt;
&lt;td&gt;Scope роли, ownership, прошлые проекты, maturity&lt;/td&gt;
&lt;td&gt;Показывать impact, приоритеты, decision-making&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical interview&lt;/td&gt;
&lt;td&gt;AppSec / Cloud / IR / DevSecOps / AD / etc.&lt;/td&gt;
&lt;td&gt;Думать вслух, уточнять assumptions, признавать неопределённость&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Behavioral / culture fit&lt;/td&gt;
&lt;td&gt;Collaboration, conflict, ambiguity&lt;/td&gt;
&lt;td&gt;Использовать STAR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Final / team fit&lt;/td&gt;
&lt;td&gt;Как будете работать с командой&lt;/td&gt;
&lt;td&gt;Задавать вопросы про process, expectations, success criteria&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Self-introduction formula
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Шаблон:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I’m a [role] with [X years / background] in [domain]. I mostly focus on [2-3 areas]. Recently, I worked on [project/result]. I’m now looking for a role where I can [value you bring].&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Пример:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I’m an application security engineer with a background in software development. I focus on threat modeling, secure code review, and vulnerability management. Recently, I helped improve remediation SLAs by building a risk-based triage process. I’m looking for a role where I can work closely with engineering teams and improve secure SDLC at scale.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Weak → Better → Strong
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Вопрос&lt;/th&gt;
&lt;th&gt;Weak&lt;/th&gt;
&lt;th&gt;Better&lt;/th&gt;
&lt;th&gt;Strong&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tell me about yourself&lt;/td&gt;
&lt;td&gt;I am security engineer. I worked with vulnerabilities and tools.&lt;/td&gt;
&lt;td&gt;I’m a cybersecurity specialist with experience in vulnerability management, application security, and security process improvement.&lt;/td&gt;
&lt;td&gt;I’m a cybersecurity specialist focused on helping engineering teams reduce real business risk. My experience includes AppSec reviews, remediation planning, and improving security processes across product teams.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How do you prioritize vulnerabilities?&lt;/td&gt;
&lt;td&gt;I use CVSS.&lt;/td&gt;
&lt;td&gt;I start with severity, exploitability, asset exposure, and business impact.&lt;/td&gt;
&lt;td&gt;I combine technical severity with business context: exposure, exploitability, data sensitivity, compensating controls, and release timelines.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How do you work with developers?&lt;/td&gt;
&lt;td&gt;I tell them what to fix.&lt;/td&gt;
&lt;td&gt;I explain the risk and recommend practical remediation steps.&lt;/td&gt;
&lt;td&gt;I try to be a partner, not a gatekeeper: I explain the risk, give clear examples, propose realistic fixes, and align on timelines.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tell me about a conflict&lt;/td&gt;
&lt;td&gt;We disagreed and I proved I was right.&lt;/td&gt;
&lt;td&gt;We disagreed on priority, so I shared risk context and we aligned on a plan.&lt;/td&gt;
&lt;td&gt;I listened to constraints, reframed the issue as business risk, proposed a compensating control, and we agreed on staged remediation.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Firs9489oo92aw7unc1sx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Firs9489oo92aw7unc1sx.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  15. Small talk и произношение: не идеально, а понятно
&lt;/h2&gt;

&lt;p&gt;Small talk — это не пустая болтовня. Это способ мягко войти в разговор и показать, что с вами комфортно работать. Такова традиция англоязычного мира. Да, это несколько не привычно для носителей славянкого этноса. Но ко вему можно адаптироваться. И вот, например, так.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Безопасные фразы:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How was your weekend?&lt;br&gt;
Hope your day is going well so far.&lt;br&gt;
Welcome back! Hope you had a chance to recharge.&lt;br&gt;
I’m still on my first coffee, so bear with me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;IT/security-specific:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How did the release go last night?&lt;br&gt;
Hope on-call wasn’t too rough this week.&lt;br&gt;
Any interesting findings from the latest review?&lt;br&gt;
Did the regression run finish cleanly?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Темы, которых лучше избегать: политика, религия, семейное положение, возраст, здоровье, иммиграционный статус, чужие зарплаты, войны, стереотипы о национальностях. С произношением цель простая: быть понятным, а не «убрать акцент».&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Русскоязычным специалистам чаще всего мешают:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Звук / ошибка&lt;/th&gt;
&lt;th&gt;Примеры&lt;/th&gt;
&lt;th&gt;На что обратить внимание&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;W vs V&lt;/td&gt;
&lt;td&gt;west / vest, vulnerability&lt;/td&gt;
&lt;td&gt;W — губы округляются; V — зубы касаются нижней губы&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;R&lt;/td&gt;
&lt;td&gt;risk, report, remediation&lt;/td&gt;
&lt;td&gt;American R не вибрирует&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TH&lt;/td&gt;
&lt;td&gt;threat, this, authentication&lt;/td&gt;
&lt;td&gt;Это не s/z и не t/d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;host, header, hardening&lt;/td&gt;
&lt;td&gt;Не пропускайте H&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stress&lt;/td&gt;
&lt;td&gt;vulnerability, analysis, incident&lt;/td&gt;
&lt;td&gt;Ударение часто важнее идеального акцента&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Слова, которые стоит отдельно потренировать:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vulnerability;&lt;/li&gt;
&lt;li&gt;credentials;&lt;/li&gt;
&lt;li&gt;phishing;&lt;/li&gt;
&lt;li&gt;breach;&lt;/li&gt;
&lt;li&gt;threat;&lt;/li&gt;
&lt;li&gt;audit;&lt;/li&gt;
&lt;li&gt;repository;&lt;/li&gt;
&lt;li&gt;authentication;&lt;/li&gt;
&lt;li&gt;authorization;&lt;/li&gt;
&lt;li&gt;cache;&lt;/li&gt;
&lt;li&gt;queue;&lt;/li&gt;
&lt;li&gt;suite.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  16. Практика: 10 минут в день — база которая тебя сделает
&lt;/h2&gt;

&lt;p&gt;Брошюры и таблицы бесполезны, если не превращать их в повторяемую практику. Учить придется, да. Повторять придется, никто не отменял. Ошибки в речи или письме будут, но с каждым разом все меньше и меньше. &lt;/p&gt;

&lt;p&gt;Например, вот тебе простой 7-дневный цикл:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;День&lt;/th&gt;
&lt;th&gt;Фокус&lt;/th&gt;
&lt;th&gt;Задание&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Day 1&lt;/td&gt;
&lt;td&gt;Self-intro&lt;/td&gt;
&lt;td&gt;Напишите 5 предложений о себе&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 2&lt;/td&gt;
&lt;td&gt;Status updates&lt;/td&gt;
&lt;td&gt;Сделайте 3 апдейта: completed / in progress / blocker / next step&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 3&lt;/td&gt;
&lt;td&gt;Email templates&lt;/td&gt;
&lt;td&gt;Напишите request access, follow-up, meeting recap&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 4&lt;/td&gt;
&lt;td&gt;Security findings&lt;/td&gt;
&lt;td&gt;Опишите один finding: summary, impact, evidence, remediation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 5&lt;/td&gt;
&lt;td&gt;Meetings&lt;/td&gt;
&lt;td&gt;Проговорите standup update и фразы “I’m blocked by…”, “Could you clarify…”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 6&lt;/td&gt;
&lt;td&gt;Interview&lt;/td&gt;
&lt;td&gt;Подготовьте 3 STAR stories: conflict, failure, ambiguity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Day 7&lt;/td&gt;
&lt;td&gt;Pronunciation&lt;/td&gt;
&lt;td&gt;Запишите себя на 60 секунд и проверьте 10 сложных слов&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Мини-рутина на 5 минут:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1 минута&lt;/strong&gt; — 5 security terms вслух;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2 минуты&lt;/strong&gt; — один status update;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1 минута&lt;/strong&gt; — email opener + closing;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1 минута&lt;/strong&gt; — одно tricky word через словарь с аудио.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Повторять две недели. Это скучнее, чем «выучу английский за месяц», но работает намного лучше.&lt;/p&gt;




&lt;h2&gt;
  
  
  Итог
&lt;/h2&gt;

&lt;p&gt;Технический английский — это не про идеальные времена и не про отсутствие акцента.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Это про способность:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;написать понятный емейл;&lt;/li&gt;
&lt;li&gt;объяснить риск адекватными словами без шаблонов;&lt;/li&gt;
&lt;li&gt;задать хороший вопрос на митинге;&lt;/li&gt;
&lt;li&gt;дать status update за 1 минуты на утреннем stand up ;&lt;/li&gt;
&lt;li&gt;описать blocker;&lt;/li&gt;
&lt;li&gt;провести security review пончтными словами для всей команды;&lt;/li&gt;
&lt;li&gt;пройти screening перед интервью;&lt;/li&gt;
&lt;li&gt;рассказать о себе и показать свои сильыне стороны;&lt;/li&gt;
&lt;li&gt;не теряться на созвоне;&lt;/li&gt;
&lt;li&gt;звучать спокойно и профессионально, без пафоса.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Не обязательно говорить идеально. Важно говорить понятно.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Clarity beats perfection.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Я собрал для себя отдельную практическую шпаргалку по Technical English for Cybersecurity: письма, Slack/Teams, митинги, security reports, HR screening, interviews, pronunciation и короткие упражнения. Часть идей из неё использовал в этой статье.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;А если нужен персональный разбор английской самопрезентации, CV или interview answers под конкретную IT/security-роль — контакты можно найти в профиле.&lt;/em&gt;&lt;/strong&gt; ЕЕее, мен! Удачи! See you soon &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>learning</category>
      <category>security</category>
    </item>
    <item>
      <title>Основы Product Security для автомобилей и зарядных станций: термины, архитектура, фреймворки</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Wed, 02 Sep 2026 09:15:05 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/osnovy-product-security-dlia-avtomobiliei-i-zariadnykh-stantsii-tierminy-arkhitiektura-frieimvorki-8b3</link>
      <guid>https://dev.to/ivan-piskunov/osnovy-product-security-dlia-avtomobiliei-i-zariadnykh-stantsii-tierminy-arkhitiektura-frieimvorki-8b3</guid>
      <description>&lt;h3&gt;
  
  
  Preview
&lt;/h3&gt;

&lt;p&gt;Современный автомобиль и зарядная станция — это уже не просто «железо», а сложные программно-аппаратные продукты, кратко можно сказать как "комп на колесах". В этой статье разберем базовые основные термины, архитектуру, ключевые фреймворки и типовые риски с точки зрения Product Security. Гоу!&lt;/p&gt;

&lt;h2&gt;
  
  
  Почему это может быть интересно и востребовано в индустрии?
&lt;/h2&gt;

&lt;p&gt;EV, connected car, software-defined vehicle и зарядная инфраструктура сегодня находятся на стыке embedded-разработки, облачных сервисов, мобильных приложений, телематики, OTA-обновлений и эксплуатации в реальном мире. Поэтому и модель безопасности здесь отличается от классического веб-приложения.&lt;/p&gt;

&lt;p&gt;Если в обычном SaaS мы чаще думаем об утечке данных, сломанной авторизации или уязвимой библиотеке, то в автомобильной и EV-среде последствия могут быть шире,  а именно: нарушение работы систем, компрометация OTA-обновления, злоупотребление удалёнными командами, потеря доступности зарядной инфраструктуры или масштабная operational-проблема на уровне парка устройств. Если говорить проще и короче - это риск не только для авто как технического средства, но и риск для здоровья и жизни водителя\пассажиров если что-то "пойдет не так".&lt;/p&gt;

&lt;p&gt;И почему же я пишу об этом? Моя тема ведь ProdSec и как это ложится на электронные тачки? А вот так. &lt;strong&gt;Product Security в этой области — это не только поиск багов.&lt;/strong&gt; Это управление доверием, архитектурой, жизненным циклом ПО, облачными и встроенными компонентами, а также безопасностью операций.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9tvqwkka5uatb6dhulju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9tvqwkka5uatb6dhulju.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Основы Product Security для автомобилей и зарядных станций: термины, архитектура, фреймворки и практические кейсы&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Зачем вообще нужен отдельный разговор про Product Security в автомобилях и EVSE?
&lt;/h2&gt;

&lt;p&gt;Порасуждаем об этом вместе. И так, господа, ниже самая база.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Автомобиль и зарядная станция сегодня — это не один компонент, а целая экосистема:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;встроенное ПО и ECU;&lt;/li&gt;
&lt;li&gt;внутренние шины и сети автомобиля;&lt;/li&gt;
&lt;li&gt;телематика и удалённая связь;&lt;/li&gt;
&lt;li&gt;мобильные приложения и веб-порталы;&lt;/li&gt;
&lt;li&gt;облачный backend;&lt;/li&gt;
&lt;li&gt;OTA-обновления;&lt;/li&gt;
&lt;li&gt;аналитика и мониторинг;&lt;/li&gt;
&lt;li&gt;поставщики аппаратных и программных компонентов;&lt;/li&gt;
&lt;li&gt;эксплуатация и field-operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Именно поэтому вопрос «есть ли у нас уязвимость?» недостаточен.&lt;/p&gt;

&lt;p&gt;Гораздо полезнее спрашивать так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Может ли эта слабость повлиять на архитектуру доверия, жизненный цикл продукта или операционную безопасность?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Это уже язык Product Security.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Что такое современный автомобиль с программным управлением
&lt;/h2&gt;

&lt;p&gt;Часто говорят, что современный автомобиль — это «компьютер на колёсах». В этом есть большая доля правды.&lt;/p&gt;

&lt;p&gt;Внутри автомобиля работают десятки электронных блоков управления — &lt;strong&gt;ECU (Electronic Control Units)&lt;/strong&gt;. Они отвечают за разные функции:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;движение и управление;&lt;/li&gt;
&lt;li&gt;торможение и устойчивость;&lt;/li&gt;
&lt;li&gt;комфорт и кузовные системы;&lt;/li&gt;
&lt;li&gt;инфотейнмент;&lt;/li&gt;
&lt;li&gt;телематику;&lt;/li&gt;
&lt;li&gt;ADAS и автопилот-подобные функции;&lt;/li&gt;
&lt;li&gt;управление батареей в EV.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Для Product Security важно понимать: автомобиль — это не только один ECU и не только прошивка. Это связанная система, где hardware, firmware, сети, облако, мобильный клиент и эксплуатационные процессы образуют единый продукт.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Что такое EVSE и почему это тоже Product Security-задача
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;EVSE (Electric Vehicle Supply Equipment)&lt;/strong&gt; — это не только «зарядка как стойка». На практике речь идёт о связанной инфраструктуре:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;зарядные станции;&lt;/li&gt;
&lt;li&gt;прошивки и настройки устройств;&lt;/li&gt;
&lt;li&gt;протоколы связи с backend;&lt;/li&gt;
&lt;li&gt;операторский портал;&lt;/li&gt;
&lt;li&gt;мобильное приложение клиента;&lt;/li&gt;
&lt;li&gt;биллинг и тарифы;&lt;/li&gt;
&lt;li&gt;управление сессиями зарядки;&lt;/li&gt;
&lt;li&gt;OTA-обновления;&lt;/li&gt;
&lt;li&gt;мониторинг и телеметрия.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;С точки зрения Product Security это значит, что защита нужна не только веб-части или API, но и всему operational-контуру: устройствам, идентичности станции, удалённым командам, обновлениям и процессам восстановления.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Из чего состоит архитектура современного автомобиля и EV-экосистемы
&lt;/h2&gt;

&lt;p&gt;Для вводной статьи удобно смотреть на систему в четырёх крупных слоях:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Пользовательский слой&lt;/strong&gt; — водитель, пассажиры, мобильное приложение.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Автомобиль&lt;/strong&gt; — ECU, инфотейнмент, телематика, ADAS, батарея и внутренние функции.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Сети и соединения&lt;/strong&gt; — CAN/LIN/FlexRay, Automotive Ethernet, 4G/5G, Wi‑Fi/Bluetooth, GNSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Облако и сервисы&lt;/strong&gt; — OTA, аналитика, удалённые команды, API, хранилища данных.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fapr49rij7d5za46xi9bb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fapr49rij7d5za46xi9bb.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Из чего состоит архитектура современного автомобиля и EV-экосистемы&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Эта модель полезна тем, что показывает: риски и контрольные меры распределены по нескольким уровням, а не только по «железу» или только по backend.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Базовые термины, которые стоит понимать
&lt;/h2&gt;

&lt;p&gt;Ниже — набор терминов, без которых сложно говорить о теме предметно.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ECU (Electronic Control Unit)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Электронный блок управления, который отвечает за конкретную функцию автомобиля.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TCU (Telematics Control Unit)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Телематический блок, обеспечивающий связь автомобиля с внешним миром и облачными сервисами.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ADAS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Advanced Driver Assistance Systems — системы помощи водителю.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OTA (Over-the-Air)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Удалённая доставка обновлений программного обеспечения без физического посещения сервиса.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infotainment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Системы мультимедиа, навигации, пользовательского интерфейса и цифрового опыта водителя/пассажира.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OCPP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Один из ключевых протоколов взаимодействия зарядной станции и backend-системы в экосистеме EVSE.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Firmware&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Встроенное программное обеспечение устройств и блоков управления.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CAN / LIN / FlexRay / Automotive Ethernet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ключевые автомобильные шины и сети для обмена данными между блоками.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SBOM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Software Bill of Materials — структурированный перечень компонентов, входящих в состав программного артефакта.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TARA&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Threat Analysis and Risk Assessment — подход к анализу угроз и оценке рисков, распространённый в automotive security.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. На что именно смотрит Product Security в этой области
&lt;/h2&gt;

&lt;p&gt;Product Security в автомобилях и EVSE — это про то, &lt;strong&gt;как защищается продукт как система&lt;/strong&gt;. Обычно внимание концентрируется вокруг нескольких тем.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 Границы доверия и trust boundaries
&lt;/h3&gt;

&lt;p&gt;Где система принимает внешние данные? Где кончается доверенная зона? Какие компоненты связывают автомобиль, облако, мобильное приложение и зарядную инфраструктуру?&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2 Идентичность и аутентификация
&lt;/h3&gt;

&lt;p&gt;Как устройство доказывает, что оно именно то, за кого себя выдаёт? Как аутентифицируется зарядная станция? Как защищаются привилегированные пользователи, администраторы и support-процессы?&lt;/p&gt;

&lt;h3&gt;
  
  
  5.3 Сегментация и архитектура
&lt;/h3&gt;

&lt;p&gt;Могут ли менее доверенные компоненты повлиять на более чувствительные? Есть ли разумные границы между infotainment, телематикой, safety-adjacent и cloud-компонентами?&lt;/p&gt;

&lt;h3&gt;
  
  
  5.4 Обновления и жизненный цикл ПО
&lt;/h3&gt;

&lt;p&gt;Как планируется, разрабатывается, тестируется, подписывается и выкатывается ПО? Как проходит OTA? Что будет при rollback? Как выглядит evidence-цепочка релиза?&lt;/p&gt;

&lt;h3&gt;
  
  
  5.5 Телеметрия, мониторинг и восстановление
&lt;/h3&gt;

&lt;p&gt;Сумеет ли команда увидеть аномалию? Отличить outage от security-инцидента? Понять, какое обновление дошло до какой когорты устройств? Быстро откатить rollout?&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Зоны доверия и границы безопасности
&lt;/h2&gt;

&lt;p&gt;Один из лучших способов быстро понять систему — разложить её по trust zones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsq13mx5o12d4se93g0tw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsq13mx5o12d4se93g0tw.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Зоны доверия и границы безопасности&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Упрощённо модель выглядит так:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Внешний мир&lt;/strong&gt; — интернет, атакующие, вредоносные сайты, сторонние приложения.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Пограничные системы&lt;/strong&gt; — телематика, VPN/TLS, firewall, IDS/IPS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Внутренние сети автомобиля&lt;/strong&gt; — CAN FD, FlexRay, LIN, Automotive Ethernet, ECU по доменам.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Облако и backend&lt;/strong&gt; — API gateway, сервисы аутентификации, OTA, аналитика.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Для Product Security здесь критично не просто «закрыть доступ», а понять, &lt;strong&gt;как перемещается доверие&lt;/strong&gt; и где нужна сегментация, микросегментация, проверка идентичности и мониторинг.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Жизненный цикл ПО и OTA-обновлений
&lt;/h2&gt;

&lt;p&gt;Product Security почти всегда должен смотреть на продукт не только в рантайме, но и по всему SDLC.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbf5igkj0a1lvfmtfnv92.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbf5igkj0a1lvfmtfnv92.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Жизненный цикл ПО и OTA-обновлений&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Типовой поток выглядит так:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Планирование и требования безопасности.&lt;/li&gt;
&lt;li&gt;Разработка и secure coding.&lt;/li&gt;
&lt;li&gt;Сборка и SBOM / анализ зависимостей.&lt;/li&gt;
&lt;li&gt;Тестирование, включая security testing.&lt;/li&gt;
&lt;li&gt;Подписание артефактов и контроль целостности.&lt;/li&gt;
&lt;li&gt;Выпуск и одобрение релиза.&lt;/li&gt;
&lt;li&gt;Доставка OTA по когортам.&lt;/li&gt;
&lt;li&gt;Эксплуатация, телеметрия и обратная связь.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Почему это важно? Потому что в software-defined vehicle и EVSE мире релиз — это уже не просто кнопка deploy. Ошибка в release governance может превратиться в масштабную проблему в field.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Ключевые фреймворки и ориентиры
&lt;/h2&gt;

&lt;p&gt;Для вводного уровня полезно знать несколько ориентиров, которые регулярно всплывают в реальной практике.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ISO/SAE 21434&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Один из ключевых отраслевых стандартов по automotive cybersecurity engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UNECE R155&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Регуляторная основа, которая продвинула идею системного управления кибербезопасностью автомобиля на уровне процессов и жизненного цикла.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UNECE R156&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Связана с управлением обновлениями ПО и организацией software update management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TARA&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Подход к анализу угроз и рисков: что атакуемо, каковы последствия, каков приоритет контрмер.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secure SDLC / DevSecOps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Критично для backend, cloud, mobile apps, CI/CD, OTA и цифровых платформ вокруг автомобиля или EVSE.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero Trust / Least Privilege&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Полезны как принципы для аутентификации, сервисных аккаунтов, облачных ролей и управления доступом.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Типовые риски и сценарии атак
&lt;/h2&gt;

&lt;p&gt;Ниже — типовые категории рисков, о которых стоит думать Product Security-команде.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Forl86e2lnw87dhkhdq7h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Forl86e2lnw87dhkhdq7h.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Типовые риски и сценарии атак&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9.1 Компрометация цепочки поставок
&lt;/h3&gt;

&lt;p&gt;Уязвимые зависимости, подмена артефактов, небезопасные поставщики, слабые процессы подписи и сборки.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.2 Уязвимости ECU и прошивки
&lt;/h3&gt;

&lt;p&gt;Ошибки в embedded-компонентах, небезопасная логика обновлений, проблемы с целостностью firmware.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.3 Атаки на сети автомобиля
&lt;/h3&gt;

&lt;p&gt;Неправильная сегментация, слабые точки на boundary-компонентах, избыточное доверие между доменами.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.4 Компрометация OTA
&lt;/h3&gt;

&lt;p&gt;Недостаточно защищённая цепочка release → signing → delivery → rollout → rollback.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.5 Облачные угрозы
&lt;/h3&gt;

&lt;p&gt;Слабая авторизация, избыточные IAM-права, ошибки в API, проблемы с secrets и CI/CD.&lt;/p&gt;

&lt;h3&gt;
  
  
  9.6 Физический доступ
&lt;/h3&gt;

&lt;p&gt;Доступ к диагностическим интерфейсам, локальным портам, устройствам, стендам, станции или внутренней инфраструктуре.&lt;/p&gt;

&lt;p&gt;Типовые последствия при этом тоже выходят за рамки «утечки данных»:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;потеря управления отдельными функциями;&lt;/li&gt;
&lt;li&gt;нарушение работы систем;&lt;/li&gt;
&lt;li&gt;недоступность сервиса;&lt;/li&gt;
&lt;li&gt;финансовые потери;&lt;/li&gt;
&lt;li&gt;репутационный ущерб;&lt;/li&gt;
&lt;li&gt;риск безопасности людей.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  10. Практические кейсы, которые повлияли на индустрию
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Кейс 1. Исследования удалённой компрометации connected car
&lt;/h3&gt;

&lt;p&gt;Публичные исследования, показавшие возможность удалённого воздействия на connected car через внешнюю поверхность атаки, сильно повлияли на индустрию. Они наглядно продемонстрировали, что проблема не ограничивается одной прошивкой или одним ECU: уязвимость в boundary-компоненте или телематическом контуре может иметь большие последствия.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Почему это было важно:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;стала очевиднее необходимость security-by-design;&lt;/li&gt;
&lt;li&gt;усилилось внимание к сегментации и boundary-компонентам;&lt;/li&gt;
&lt;li&gt;выросла роль процессов OTA, мониторинга и coordinated response.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Кейс 2. Relay-атаки и злоупотребление цифровым доступом
&lt;/h3&gt;

&lt;p&gt;Даже если атака не выглядит как «взлом прошивки», она всё равно может менять восприятие модели риска. Кейсы с relay-атаками и злоупотреблением системами доступа показали, что автомобиль — это не только software bug, но и продуктовая модель доверия.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Что это изменило:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;вырос интерес к layered security;&lt;/li&gt;
&lt;li&gt;стало важнее смотреть на пользовательские сценарии злоупотребления;&lt;/li&gt;
&lt;li&gt;Product Security пришлось теснее работать с hardware, UX и operational-командами.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Кейс 3. EVSE и exposed charging infrastructure
&lt;/h3&gt;

&lt;p&gt;В экосистеме зарядных станций исследователи неоднократно показывали, что слабые настройки, дефолтные учётные данные, неправильная аутентификация или проблемы на backend-стороне способны повлиять не только на данные, но и на реальные charging operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Почему это важно:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;зарядная станция — это cyber-physical asset;&lt;/li&gt;
&lt;li&gt;backend API, cloud, support-процессы и device identity становятся критичными;&lt;/li&gt;
&lt;li&gt;одна ошибка может масштабироваться сразу на парк устройств.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  11. Как мыслит Product Security-лид в этой теме
&lt;/h2&gt;

&lt;p&gt;Хороший Product Security-подход в automotive и EVSE обычно задаёт такие вопросы:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Какие компоненты являются crown jewels?&lt;/li&gt;
&lt;li&gt;Где находятся boundary-системы?&lt;/li&gt;
&lt;li&gt;Какие удалённые действия вообще разрешены?&lt;/li&gt;
&lt;li&gt;Как защищается release path?&lt;/li&gt;
&lt;li&gt;Можно ли доказать происхождение артефакта?&lt;/li&gt;
&lt;li&gt;Какие действия требуют step-up authentication или dual control?&lt;/li&gt;
&lt;li&gt;Есть ли безопасный rollback?&lt;/li&gt;
&lt;li&gt;Достаточно ли telemetry и detection?&lt;/li&gt;
&lt;li&gt;Как быстро команда поймёт, что происходит в field?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Эти вопросы переводят разговор из «есть ли CVE» в «можем ли мы безопасно управлять продуктом». Именно это и есть язык Product Security.&lt;/p&gt;




&lt;h2&gt;
  
  
  12. С чего начать новичку или лидеру, который входит в тему
&lt;/h2&gt;

&lt;p&gt;Если тебе нужно быстро сориентироваться в теме, я бы рекомендовал идти в такой последовательности:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Понять базовую архитектуру автомобиля, EVSE и cloud-экосистемы.&lt;/li&gt;
&lt;li&gt;Разобраться с жизненным циклом ПО и OTA.&lt;/li&gt;
&lt;li&gt;Освоить базовые термины: ECU, TCU, ADAS, OCPP, OTA, SBOM, TARA.&lt;/li&gt;
&lt;li&gt;Посмотреть на trust boundaries и product authority.&lt;/li&gt;
&lt;li&gt;Разобрать 3–5 типовых attack-chain сценариев.&lt;/li&gt;
&lt;li&gt;Понять, как сочетаются embedded, cloud, mobile и operational controls.&lt;/li&gt;
&lt;li&gt;Научиться говорить о риске не только языком уязвимостей, но и языком воздействия, обнаружения и восстановления.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  13. Final thought
&lt;/h2&gt;

&lt;p&gt;Безопасность автомобиля, software-defined vehicle и зарядной инфраструктуры — это уже давно не только задача embedded-инженеров и не только задача AppSec.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Это область, где встречаются:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;архитектура;&lt;/li&gt;
&lt;li&gt;безопасная разработка;&lt;/li&gt;
&lt;li&gt;cloud security;&lt;/li&gt;
&lt;li&gt;OTA governance;&lt;/li&gt;
&lt;li&gt;identity и trust;&lt;/li&gt;
&lt;li&gt;supply chain;&lt;/li&gt;
&lt;li&gt;device security;&lt;/li&gt;
&lt;li&gt;operational resilience.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Именно поэтому Mindset Product Security здесь особенно полезен: он помогает смотреть на продукт не как на набор разрозненных компонентов, а как на систему, которую нужно безопасно проектировать, выпускать, обновлять, эксплуатировать и восстанавливать.&lt;/p&gt;

&lt;h2&gt;
  
  
  и еще несколько слов в заключение
&lt;/h2&gt;

&lt;p&gt;Эта статья — вводный обзор и часть более крупной работы, которую я сейчас финально полирую: &lt;strong&gt;брошюры по безопасности электромобилей и зарядных станций&lt;/strong&gt;. В полной версии материал глубже раскрывает архитектуру, attack-chain thinking, Product Security operating model, OTA governance, OTA/EVSE риски, практические контрольные меры и управленческий взгляд на тему. выйдет в релиз осенью 2026 года, так что следите за новостями!&lt;/p&gt;

&lt;p&gt;И, YO, гайс, кто еще не знает также я публикую полезные материалы, заметки и ссылки по кибербезопасности в моем Telegram-канале &lt;strong&gt;&lt;a href="https://t.me/w2hack" rel="noopener noreferrer"&gt;White2Hack&lt;/a&gt;&lt;/strong&gt;. Join and be safer&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Теги:&lt;/strong&gt; product security, automotive security, EV, EVSE, OCPP, OTA, ECU, SBOM, secure SDLC, DevSecOps&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>cybersecurity</category>
      <category>iot</category>
      <category>security</category>
    </item>
    <item>
      <title>От нетворкинга к MVP: как мы превратили боль русскоязычных newcomers в США в концепт TaxBridge</title>
      <dc:creator>Ivan's Cybersecurity Notes</dc:creator>
      <pubDate>Sat, 25 Jul 2026 15:37:51 +0000</pubDate>
      <link>https://dev.to/ivan-piskunov/ot-nietvorkingha-k-mvp-kak-my-prievratili-bol-russkoiazychnykh-newcomers-v-ssha-v-kontsiept-taxbridge-45ff</link>
      <guid>https://dev.to/ivan-piskunov/ot-nietvorkingha-k-mvp-kak-my-prievratili-bol-russkoiazychnykh-newcomers-v-ssha-v-kontsiept-taxbridge-45ff</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;О ЧЕМ МАТЕРИАЛ:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Здарово, парни! на ссязи Ivan | White2hack &lt;/p&gt;

&lt;p&gt;Эта статья не про «успешный успех», не про очередной стартап с нищеброда до миллионера:) который уже завтра должен стать единорогом, и не про то, что всем срочно нужно бежать в какую-то ассоциацию, чтобы через неделю получить оффер, инвестиции и команду мечты.&lt;/p&gt;

&lt;p&gt;Она про более спокойную, но очень практическую вещь:&amp;nbsp;&lt;strong&gt;как профессиональное окружение помогает превратить разрозненную боль юзеров в работающий продуктовый MVP&lt;/strong&gt;. И я сам прошел это на собственном пути! Так что есть о чем рассказать)) Погнали?&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;СУТЬ МАТЕРИАЛА КОРОТКО&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;История началась не с pitch deck, как это часто бывает. Она началась с обычного профессионального роста: чтения, статей, курсов, самообучения, разговоров с инженерами, обсуждений в комьюнити и постепенного расширения круга людей, с которыми можно говорить не только о вакансиях, но и о реальных проблемах, которые можно решить продуктом.&lt;/p&gt;

&lt;p&gt;В какой-то момент я оказался внутри международной&amp;nbsp;&lt;a href="https://growcluster.com/en/" rel="noopener noreferrer"&gt;&lt;strong&gt;IT Association Grow Cluster&lt;/strong&gt;&lt;/a&gt;. Там были разработчики, дизайнеры, архитекторы, специалисты по безопасности, люди, которые уже запускали проекты, и те, кто только искал следующую сильную идею. Мы начали общаться, обмениваться опытом и довольно быстро увидели пересечение: миграция, адаптация в США, первые документы, первый налоговый год, языковой барьер и страх перед системой, которая для новичка выглядит непрозрачно.&lt;/p&gt;

&lt;p&gt;Но у сильной идеи есть ещё один неприятный момент: одного нетворкинга мало, это правда. Люди могут увидеть проблему, собрать гипотезу, накидать первые экраны и даже договориться о ролях, но для превращения идеи в MVP почти всегда нужен второй слой — акселерационный: разбор проекта, деньги (о, да как же без них:), документы, юридико-организационная рамка, бренд, договорённости, упаковка для партнёров и инвесторов.&lt;/p&gt;

&lt;p&gt;В нашем случае таким слоем стал&amp;nbsp;&lt;strong&gt;Startup-accelerator KrokIT&lt;/strong&gt;. Если Grow Cluster помог собрать вокруг идеи людей, доверие и профессиональный контекст, то KrokIT помог посмотреть на &lt;strong&gt;TaxBridge&lt;/strong&gt; уже как на проект: что именно мы строим, за счёт чего это может быть полезно, где проходит граница MVP, какие документы нужны, как упаковать идею для партнёров, как думать о pre-seed / seed-логике и что нужно подготовить, чтобы проект можно было показывать не только друзьям из комьюнити, но и потенциальным клиентам, партнёрам или инвесторам.&lt;/p&gt;

&lt;p&gt;Для меня это важное различие:&amp;nbsp;&lt;strong&gt;community рождает доверие и команду, accelerator помогает превратить это в проектную дисциплину&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Так появился концепт&amp;nbsp;&lt;strong&gt;TaxBridge&lt;/strong&gt;&amp;nbsp;— bilingual tax onboarding platform для русскоязычных newcomers в США.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;DISCLAIMER&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;!!!Сразу важная граница!!!:&amp;nbsp;&lt;strong&gt;TaxBridge — это не “замена CPA”, не legal advice, не tax advice и не “магическая кнопка отправить декларацию в IRS”&lt;/strong&gt;. В текущей версии это продуктовый концепт / визуальный прототип tax-readiness layer: он помогает пользователю понять вероятный filing route, организовать документы, получить summary / organizer и при необходимости передать всё на professional review.&lt;/p&gt;

&lt;p&gt;Именно эта граница делает кейс интересным для инженерной аудитории. Потому что в чувствительных доменах хороший продукт начинается не с автоматизации всего подряд, а с вопроса:&amp;nbsp;&lt;strong&gt;что мы можем упростить безопасно, честно и полезно?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc50fkveqaoxtyb4ihj5l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc50fkveqaoxtyb4ihj5l.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Коротко, если читать по диагонали ( TL;DR так сказать)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Нетворкинг полезен не потому, что «у кого-то есть связи», а потому что он создаёт&amp;nbsp;&lt;strong&gt;граф доверия&lt;/strong&gt;, в котором идеи быстрее проходят проверку реальностью. &lt;/li&gt;
&lt;li&gt;  TaxBridge родился из пересечения нескольких компетенций: migration context, UX, frontend/prototyping, product thinking, security и понимания боли русскоязычных newcomers.&lt;/li&gt;
&lt;li&gt;  Мы не пытались построить полноценный tax filing engine. На уровне MVP гораздо разумнее было проверить&amp;nbsp;&lt;strong&gt;guided onboarding → route assessment → document checklist → organizer/report → human review&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;  Главная продуктовая идея: newcomer не всегда готов сразу «заполнять декларацию». Сначала ему нужна карта: где он находится, какие документы нужны, какие риски есть, где можно self-service, а где нужен специалист. Экономим деньги, время и нервы! Profit
&lt;/li&gt;
&lt;li&gt;  В таких продуктах security, privacy, объяснимость и legal boundaries должны появляться в самом начале, а не после релиза. &lt;/li&gt;
&lt;li&gt;  После того как идея прошла первичную проверку внутри профессионального круга, понадобился акселерационный слой: разбор проекта, финансирование, документы, бренд, юридико-организационный контур, подготовка материалов для партнёров и логика pre-seed / seed-переговоров.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Нетворкинг — это не список контактов. Это инфраструктура доверия.
&lt;/h3&gt;

&lt;p&gt;В такой инфраструктуре важны пять вещей. Смотрим внимательно.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Что важно&lt;/th&gt;
&lt;th&gt;Как это проявляется на практике&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Контекст&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Люди понимают, чем ты занимаешься, где твоя экспертиза, а где твои ограничения.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Повторяемость&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Вы общаетесь не один раз, а возвращаетесь к идеям, ошибкам и результатам.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Разные роли&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Разработчик, дизайнер, founder, security engineer и domain expert видят одну проблему по-разному.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Честная обратная связь&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Кто-то может сказать: «это слишком сложно для MVP», «здесь риск legal advice», «здесь нужен human review».&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Доступ к реальным историям&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Самые ценные инсайты часто приходят не из отчётов, а из опыта людей, которые уже проходили похожую боль.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;В &lt;a href="https://dev.to/growcluster"&gt;Grow Cluster&lt;/a&gt; это стало особенно заметно. Когда в одном кругу появляются разработчики, дизайнеры, архитекторы, security-специалисты и люди с миграционным опытом, идея перестаёт быть заметкой в блокноте. Она начинает проходить через фильтр разных компетенций.&lt;/p&gt;

&lt;p&gt;И это очень похоже на нормальный engineering process: гипотеза, feedback, constraints, risk assessment, iteration.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Слой&lt;/th&gt;
&lt;th&gt;Что дал проекту&lt;/th&gt;
&lt;th&gt;Почему это важно&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Grow Cluster IT Association&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Люди, доверие, разные роли, профессиональный контекст, первые обсуждения, обратная связь.&lt;/td&gt;
&lt;td&gt;Идея перестала быть заметкой в блокноте и прошла через фильтр разработчиков, дизайнеров, security-специалистов, архитекторов и людей с миграционным опытом.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Startup-accelerator KrokIT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Разбор проекта, акселерационную рамку, финансирование, помощь с документами, упаковкой, брендом, регистрационным и инвестиционным контуром.&lt;/td&gt;
&lt;td&gt;Идея начала превращаться в проект, который можно показывать партнёрам, потенциальным клиентам и инвесторам.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Партнёрская экосистема&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Возможность рассматривать TaxBridge не как изолированное приложение, а как onboarding / tax-readiness слой внутри более широкой системы услуг.&lt;/td&gt;
&lt;td&gt;MVP получает не только экраны, но и потенциальный канал внедрения, проверки и дальнейшего масштабирования.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Пользовательская боль: первый налоговый год в США выглядит страшнее, чем должен
&lt;/h3&gt;

&lt;p&gt;Для человека, который недавно переехал в США, особенно если он говорит по-русски и ещё не привык к локальной терминологии, налоговая система часто выглядит как набор несвязанных слов:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  resident alien / nonresident alien;
&lt;/li&gt;
&lt;li&gt;  green card test;
&lt;/li&gt;
&lt;li&gt;  substantial presence test;
&lt;/li&gt;
&lt;li&gt;  Form 1040 / Form 1040-NR;
&lt;/li&gt;
&lt;li&gt;  W-2 / 1099;&lt;/li&gt;
&lt;li&gt;  federal return / state return;
&lt;/li&gt;
&lt;li&gt;  estimated payments;
&lt;/li&gt;
&lt;li&gt;  foreign accounts;
&lt;/li&gt;
&lt;li&gt;  self-employment;
&lt;/li&gt;
&lt;li&gt;  filing status;
&lt;/li&gt;
&lt;li&gt;  dependents;
&lt;/li&gt;
&lt;li&gt;  ITIN / SSN.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Проблема не только в английском языке. Проблема в том, что пользователь не понимает&amp;nbsp;&lt;strong&gt;модель принятия решений&lt;/strong&gt;. Юзер, он же клиент - это же обычной парень ка к ты и я только что имитировавший, откуда ему ведать все тонкости налоговой системы США?&lt;/p&gt;

&lt;p&gt;Ему не всегда нужно сразу заполнять форму. Сначала ему нужно понять:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  какой у него вероятный tax residency status;
&lt;/li&gt;
&lt;li&gt;  какие документы вообще нужны;
&lt;/li&gt;
&lt;li&gt;  где сценарий простой, а где уже нужен специалист;
&lt;/li&gt;
&lt;li&gt;  какие вопросы критичны для routing;
&lt;/li&gt;
&lt;li&gt;  что можно подготовить самому
&lt;/li&gt;
&lt;li&gt;  что нельзя автоматизировать без риска;
&lt;/li&gt;
&lt;li&gt;  когда стоит идти к CPA, EA или другому professional reviewer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;IRS описывает базовую рамку так:&lt;/strong&gt; если человек не является гражданином США, он считается nonresident для целей U.S. tax, пока не проходит один из двух тестов —&amp;nbsp;&lt;strong&gt;green card test&lt;/strong&gt;&amp;nbsp;или&amp;nbsp;&lt;strong&gt;substantial presence test&lt;/strong&gt;. При этом возможны исключения и специальные сценарии, включая dual-status year, closer connection, treaty logic и другие ситуации, которые нельзя аккуратно закрыть простым UX-текстом.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Именно здесь появилась продуктовая гипотеза:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Что если делать не «ещё один tax filing tool», а спокойный tax-readiness layer для первого шага?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Первая формулировка продукта: не “налоговый комбайн”, а onboarding layer
&lt;/h3&gt;

&lt;p&gt;TaxBridge мы не думали как универсальный сервис «сделаем всё за вас». Это опасная ловушка для раннего MVP, особенно в домене, где ошибка может стоить пользователю денег, времени и нервов.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Идея была другой:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Дать пользователю понятный bilingual flow, который превращает хаос первого налогового года в структурированный маршрут: interview → likely filing route → document checklist → organizer/report → self-service или handoff к специалисту.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Это звучит менее громко, чем “AI-powered tax automation platform”. Зато это ближе к реальной боли.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faytmonh1k2nrlvwuyyoy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faytmonh1k2nrlvwuyyoy.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;На уровне продукта мы выделили &lt;strong&gt;четыре базовых сценария.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Сценарий&lt;/th&gt;
&lt;th&gt;Что хочет пользователь&lt;/th&gt;
&lt;th&gt;Что должен сделать продукт&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tax Interview&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ответить на вопросы простым языком.&lt;/td&gt;
&lt;td&gt;Собрать контекст: residency, income, state, dependents, accounts, forms.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Filing Route Assessment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Понять вероятный путь.&lt;/td&gt;
&lt;td&gt;Показать route, confidence, risk flags и next steps.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Document Checklist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Не забыть документы.&lt;/td&gt;
&lt;td&gt;Разделить документы на required / missing / optional / under review.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reports &amp;amp; Organizer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Получить понятный результат.&lt;/td&gt;
&lt;td&gt;Сформировать readable summary / organizer для self-filing или reviewer handoff.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ключевое решение было простым:&amp;nbsp;&lt;strong&gt;не начинать с “заполните форму”, а начинать с “давайте разберём вашу ситуацию”&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Для человека, который только переехал, это психологически намного важнее, чем кажется. Он не хочет ещё одну сложную систему. Он хочет сначала почувствовать, что у него появилась карта.&lt;/p&gt;




&lt;h3&gt;
  
  
  Persona и Jobs To Be Done: без этого MVP легко становится игрушкой
&lt;/h3&gt;

&lt;p&gt;Одна из правок, которую я бы обязательно сделал в любой такой истории: нельзя описывать продукт только через фичи. Нужно описывать пользователя и его задачу. &lt;strong&gt;Условная persona для TaxBridge выглядела бы так:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Русскоязычный newcomer в США. Недавно получил green card, переехал или находится в переходном статусе, работает по найму или как self-employed, плохо понимает американскую tax terminology, боится пропустить важный документ и не хочет сразу платить за дорогую консультацию, если его сценарий простой.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Его job-to-be-done можно сформулировать так:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;«Когда я впервые сталкиваюсь с U.S. tax season, я хочу понять свой вероятный filing route и список документов простым языком, чтобы не паниковать, не потерять сроки и прийти к self-filing или специалисту уже подготовленным».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Persona / JTBD: фокус MVP
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Вопрос&lt;/th&gt;
&lt;th&gt;Правильный фокус MVP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Пользователь хочет «налоговую магию»?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Нет. Он хочет понятный первый шаг.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ему нужен полный tax engine?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Не на первом этапе.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ему нужна форма 1040 прямо сейчас?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Иногда да, но чаще сначала нужен routing и checklist.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Нужно ли обещать filing?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Нет, если нет production-grade compliance и professional review.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Что можно дать безопасно?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Education, organizer, document clarity, next steps, risk flags.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Именно поэтому&amp;nbsp;&lt;strong&gt;TaxBridge лучше описывать как tax-readiness / onboarding product&lt;/strong&gt;, а не как tax filing replacement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scope и non-goals: что мы делаем и чего сознательно не делаем
&lt;/h3&gt;

&lt;p&gt;Для MVP в чувствительном домене список non-goals не менее важен, чем список features. И так, глянем что мы сверстали как базу:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;В scope MVP&lt;/th&gt;
&lt;th&gt;Не в scope MVP на раннем этапе&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Guided interview&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Автоматическая подача декларации в IRS.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bilingual explanations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Налоговая консультация.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Likely filing route&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Юридическое заключение.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Document checklist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Гарантия правильности filing strategy.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Risk flags&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Полная замена CPA / EA / tax professional.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Organizer / report&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Обработка всех сложных cross-border сценариев.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Handoff to reviewer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Интерпретация tax treaties без эксперта.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;На ранней стадии продукту не нужно казаться всемогущим. Ему нужно быть полезным и честным.&lt;/p&gt;




&lt;h3&gt;
  
  
  Почему bilingual UX — это не перевод кнопок
&lt;/h3&gt;

&lt;p&gt;Если продукт ориентирован на русскоязычных пользователей, кажется, что достаточно перевести интерфейс. Но в tax workflow перевод — это только часть работы.&lt;/p&gt;

&lt;p&gt;Настоящая сложность в другом:&amp;nbsp;&lt;strong&gt;надо переводить не слова, а ментальную модель&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Пользователь может понимать, что такое «налоговая декларация» в своей стране, но не понимать:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  почему в США есть federal и state filing;
&lt;/li&gt;
&lt;li&gt;  почему tax residency не всегда совпадает с бытовым пониманием иммиграционного статуса; &lt;/li&gt;
&lt;li&gt;  почему W-2 и 1099 ведут к разным вопросам;
&lt;/li&gt;
&lt;li&gt;  почему self-employment меняет набор документов и рисков;
&lt;/li&gt;
&lt;li&gt;  почему один и тот же человек в год переезда может попасть в сложный сценарий;
&lt;/li&gt;
&lt;li&gt;  почему система иногда должна сказать: «дальше нужен professional review».&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Хороший bilingual UX должен делать несколько вещей одновременно:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  сохранять английские термины там, где они нужны для документов; &lt;/li&gt;
&lt;li&gt;  давать русское объяснение без искажения смысла;
&lt;/li&gt;
&lt;li&gt;  показывать, где продукт уверен, а где нужна проверка;&lt;/li&gt;
&lt;li&gt;  не создавать иллюзию налогового совета;&lt;/li&gt;
&lt;li&gt;  не превращать интерфейс в учебник на 200 страниц.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  MVP: что именно нужно было проверить
&lt;/h3&gt;

&lt;p&gt;В ранних продуктах самая опасная ошибка — перепутать MVP с маленькой версией большой мечты.&lt;/p&gt;

&lt;p&gt;MVP TaxBridge не должен был сразу стать competitor to TurboTax или production tax filing engine. Для такой задачи нужны более серьёзные процессы: tax expertise, legal review, e-file integration, identity controls, audit, compliance, support, incident response и многое другое.&lt;/p&gt;

&lt;p&gt;На первом этапе нас интересовали другие вопросы. Заценим их кратко:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Гипотеза&lt;/th&gt;
&lt;th&gt;Как можно проверить&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Пользователь понимает ценность structured onboarding.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Проходит ли он interview до конца.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bilingual flow снижает тревожность.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Может ли пользователь объяснить next step своими словами.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Route summary полезен.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Сохраняет ли пользователь report / organizer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Checklist уменьшает хаос.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Загружает ли пользователь документы по категориям.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Risk flags помогают, а не пугают.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Понимает ли пользователь, почему нужен reviewer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Handoff к специалисту ценен.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Может ли reviewer быстрее разобраться в ситуации.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Это нормальный MVP-вопрос. Не «можем ли мы автоматизировать всю налоговую систему», а&amp;nbsp;&lt;strong&gt;можем ли мы сделать первый шаг менее страшным и более структурированным&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Как выглядела логика продукта
&lt;/h3&gt;

&lt;p&gt;Условно TaxBridge можно разложить на несколько слоёв. Это упрощенно, но для понимая на старте хватит.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Слой&lt;/th&gt;
&lt;th&gt;Задача&lt;/th&gt;
&lt;th&gt;Почему это важно&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Landing layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Объяснить продукт за 30–60 секунд.&lt;/td&gt;
&lt;td&gt;Пользователь должен быстро понять, что это onboarding tool, а не «налоговая магия».&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interview layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Собрать базовый контекст.&lt;/td&gt;
&lt;td&gt;Residency, income, state, dependents, documents, risk conditions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Decision-support layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Показать вероятный filing route.&lt;/td&gt;
&lt;td&gt;Не финальный tax advice, а structured recommendation / next step.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Document layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Собрать и упорядочить документы.&lt;/td&gt;
&lt;td&gt;У пользователя появляется checklist вместо хаоса.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Report layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Сформировать organizer.&lt;/td&gt;
&lt;td&gt;Его можно использовать самому или передать reviewer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Handoff layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Понять, когда нужен человек.&lt;/td&gt;
&lt;td&gt;Сложные сценарии не надо притворно автоматизировать.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Объяснять термины.&lt;/td&gt;
&lt;td&gt;Пользователь учится на каждом шаге.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Security layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Защитить данные и ожидания.&lt;/td&gt;
&lt;td&gt;Налоговые документы и персональные данные требуют осторожности.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;На скриншотах это выглядит как обычное приложение: dashboard, interview, documents, reports, organizer, secure sharing, version history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Но важнее не экраны. Важнее то, что за ними есть процесс:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;text Newcomer context&lt;br&gt;
↓&lt;br&gt;
Guided interview&lt;br&gt;
↓&lt;br&gt;
Decision-support logic&lt;br&gt;
↓&lt;br&gt;
Risk flags + explainability&lt;br&gt;
↓&lt;br&gt;
Document checklist ↓ Organizer / report&lt;br&gt;
↓&lt;br&gt;
Self-service OR professional review&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Как выглядела логика продукта&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnjchefdd10kxj6kf040u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnjchefdd10kxj6kf040u.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Если убрать из этой схемы explainability или human review, продукт быстро станет опаснее. Если убрать document layer, он станет просто красивой анкетой. Если убрать risk flags, пользователь может уйти с ложной уверенностью.&lt;/p&gt;




&lt;h3&gt;
  
  
  Почему report иногда ценнее, чем submit
&lt;/h3&gt;

&lt;p&gt;В consumer-продуктах часто хочется сразу прийти к финальному действию: нажал кнопку — всё отправилось.Но в чувствительных сценариях такой подход может быть опасным. Для налогового онбординга новичка важен промежуточный артефакт:&amp;nbsp;&lt;strong&gt;организованный report / organizer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Он может содержать:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  базовый профиль пользователя;
&lt;/li&gt;
&lt;li&gt;  tax year;
&lt;/li&gt;
&lt;li&gt;  предполагаемый filing route;
&lt;/li&gt;
&lt;li&gt;  причины, почему система предложила этот route;
&lt;/li&gt;
&lt;li&gt;  список recommended forms;
&lt;/li&gt;
&lt;li&gt;  список missing documents;
&lt;/li&gt;
&lt;li&gt;  risk flags;
&lt;/li&gt;
&lt;li&gt;  next steps;
&lt;/li&gt;
&lt;li&gt;  данные, которые можно проверить до финального filing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Такой артефакт полезен сразу нескольким сторонам.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Кому полезен organizer&lt;/th&gt;
&lt;th&gt;Почему&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Пользователю&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Он наконец видит структуру, а не хаос документов.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reviewer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Он не начинает консультацию с нуля.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Support-команде&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Меньше хаотичных вопросов и скриншотов в мессенджере.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Product-команде&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Видно, где пользователи чаще всего застревают.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F389h3xvacp8vawde4ii5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F389h3xvacp8vawde4ii5.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;С точки зрения product thinking, report — это не «документ ради документа». Это boundary object: общий артефакт, через который пользователь, продукт и специалист могут говорить на одном языке.&lt;/p&gt;




&lt;h3&gt;
  
  
  Что в таком продукте нельзя делать бездумно
&lt;/h3&gt;

&lt;p&gt;Когда продукт касается tax workflow, особенно для иммигрантов, есть несколько красных зон.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Нельзя выдавать предположение за tax advice
&lt;/h4&gt;

&lt;p&gt;Можно объяснить вероятный route. Можно показать risk flags. Можно сформировать organizer. Но если сценарий сложный, продукт должен честно отправлять к специалисту.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Нельзя обещать экономию любой ценой
&lt;/h4&gt;

&lt;p&gt;Да, хороший onboarding может снизить хаос и уменьшить количество лишних консультаций. Но цель не в том, чтобы любой ценой заменить CPA или tax professional. Цель — чтобы человек пришёл подготовленным и понимал, где self-service уместен, а где нет.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Нельзя забывать про privacy
&lt;/h4&gt;

&lt;p&gt;Налоговый продукт почти сразу касается sensitive data: identity, SSN/ITIN, address, income, bank statements, foreign accounts, immigration-related context. Даже если это MVP, нельзя относиться к таким данным как к обычной форме обратной связи.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Нельзя строить интерфейс только вокруг forms
&lt;/h4&gt;

&lt;p&gt;Новичку нужна не форма. Ему нужна последовательность: answer → understand → prepare → move forward.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Нельзя игнорировать explainability
&lt;/h4&gt;

&lt;p&gt;Если система показывает “Likely Resident Alien” или “Federal 1040 + State Return”, пользователь должен понимать, почему. Иначе это не product guidance, а ещё один чёрный ящик.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Нельзя скрывать uncertainty
&lt;/h4&gt;

&lt;p&gt;В некоторых сценариях продукт обязан сказать: «мы не можем дать уверенный route без professional review». Это не слабость продукта. Это признак зрелости.&lt;/p&gt;




&lt;h3&gt;
  
  
  Product Security угол: мой выход:)
&lt;/h3&gt;

&lt;p&gt;Поскольку мой основной профессиональный фокус связан с Product Security, я не могу смотреть на такой продукт только как на UX или business idea. Если MVP двигается дальше в production, security baseline должен появиться до сбора настоящих документов.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Область&lt;/th&gt;
&lt;th&gt;Что нужно предусмотреть&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data minimization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Не собирать данные, которые не нужны для route assessment / organizer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Encryption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Шифрование чувствительных данных at rest и in transit.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Разделение ролей: user, reviewer, support, admin.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Secure sharing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Time-limited links, revocation, audit trail.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Audit log&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Кто смотрел, скачивал, изменял, отправлял.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Retention&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ясная политика хранения и удаления документов.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Secrets management&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Никаких ключей и токенов в frontend/build artifacts.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Abuse cases&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Что если ссылку переслали, аккаунт украли, пользователь загрузил чужой документ.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Legal boundaries&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Чёткая маркировка: где education / organizer, а где professional advice.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Incident readiness&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;План реакции на утечку или неправильный access.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Отдельно я бы сделал маленький threat model ещё до production.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Threat / abuse case&lt;/th&gt;
&lt;th&gt;Почему важно&lt;/th&gt;
&lt;th&gt;Возможный control&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Пользователь делится secure link не с тем человеком.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;В report могут быть sensitive данные.&lt;/td&gt;
&lt;td&gt;Expiring links, revocation, access log.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reviewer получает больше данных, чем нужно.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Риск privacy exposure.&lt;/td&gt;
&lt;td&gt;Role-based access, scoped sharing.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Пользователь загружает чужой документ.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Legal/privacy risk.&lt;/td&gt;
&lt;td&gt;Warnings, document ownership attestation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Неверный route выглядит слишком уверенно.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Пользователь может принять неправильное решение.&lt;/td&gt;
&lt;td&gt;Confidence, reasoning, escalation to reviewer.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Данные хранятся бесконечно.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ненужный риск компрометации.&lt;/td&gt;
&lt;td&gt;Retention policy, deletion flow.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Саппорт видит sensitive data без необходимости.&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Internal misuse / accidental exposure.&lt;/td&gt;
&lt;td&gt;Support redaction, least privilege.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Это тот случай, где Product Security — не отдельный отдел. Это часть product design.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Где здесь no-code, low-code и обычная Dev разработка
&lt;/h3&gt;

&lt;p&gt;Ранние MVP часто выглядят не так героически, как хочется рассказывать на конференциях.&lt;/p&gt;

&lt;p&gt;Часть продукта можно собрать как статический лендинг. Часть — как интерактивный UI-прототип. Часть — как no-code/low-code flow. Часть — как обычный frontend. Часть логики на первом этапе вообще может быть полу-ручной, если цель — проверить пользовательский сценарий, а не сразу построить production-grade tax engine. И это нормально. Едем дальше!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No-code — это не “несерьёзно”. Несерьёзно — это строить дорогую архитектуру до того, как ты проверил, нужна ли людям твоя логика.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Для такого MVP гораздо важнее:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  быстро собрать понятный flow;
&lt;/li&gt;
&lt;li&gt;  проверить формулировки; &lt;/li&gt;
&lt;li&gt;  увидеть, где пользователь путается; &lt;/li&gt;
&lt;li&gt;  понять, какие документы он реально может подготовить;
&lt;/li&gt;
&lt;li&gt;  выяснить, где нужен human review;
&lt;/li&gt;
&lt;li&gt;  собрать обратную связь от людей из целевой аудитории.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;После этого уже можно думать о полноценной архитектуре: backend, rules engine, encrypted storage, audit logs, secure sharing, role-based access, retention policy, integrations, e-file provider, compliance review и так далее.&lt;/p&gt;




&lt;h3&gt;
  
  
  MVP-архитектуру без пафоса
&lt;/h3&gt;

&lt;p&gt;На ранней стадии архитектура TaxBridge могла бы быть такой.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;text Landing / acquisition ↓ Guided interview UI ↓ Rules / decision-support layer ↓ Risk flags + explanations ↓ Document checklist / upload flow ↓ Report generator ↓ Secure sharing / reviewer handoff ↓ Analytics + feedback loop&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Главное здесь — не стек. Главное — разделение ответственности.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Компонент&lt;/th&gt;
&lt;th&gt;Главный вопрос&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interview UI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Понимает ли пользователь вопрос?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rules layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Почему система предлагает этот route?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Document layer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Какие документы нужны и зачем?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Report generator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Можно ли передать результат человеку?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Secure sharing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Кто получил доступ и на сколько времени?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Analytics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Где пользователи застревают?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reviewer flow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Где автоматизация должна остановиться?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Если делать production-версию, я бы не начинал с «давайте подключим всё ко всему». Я сначала добился сильного ядра: &lt;strong&gt;interview → route reasoning → checklist → organizer → review.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Где помогла IT Association
&lt;/h3&gt;

&lt;p&gt;Самое интересное в этой истории для меня — не сам интерфейс. Интерфейсы можно нарисовать, лендинг можно собрать, прототип можно сверстать.&lt;/p&gt;

&lt;p&gt;Гораздо важнее то, как идея стала возможной благодаря профессиональному кругу.&lt;/p&gt;

&lt;p&gt;В одиночку человек часто застревает в одном из режимов:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  инженер видит архитектуру, но не всегда видит go-to-market;
&lt;/li&gt;
&lt;li&gt;  дизайнер видит flow, но ему нужен доменный контекст;&lt;/li&gt;
&lt;li&gt;  founder видит рынок, но ему нужен реалистичный технический scope; &lt;/li&gt;
&lt;li&gt;  security-специалист видит риски, но может слишком рано усложнить MVP; &lt;/li&gt;
&lt;li&gt;  domain expert видит боль, но не всегда понимает, как превратить её в продукт.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F033x4302j2o9a0jouqyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F033x4302j2o9a0jouqyb.png" alt=" " width="799" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Когда эти люди начинают говорить друг с другом, появляется баланс.&lt;/p&gt;

&lt;p&gt;В нашем случае ассоциация дала не «волшебную команду», а гораздо более важную вещь —&amp;nbsp;&lt;strong&gt;среду доверия&lt;/strong&gt;. Там можно было обсуждать идею не как pitch, а как рабочую гипотезу:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  кому это нужно;&lt;/li&gt;
&lt;li&gt;  какая боль первична;&lt;/li&gt;
&lt;li&gt;  какой scope реалистичен за несколько месяцев; &lt;/li&gt;
&lt;li&gt;  что не стоит обещать;
&lt;/li&gt;
&lt;li&gt;  где нужен человек, а не automation;
&lt;/li&gt;
&lt;li&gt;  как показать продукт партнёрам;
&lt;/li&gt;
&lt;li&gt;  как объяснить идею без агрессивного маркетинга.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Так за несколько месяцев из разговоров, черновиков, обсуждений, экранов и итераций родился MVP-концепт, который можно показать пользователю, партнёру, команде или потенциальному интегратору.&lt;/p&gt;




&lt;h3&gt;
  
  
  Где помог Startup-accelerator KrokIT
&lt;/h3&gt;

&lt;p&gt;Если IT Association дала среду доверия, то акселератор помог добавить к этой истории проектную дисциплину.&lt;/p&gt;

&lt;p&gt;В какой-то момент стало понятно: у нас есть боль, есть аудитория, есть первые экраны, есть люди, которые готовы обсуждать продукт всерьёз. Но между «у нас есть хорошая идея» и «у нас есть MVP, который можно показывать партнёрам» лежит довольно большая прослойка работы.&lt;/p&gt;

&lt;p&gt;Там появляются вопросы, которые уже не решаются только дружеским обсуждением:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  как описать проект так, чтобы его понял не только разработчик;&lt;/li&gt;
&lt;li&gt;  сколько денег нужно на первый полезный MVP;&lt;/li&gt;
&lt;li&gt;  что именно входит в MVP, а что надо сознательно отложить;&lt;/li&gt;
&lt;li&gt;  как упаковать продукт для партнёров, клиентов и потенциальных инвесторов; &lt;/li&gt;
&lt;li&gt;  какие документы нужны для бренда, компании, договорённостей и инвестиций; &lt;/li&gt;
&lt;li&gt;  как говорить про pre-seed / seed, не превращая продукт в фантазию про будущего единорога;&lt;/li&gt;
&lt;li&gt;  где проекту нужен юридический, финансовый или организационный контур.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Именно здесь оказался полезен&amp;nbsp;&lt;a href="https://krokit.org/en/" rel="noopener noreferrer"&gt;&lt;strong&gt;Startup-accelerator KrokIT&lt;/strong&gt;&lt;/a&gt;. Он помог не просто «поверить в идею», а разобрать её как проект: оценить реалистичность, подготовить пакет материалов, подумать о финансировании, о юридико-организационной части, о регистрации бренда / компании, о возможной структуре инвестиционных договорённостей и о том, как этот MVP может жить внутри партнёрской экосистемы.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz4auf34emoupbdysmyym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz4auf34emoupbdysmyym.png" alt=" " width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;В таком виде история становится честнее. TaxBridge появился не потому, что кто-то однажды сказал: «давайте сделаем стартап». Он появился из связки трёх вещей:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;личное самообучение и погружение в проблему;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;профессиональное сообщество, где появились люди, доверие и обратная связь;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;акселерационная поддержка, которая помогла перевести идею в проектный формат.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Это хороший урок для начинающих founder'ов: нетворкинг может привести к людям и идее, но дальше всё равно нужна дисциплина — scope, документы, деньги, ответственность, roadmap, договорённости и нормальная упаковка проекта&lt;/p&gt;

&lt;p&gt;Я вижу это так:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Grow Cluster помог найти людей и контекст. KrokIT помог превратить идею в проект, который можно обсуждать с партнёрами, клиентами и инвесторами.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Что в этой истории увидит стартапер, студент и состоявшийся ИТ\ИБ эксперт
&lt;/h3&gt;

&lt;p&gt;Я специально добавил этот раздел, потому что один и тот же кейс полезен разным читателям по-разному.&lt;/p&gt;

&lt;h4&gt;
  
  
  Если вы стартапер
&lt;/h4&gt;

&lt;p&gt;Главный вывод:&amp;nbsp;&lt;strong&gt;не начинайте с фичей, начните с ограничения обещаний&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;В regulated / sensitive domain пользовательская боль может быть большой, но это не значит, что продукт должен сразу обещать полный outcome. Иногда правильный продукт — это не “мы всё сделаем за вас”, а “мы поможем вам безопасно пройти первый слой неопределённости”.&lt;/p&gt;

&lt;p&gt;Для стартапа это не слабая позиция. Это способ не утонуть в рисках до первой проверки гипотезы.&lt;/p&gt;

&lt;h4&gt;
  
  
  Если вы студент или начинающий специалист
&lt;/h4&gt;

&lt;p&gt;Главный вывод: pet project становится сильнее, когда у него есть реальная боль.&lt;/p&gt;

&lt;p&gt;Сделать dashboard можно за выходные. Сделать dashboard, который помогает реальному человеку понять сложный процесс, — совсем другой уровень. Здесь нужны тексты, интервью, ограничения, security thinking, empathy, domain research и способность объяснять.&lt;/p&gt;

&lt;p&gt;Это и есть разница между «я написал интерфейс» и «я начал мыслить как product engineer».&lt;/p&gt;

&lt;h4&gt;
  
  
  Если вы уже состоявшийся эксперт в найме
&lt;/h4&gt;

&lt;p&gt;Главный вывод: community projects могут прокачивать не только портфолио, но и leadership.&lt;/p&gt;

&lt;p&gt;Когда вы участвуете в таком проекте, вы учитесь:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  формулировать scope;
&lt;/li&gt;
&lt;li&gt;  спорить без разрушения команды;&lt;/li&gt;
&lt;li&gt;  объяснять риски не-security людям; &lt;/li&gt;
&lt;li&gt;  принимать компромиссы; &lt;/li&gt;
&lt;li&gt;  видеть продукт шире своей специализации;
&lt;/li&gt;
&lt;li&gt;  понимать, где автоматизация должна остановиться.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это навыки, которые очень трудно прокачать только через Jira tickets.&lt;/p&gt;

&lt;h4&gt;
  
  
  Если вы техлид или CTO
&lt;/h4&gt;

&lt;p&gt;Главный вывод: MVP в sensitive domain требует не меньше дисциплины, чем enterprise-проект, просто дисциплина другая.&lt;/p&gt;

&lt;p&gt;На ранней стадии не нужны все controls сразу. Но нужны правильные границы: data minimization, no false advice, review escalation, audit thinking, retention thinking, secure-by-design mindset.&lt;/p&gt;




&lt;h3&gt;
  
  
  Метрики: как понять, что такой продукт действительно полезен
&lt;/h3&gt;

&lt;p&gt;Чтобы статья не оставалась красивой историей, важно спросить: как вообще измерять пользу такого MVP? Хм.. и вот что я тогда выбрал с командой.&lt;/p&gt;

&lt;p&gt;Возможный набор метрик:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Метрика&lt;/th&gt;
&lt;th&gt;Что показывает&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Interview completion rate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Достаточно ли понятен flow.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Time to first route&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Быстро ли пользователь получает первый meaningful result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Checklist completion rate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Помогает ли продукт собрать документы.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Report download / share rate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ценен ли organizer как артефакт.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reviewer handoff rate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Где автоматизация упирается в сложность.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Support questions per user&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Уменьшается ли хаос.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;User confidence after flow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Стало ли пользователю понятнее, что делать дальше.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;False confidence incidents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Не создаёт ли продукт опасную уверенность.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sensitive data deletion requests&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Понятен ли пользователю контроль над данными.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Последняя метрика особенно важна. В sensitive-домене нельзя мерить успех только conversion rate. Иногда хороший продукт должен не конвертировать, а остановить пользователя и отправить его к специалисту.&lt;/p&gt;




&lt;h3&gt;
  
  
  Почему это не история про “мы стали единорогом”
&lt;/h3&gt;

&lt;p&gt;Мне неинтересно делать вид, что каждый MVP обязан закончиться большим раундом, взрывным ростом или публикацией в TechCrunch (а было бы круто, конечно:)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Иногда хороший результат выглядит намного спокойнее:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  мы нашли конкретную боль;&lt;/li&gt;
&lt;li&gt;  собрали людей вокруг идеи; &lt;/li&gt;
&lt;li&gt;  быстро сделали концепт (pre-MVP);
&lt;/li&gt;
&lt;li&gt;  проверили, как это может выглядеть в продукте;
&lt;/li&gt;
&lt;li&gt;  поняли границы автоматизации, посчитали cost проекта;
&lt;/li&gt;
&lt;li&gt;  получили материал для дальнейших разговоров, подготовили MVP Product Brief;
&lt;/li&gt;
&lt;li&gt;  увидели, как это можно встроить в партнёрскую экосистему (ИТ Акселератор как точка старта);&lt;/li&gt;
&lt;li&gt;  сделали что-то полезное для своей аудитории.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Это уже много. Я со-владелец продукта! Ееее, парни, свершилось! :)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Отдельно важным результатом стало то, что проект прошёл не только community-фильтр, но и accelerator-фильтр. Это разные вещи. В комьюнити ты проверяешь боль, язык, роли и доверие. В акселераторе — упаковку, деньги, документы, партнёрскую применимость, инвестиционный сценарий и реалистичность следующего шага.&lt;/p&gt;

&lt;p&gt;Именно эта связка сделала историю более взрослой:&amp;nbsp;&lt;strong&gt;не просто “мы придумали приложение”, а “мы прошли путь от боли и разговоров до проектного пакета, MVP-логики и потенциальной интеграции в партнёрскую экосистему”.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Для меня TaxBridge — это не история про быстрые деньги.&lt;/strong&gt;&lt;/em&gt; Это история про то, как профессиональный рост, нетворкинг и доверие могут привести к практическому результату. И, как видно, разговор шире чем кибербез (хотя как же без него обойтись:)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqbs9tkuoh3lyxa2pz0cv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqbs9tkuoh3lyxa2pz0cv.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Да, такой продукт можно развивать дальше. Его можно масштабировать. Его можно интегрировать в более крупную платформу. Его можно передать компании, у которой уже есть compliance, tax expertise и distribution. Его можно оставить как onboarding layer внутри партнёрской экосистемы.&lt;/p&gt;

&lt;p&gt;Но даже как MVP он уже показывает важную мысль:&amp;nbsp;&lt;strong&gt;сообщество может быть не только местом для разговоров, но и местом, где идеи становятся продуктами&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Практический чеклист: если вы хотите повторить такой путь
&lt;/h3&gt;

&lt;p&gt;Не обязательно делать tax product. Логика применима почти к любому сложному домену. &lt;strong&gt;Помни: я смог, ты тоже сможешь!&lt;/strong&gt;&lt;em&gt;(если готов)&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Найдите боль, которую можно объяснить одним абзацем
&lt;/h4&gt;

&lt;p&gt;Если вы не можете простыми словами объяснить, кому больно и почему, вы пока не нашли продуктовую проблему.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Соберите маленький круг людей с разными углами зрения
&lt;/h4&gt;

&lt;p&gt;Нужны не только разработчики. Нужны люди, которые видят UX, рынок, домен, безопасность, ограничения и коммуникацию.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Опишите non-goals
&lt;/h4&gt;

&lt;p&gt;Что вы точно не делаете? Что не обещаете? Где нужен человек? Где продукт должен остановиться?&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Сделайте артефакт, который можно показать (pre MVP)
&lt;/h4&gt;

&lt;p&gt;Landing, prototype, clickable flow, report mockup, decision tree, checklist — что угодно, что делает идею обсуждаемой.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Проверьте не “нравится ли”, а “стало ли понятнее”
&lt;/h4&gt;

&lt;p&gt;Хороший вопрос пользователю: «Что вы теперь будете делать следующим шагом?» Если он не может ответить, UX не сработал.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Добавьте security thinking до сбора данных
&lt;/h4&gt;

&lt;p&gt;Даже если это MVP, заранее решите, какие данные вы не собираете, что храните, кто видит, как удалить, где риски.&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Не стесняйтесь оставить human-in-the-loop
&lt;/h4&gt;

&lt;p&gt;В сложных доменах человек в процессе — это не слабость. Это control.&lt;/p&gt;

&lt;h3&gt;
  
  
  Несколько выводов для инженеров
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Нетворкинг работает, когда вы приносите ценность до запроса
&lt;/h4&gt;

&lt;p&gt;Не надо знакомиться только тогда, когда нужна рекомендация, работа или инвестиции. Лучше регулярно делиться знаниями, помогать, писать, обсуждать, давать feedback.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Хороший MVP начинается с узкой боли\проблемы
&lt;/h4&gt;

&lt;p&gt;TaxBridge не пытается решить все налоги США. Он начинается с конкретного сценария: русскоязычный newcomer, первый tax cycle, confusion, documents, route, organizer.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Не автоматизируйте то, что ещё не поняли
&lt;/h4&gt;

&lt;p&gt;Сначала надо понять пользовательский процесс. Потом workflow. Потом границы ответственности. И только потом глубокую автоматизацию.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. В sensitive-доменах честность важнее wow-эффекта
&lt;/h4&gt;

&lt;p&gt;Если продукт касается tax, immigration, healthcare, finance или legal, лучше честно сказать «здесь нужен professional review», чем красиво обмануть пользователя ощущением полной автоматизации.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Коммуникация — это инженерный навык, да!
&lt;/h4&gt;

&lt;p&gt;Умение объяснить идею дизайнеру, разработчику, пользователю, партнёру и reviewer — это такая же часть engineering, как код и архитектура.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Сообщество может быть частью engineering process
&lt;/h4&gt;

&lt;p&gt;Не как рекламный фон, а как среда, где появляются вопросы, обратная связь, первые пользователи, первые партнёры и первые честные ограничения.&lt;/p&gt;




&lt;h3&gt;
  
  
  Вместо заключения
&lt;/h3&gt;

&lt;p&gt;Профессиональная карьера растет не только от того, сколько технологий ты выучил и сколько сертификатов получил. Хард скиллы - база на старте, без "Б" это так, и мощный двигатель на карьерном треке. И наступает момент, когда что бы расти дальше требуется нечто большее чем "все знать".&lt;/p&gt;

&lt;p&gt;Да, мен, технологии важны. Самообучение важно и очень! Писать статьи, строить портфолио, развиваться в Product Security, DevSecOps, Software Engineering — всё это важно. Но в какой-то момент следующий уровень появляется через людей. Это коммуникации, мышление теми кто окружает в едином треке. Поиск новых возможностей (и часто это не hire staff), ну, ты надеюсь уже понял о чем я:)&lt;/p&gt;

&lt;p&gt;Через тех, кто задаёт неудобный вопрос. Через тех, кто даёт честную обратную связь. Через тех, кто предлагает посмотреть на проблему иначе. Через тех, кто может сесть рядом и сказать: «Окей, давай не обсуждать абстрактно, давай соберём MVP».&lt;/p&gt;

&lt;p&gt;Так профессиональное окружение перестаёт быть фоном. Оно становится частью engineering process. И иногда именно из такого окружения рождается продукт: небольшой, неидеальный, не претендующий на революцию, но решающий конкретную человеческую проблему.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Для меня TaxBridge — именно такой пример.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Идем дальше! Keep forward!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F40fsd32z4sql89g01arq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F40fsd32z4sql89g01arq.png" alt=" " width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;P.S. За связью с автором, сотрудничеством, коллоборацией - пиши на официальные аккаунты&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Источники и полезные ссылки:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  IRS: Determining an individual’s tax residency status: &lt;a href="https://www.irs.gov/individuals/international-taxpayers/determining-an-individuals-tax-residency-status" rel="noopener noreferrer"&gt;https://www.irs.gov/individuals/international-taxpayers/determining-an-individuals-tax-residency-status&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  IRS: U.S. tax residency — Green card test: &lt;a href="https://www.irs.gov/individuals/international-taxpayers/us-tax-residency-green-card-test" rel="noopener noreferrer"&gt;https://www.irs.gov/individuals/international-taxpayers/us-tax-residency-green-card-test&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  IRS: Substantial presence test: &lt;a href="https://www.irs.gov/individuals/international-taxpayers/substantial-presence-test" rel="noopener noreferrer"&gt;https://www.irs.gov/individuals/international-taxpayers/substantial-presence-test&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  IRS: Free tax return preparation for qualifying taxpayers: &lt;a href="https://www.irs.gov/individuals/free-tax-return-preparation-for-qualifying-taxpayers" rel="noopener noreferrer"&gt;https://www.irs.gov/individuals/free-tax-return-preparation-for-qualifying-taxpayers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Grow Cluster IT Association: &lt;a href="https://growcluster.com/en/" rel="noopener noreferrer"&gt;https://growcluster.com/en/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Startup-accelerator IT Krokit &lt;a href="https://krokit.org/en/" rel="noopener noreferrer"&gt;https://krokit.org/en/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Disclaimer: статья описывает продуктовый и инженерный подход. Это не налоговая, юридическая или бухгалтерская консультация.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
