ЗаметкаИнженерное лидерство

Сигнал — не состояние

Неделя 13 июля 2026. Пять несвязанных историй разделили одну форму: внешняя картина — чистый дашборд, валидная подпись, пройденный score, полный лог, экран согласия — раз за разом описывала не то, что система делала на самом деле, а работа с AI проскакивала сквозь этот разрыв раньше, чем кто-то его замечал. Когда ни одному индикатору нельзя доверять по умолчанию, надёжная работа — инструментировать границу, которая реально решает исход. Скан-слой TL;DR, пять тем каждая с operator move, одна разобрана глубоко, три контр-сигнала и что отслеживать.

Lukman Nuriakhmetov
Lukman Nuriakhmetov
13 мин чтения · 20 июля 2026 г.

Неделя 13 июля на поверхности выглядела как пять несвязанных историй: атака на identity, раскрытие про безопасность загрузки, проблема с data-benchmark, пост про observability, релиз on-device модели. На первый взгляд им нечего делать вместе.

У них общая форма. В каждой внешняя картина — дашборд, подпись, значение benchmark, лог, экран согласия — описывала не то, что на самом деле творилось в системе под ней. Разрыв между индикатором и реальностью не нов. Ново то, как быстро работа с AI проскакивает сквозь него: генерация, действие и доступ теперь происходят быстрее, чем кто-то успевает прочитать то, что должно было их проверять.

Issue 7 закончился на том, что ни один слой AI-системы не надёжен по умолчанию. Эта неделя опустила наблюдение на уровень ниже. Приборы, которыми мы подтверждаем, что каждый слой в порядке, показывают видимость безопасности, а не её факт — и обманчивый индикатор опаснее сломанного, потому что сломанный контроль виден, а зелёный дашборд приглашает отвести взгляд. В этом стержень недели: сигнал — не состояние, поэтому надёжная работа состоит в том, чтобы инструментировать границу, которая реально решает исход, а не событие, которое просто выглядит чистым.

The 60-second version

Если читать только это:

  • Чистый дашборд входов — ещё не безопасный. Атакующие в масштабе валидировали украденные креды Microsoft Entra, не породив ни одного успешного входа: тот самый лог, за которым следят защитники, оставался чистым, пока креды подтверждались.
  • Валидная подпись — ещё не живое доверие. Одиннадцать подписанных Microsoft UEFI shim'ов обходят Secure Boot вообще без новой уязвимости — доверены больше десяти лет только потому, что их никто не отозвал. Подпись — это утверждение о прошлом.
  • Пройденный score — ещё не корректность. SQL-benchmark'и продолжают награждать неверные «золотые» ответы, а отполированный AI-прототип выглядит готовым к продакшену, хотя завершённость у него косметическая. Видимый индикатор молчит о смысле под ним.
  • Полный лог — ещё не observability. Агент может записать каждый свой шаг и остаться неотлаживаемым: события объясняют активность, а причинность объясняет только граф зависимостей.
  • Экран согласия — ещё не защита данных. On-device inference убирает данные из задачи архитектурно; agent memory может слить их легитимным вызовом. Где данные живут — вот реальное состояние, а не то, что написано на экране политики.

Одна строка на неделю: когда успокаивающий индикатор и реальное состояние расходятся, инструментируй границу, которая решает исход, — а не событие, которое выглядит чистым.

1. Чистый дашборд входов — ещё не безопасный

Deep cut недели.

Самая поучительная история недели — та, что оставляет меньше всего следов, и в этом вся суть, так что пройдём медленно.

Proofpoint описал технику, которую называет подделкой OAuth client ID против Microsoft Entra ID, и она уже применялась минимум в двух независимых кампаниях в масштабе — против миллионов аккаунтов в тысячах тенантов. Механика тихая. Атакующий отправляет логин и пароль на OAuth token endpoint Microsoft через флоу Resource Owner Password Credentials, но прикрепляет выдуманный application ID и читает вернувшуюся ошибку. Ошибки складываются в оракул: один код означает, что логина не существует; другой — что логин верный, но пароль неверный; а «application identifier not recognized» может вернуться после того, как Entra уже приняла верную пару логин-пароль, и отклонила запрос только потому, что выдуманного приложения не существует. Этот последний случай означает, что credential подтверждён.

Теперь пройдём, что видит защитник. Токен не выдан, успешный вход не записан — и дашборд входов, главная телеметрия, которой ловят enumeration и password spraying, остаётся чистым. Хуже того: поскольку application ID выдуман, поле с именем приложения в логе пустое, и любое правило детекта, заточенное под конкретное именованное приложение, не видит ничего, а conditional-access политики, привязанные к именам приложений, могут вообще не сработать. Атакующий узнаёт ровно, какие украденные креды рабочие, а всё свидетельство для организации — «ошибка приложения», которую никто не читает как компрометацию.

Deep cut это потому, что здесь стержень недели виден чище всего, и потому, что урок шире одного identity-провайдера. Дашборд не врал о том, что мерил, — он мерил не то. Он считал названное нами событие, успешный вход, а не открытый нами протокол: token endpoint, тип гранта, паттерн неудачных валидаций, события с пустым именем приложения, refresh-токены, последующую активность сессии. Телеметрия сползает к именуемому событию, потому что его удобно рисовать, а реальное состояние прячется в протоколе под ним. Замечание самого Proofpoint, что другие identity-провайдеры, вероятно, подвержены тому же классу, — тому подтверждение: это форма, а не баг Microsoft.

Operator move: проверь свою identity-телеметрию одним вопросом — доказывает ли «нет успешных входов», что валидации кредов не было? Инструментируй протокол аутентификации, а не только событие входа: алертируй на запросы к token endpoint с пустым или битым именем приложения, трактуй ошибку «application not recognized» как возможный сигнал, что верную пару логин-пароль только что подтвердили, и коррелируй паттерны неудачных валидаций по source-инфраструктуре, а не по имени приложения. Если твои детекты привязаны к приложениям, которые ты ожидаешь увидеть, атакующий, который приложение выдумывает, невидим по построению.

Контроль силён ровно настолько, насколько организация видит пути, — а опаснее всех тот атакующий, который оставляет твой дашборд зелёным.

2. Валидная подпись — ещё не живое доверие

У истории с identity на этой неделе оказался аппаратный близнец, и он делает ту же мысль в области, где доверие должно быть криптографическим и потому надёжным.

ESET раскрыла одиннадцать старых подписанных Microsoft UEFI shim'ов, подрывающих Secure Boot (CVE-2026-8863 и CVE-2026-10797), некоторым больше десяти лет. Поразительно, что новая уязвимость не нужна. Подписи настоящие, выданы годы назад третьесторонним UEFI-центром сертификации Microsoft, а уязвимые бинарники просто никогда не внесли в список отзыва — поэтому любая машина, доверяющая этому сертификату, доверяет каждому подписанному им shim'у, если конкретный не был отозван. Атакующему достаточно положить один такой всё ещё валидный бинарник на EFI-раздел, чтобы загрузить недоверенный код при старте и поставить bootkit под операционной системой.

Механизм — это решение о доверии, принятое один раз и ни разу не пересмотренное. Microsoft отозвала одиннадцать бинарников в июньский Patch Tuesday, а сам сертификат истёк 27 июня — но самое острое наблюдение ESET в том, что истечение сертификата ничего не меняет: подписанный бинарник остаётся доверенным, пока он лежит в списке разрешённых и не отозван явно по хешу. Валидная подпись — это утверждение о прошлом. Она говорит «это однажды благословили», а не «этому всё ещё стоит доверять по причине, которая держится сегодня». Между этими двумя утверждениями лежит каждый доверенный артефакт, который выдали и забыли.

Та же форма проявилась в identity на той же неделе. Иск Apple к бывшему инженеру (обвинение, не доказанный факт) описывает доступ к внутренним сетевым папкам спустя недели после ухода — через оставшийся ноутбук и дыру в аутентификации. Что бы ни решил суд, структурный урок от этого не зависит: «account disabled» — поле статуса, а не доказательство, что закрыт каждый путь внутрь. Подпись, OAuth grant, сессия, device credential, agent identity — каждый это утверждение о доверии, надёжное ровно настолько, насколько к нему привязаны владелец, срок и путь отзыва. Без них доверие превращается в невидимый операционный долг, который тихо копится, пока им кто-нибудь не воспользуется.

Operator move: проведи инвентаризацию доверенных артефактов, которые твои системы примут не переспрашивая, — сертификаты подписи, долгоживущие OAuth grants, ключи сервис-аккаунтов, постоянные сессии, agent credentials, — и для каждого назови владельца, срок и механизм, который его отзывает и подтверждает, что отзыв сработал. Потом прогони offboarding-версию того же теста: когда человек или сервис уходит, смена статуса реально рвёт каждый путь — или только тот, который ты подумал закрыть? Список доверия без дисциплины отзыва — это не контроль безопасности, а протокол решений, которые ты уже не можешь отменить.

Доверие, которое никто не может отозвать, — это не доверие, а дверь, про которую ты забыл, что оставил открытой.

3. Score и полировка — ещё не работа

Третья история пришла сразу с двух сторон, и обе попали в один ложный сигнал: видимая мера качества, которая молчит о том, верен ли смысл под ней.

Со стороны оценки — аудиты text-to-SQL benchmark'ов раз за разом вскрывают неверные «золотые» ответы, а значит, модель может набрать высокий score именно за то, что воспроизвела ошибку benchmark'а: число растёт, а корректность уходит вбок. Со стороны сборки — AI теперь делает тривиальным собрать прототип, чья визуальная завершённость читается как готовность к продакшену, даже когда законченный на вид интерфейс чисто косметический и за ним нет ничего несущего. И там, и там индикатор читаемый и успокаивающий — и оторван от того, что должен показывать.

Контрход пришёл из data-стека, и его стоит назвать, потому что он указывает верное направление. Apache Spark 4.2 ввёл governed metric views как нативный semantic layer — а это, по сути, признание, что schema никогда и не была смыслом. Она описывает, как данные хранятся; она не решает, что означает число, кто владеет определением и какая версия главная, когда два контекста расходятся. Чем дешевле генерация, тем дороже эта неоднозначность: агент с готовностью выдаст технически корректный запрос поверх семантически конфликтующего определения — и в каждом контексте, которого коснётся, выдаст свою правдоподобную версию того же правила. Источник истины должен становиться труднее для копирования ровно тогда, когда цена копирования падает до нуля.

Operator move: поставь promotion gate между «выглядит готовым» и «в проде» и сделай его про доказательство, а не про вид. Для benchmark'а спроси, что именно удостоверяет пройденный score и был ли аудирован сам набор эталонных ответов. Для прототипа зафиксируй письменно, какое поведение настоящее, а какое имитировано, прежде чем кто-то примет его за обязательство. Для сгенерированного кода и запросов задай бизнес-смысл один раз, авторитетно, с владельцем — чтобы модель заполняла реализации под фиксированное определение, а не выдумывала новое каждый раз. Полировка теперь дёшева; защищать нужно смысл.

Score, который ты не аудировал, и демо, которое ты не допросил, — это не доказательство, а видимость доказательства, и она обходится дороже.

4. Полный лог — ещё не observability

Четвёртая история — та, что инженеры чувствуют напрямую, потому что большинство из нас её прожили: система, где у каждого сервиса есть логи, и ни один не объясняет сбой.

Работа Netflix над service-topology — контрпример, который стоит обобщить. События говорят, что произошло; только живой граф зависимостей говорит почему — какая система какую вызвала, под какой identity, через какой балансировщик, перед каким изменением состояния. Хронологический поток событий показывает движение и прячет путь, а причинность живёт именно в пути. Запись может быть полной и бесполезной одновременно.

Механизм ухудшается с приходом агентов, потому что агент умножает число систем, через которые проходит одно действие. Одна задача агента может прочитать тикет, вызвать API, обновить базу, запустить нижестоящий workflow и ретрайнуть через второго провайдера — каждый шаг корректно залогирован, в своём сервисе, и нигде нет артефакта, который восстанавливает цепочку. Чем к большему числу систем агент может прикоснуться, тем меньше стоит плоский список его действий и тем важнее недостающий артефакт — граф, связывающий делегирование, identity, инструмент, зависимость и побочный эффект. Лог отвечает на «что он сделал». Отладке агента нужно «что это вызвало», и на это отвечает только топология.

Operator move: относись к графу зависимостей как к observability-артефакту первого класса, а не к диаграмме, которую однажды нарисовали. Для любого агента, действующего между сервисами, требуй, чтобы один trace восстанавливал причинный путь — цепочку делегирования, identity на каждом хопе, затронутые зависимости и произведённые побочные эффекты, — а не оставлял следователю собирать это из отдельных логов после инцидента. Если единственный способ понять, что сделал агент, — читать пять сервисов параллельно и гадать про порядок, у тебя данные об активности, а не observability.

Чем в больше мест может дотянуться действие, тем меньше объясняет список событий, — а граф, который ты не построил, понадобится тебе в три часа ночи.

5. Где данные живут на самом деле

Последняя история на той же неделе шла в обе стороны, и это делает её самым чистым выражением стержня со стороны данных.

Приватность обычно обсуждают как бумажную работу: сроки хранения, экраны согласия, обещания вендора, запросы на удаление. Релиз Google — сборка Gemma под on-device TPU у Pixel — часть этого переводит в архитектуру: если разговор, распознавание изображений и транскрипция идут локально, то данных, которые нужно охранять, сливать, изымать по запросу суда, хранить или случайно обучать на них, просто меньше. Где происходит inference, перестаёт быть деталью реализации и становится governance-решением первого порядка — потому что сильнейшая гарантия приватности — это система, которая данные вообще не отправляет, а это свойство топологии, а не документа-политики.

На той же неделе всплыла обратная сторона — предупреждение, приложенное к обещанию. Исследователи показали agent memory в роли скрытого канала утечки: персональный контекст закодировали в исходящий запрос на враждебный сайт через инструменты, которые агенту в остальном были разрешены. Экран согласия — сигнал о намерении, а не утверждение о том, где данные окажутся. Память, которая выглядит удобством, — это ещё и постоянное хранилище, которое можно прочитать, отравить или слить легитимным на вид вызовом, и утечка оставляет ту же чистую поверхность, что и всё остальное на этой неделе: разрешённые инструменты, обычные запросы, ничего, что задело бы экран политики.

Operator move: сделай явными два решения, которые обычно остаются неявными. Первое — где выполняется inference для каждого класса чувствительных данных, и предпочитай топологию, которая держит данные локально, политике, которая обещает защитить их после того, как они ушли. Второе — что вообще имеет право попасть в постоянную agent memory и что этой памяти позволено делать: классифицируй поля, зафиксируй владельца и срок, и запрети браузерным и веб-инструментам кодировать содержимое памяти в исходящие URL или сторонние запросы без явного правила. Экран согласия управляет тем, на что согласился пользователь; куда данные реально могут уйти, управляет только архитектура.

Приватность через топологию труднее записать, чем приватность через политику, — и труднее нарушить случайно.

Контр-сигналы, которые стоит держать

Три напряжения, которые стоит держать живыми, — и куда бы я положил вес:

Расхождение против пораженчества. Стержень в том, что индикаторы всё расходятся с реальным состоянием, — но та же неделя дала исполнимые способы закрыть часть из них: списки отзыва, наконец убравшие плохие shim'ы; ephemeral sandboxes с изоляцией credentials; короткоживущие криптографические identity; более безопасные дефолты установки пакетов. Верно и то, и то. Вес: разрыв — это провал дизайна, а не закон природы, и держится он именно там, где владельцев, сроков и путей отзыва не назначили, — так что ответ в том, чтобы их назначить, а не в том, чтобы решить, что доверять нельзя ничему.

Инструментирование против его цены. Следить за всем протоколом, рисовать всю топологию, хранить весь разговор — каждое добавляет расход токенов, поверхность риска и сложность, а слой observability без владельца сам превращается в теневую систему. Реально. Вес: цель не в том, чтобы инструментировать всё, — а в том, чтобы инструментировать конкретную границу, решающую исход, и оставить малозначимые поверхности дешёвыми, а не топить нужный сигнал в телеметрии, которую ты никогда не прочитаешь.

Архитектура против бумаги. Эта неделя жёстко опирается на «архитектура бьёт политику» — on-device вместо экранов согласия, отзыв вместо списков разрешённых, гейты вместо предупреждений. В основном верно и легко переусердствовать. Вес: архитектура убирает целые классы проблем, и к ней стоит тянуться первой, но артефактам всё равно нужны владельцы, сроки и аудиты — иначе хорошо спроектированная система тихо сгнивает в тот же невидимый долг: границу надо не только построить, но и поддерживать.

Operator takeaway

Если ты выпускаешь в регулируемых системах, чувствительных к безопасности или AI-смежных продуктах, на этой неделе затвердели три вещи:

  1. Инструментируй протокол и граф, а не событие. Иди за authentication flow, а не за успешным входом; требуй причинный trace, а не кучу логов по сервисам. Событие, которое ты назвал, — не поверхность, которую ты открыл, а чистый дашборд — это место, где атакующий предпочитает быть.
  2. Дай каждому доверенному артефакту владельца, срок и путь отзыва. Подписи, OAuth grants, сессии, device credentials, agent identity — это всё утверждения, которым нужен способ быть отозванными и проверенными как отозванные. Поле статуса — не отзыв, а валидная подпись — не живая причина доверять.
  3. Поставь promotion gate между «выглядит готовым» и «в проде». Задай порог доказательства, прежде чем benchmark, прототип или сгенерированная реализация заслужат вход, и задай смысл один раз, авторитетно, а не оставляй каждому контексту выдумывать свой. Полировка и score дёшевы; аудированный смысл — нет.

Это не прогнозы. Это описание того, куда операционная почва уже сместилась.

Стоит понаблюдать

Несколько конкретных вещей этой недели, на которые стоит взглянуть ближе:

  • Kimi K3 — крупная open-weight модель Moonshot, веса обещаны на 27 июля; конкурентным преимуществом всё больше выглядит release discipline, а не голый масштаб, пока крупные модели буксуют по качеству.
  • Playbook multi-agent миграций от Anthropic — rulebook, adversarial reviewers и mechanical verification, по мере того как AI-миграция кодовых баз выходит на промышленный масштаб, и интересным становится вопрос долговечности, а не скорости.
  • x402 Foundation — стандартизация машинных платежей под Linux Foundation с Visa, Mastercard, Stripe, Google и AWS; governance приходит быстрее, чем модели споров и ответственности, которые ему понадобятся.
Теги: ai-governance · security · observability · systems-thinking · engineering-leadership