Ева Костина
Опасный Код

Глава 1. Нулевой спринт

Сорок второй этаж башни «Федерация» всегда жил по законам герметичного аквариума: здесь не существовало смены сезонов, уличной пыли и звуков города. Только стерильный, высушенный кондиционерами воздух, мерный гул вентиляционных шахт и панорамное остекление, за которым вечерняя Москва плавилась в багрово-сизом смоге заката.

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

До подписания Term Sheet с венчурным фондом «Horizon Capital» оставалось ровно четырнадцать дней. Четырнадцать дней и три миллиона долларов инвестиций раунда «А», которые должны были превратить «NeuroMetric» из дерзкого стартапа в единорога с монопольным правом на анализ предиктивных нейросетей.

Для рынка это была красивая история о технологическом прорыве. Для Киры — единственная стена, отделяющая ее от ледяного, вымерзшего кошмара детства: безымянного моногорода за Уралом, скрипучего линолеума в полуразрушенной хрущевке, вечного запаха дешевого растительного масла и материнского голоса, звенящего от бессильной пьяной злобы. Кира поклялась себе еще в семнадцать лет: она скорее сгорит дотла на работе, чем позволит себе оступиться и упасть обратно на социальное дно. Люди вокруг были ресурсом. Строками в зарплатной ведомости. Юнитами эффективности, обязанными работать так же безупречно, как швейцарские часы.

Тишину опенспейса разрезал низкий системный зуммер мониторинговой панели.

Звук был коротким, но в нем безошибочно угадывалась катастрофа.

Кира медленно повернулась на каблуках. Тонкие шпильки туфель сухо щелкнули по полированному керамограниту, словно взводимый курок.

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

CRITICAL_FAILURE: CORE_DUMP / ENGINE_KERNEL_PANIC [EXIT_CODE_0xDEAD]

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

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

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

— Вадим, — негромко произнесла Кира. Ее голос звучал обманчиво мягко, без единой повышенной интонации, но каждое слово падало с весом гильотинного лезвия. — Скажи мне, что это визуальный глитч интерфейса мониторинга.

— К-Кира Алексеевна… — парень дернулся, едва не опрокинув банку энергетика. — Ядро… мы запустили стресс-тест под нагрузкой для европейских партнеров. И на девяноста тысячах параллельных запросов сервис упал. Память утекла в ноль. Все висит.

— Висит, — повторила она, глядя на экран сверху вниз. Тонкие пальцы с безупречным нюдовым маникюром плавно легли на спинку его кресла. — Через две недели у нас финальный аудит с техкомитетом фонда. Если ядро упадет перед аудиторами, нас не просто не профинансируют. Наш бренд растопчут, а неустойка по предварительным соглашениям похоронит компанию за сорок восемь часов.

— Мы пытаемся поднять резервный кластер… — пролепетал Вадим.

— Пытаетесь? — Кира наклонила голову, и прядь темных волос скользнула по точеной скуле. В ее взгляде не было ярости — там сквозило чистое, анатомическое презрение хищника к хромой добыче. — Я плачу этому отделу сорок тысяч долларов в месяц не за попытки, Вадим. Я покупаю результаты. Если через пятнадцать минут упавший сервис не вернется в рабочий пайплайн, вы все останетесь здесь ночевать. А если он не встанет к утру — вы выйдете из этого здания с волчьими билетами и такими характеристиками, что вас не возьмут верстать лендинги даже в шаурмичную на окраине. Я ясно выражаюсь?

Несколько человек за соседними столами сжались. Воздух в комнате сгустился до состояния разреженного вакуума.

Никто не смел поднять глаз. Никто, кроме одного человека.

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

Звук ударил по натянутым нервам команды хлеще, чем вой пожарной тревоги.

Кира медленно выпрямилась. Ее серо-зеленые глаза сузились, превратившись в две ледяные щели.

В дальнем углу опенспейса, полуразвалившись в эргономичном кресле и закинув длинные ноги в чистых белых кедах прямо на металлический каркас системного блока, сидел Марк Соколов. Архитектор ядра. Человек, чье резюме Кира лично переманивала из берлинского финтеха полгода назад, выбив ему неприлично высокий опцион и карт-бланш на рефакторинг.

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

От него пахло морозным воздухом, смолистым кедром и свежесмолотым кофе. Никакого страха. Ни грамма субординации.

— Повтори, — тихо сказала Кира, делая шаг в его сторону. Шаг был выверенным, полным скрытой угрозы.

— Запросто, Романова, — Марк даже не подумал встать. Он крутанулся в кресле, повернувшись к ней всем корпусом, и скрестил руки на груди. — Я сказал: прекрати устраивать этот убогий цирк с запугиванием джунов. Вадим не виноват, что ты лично пообещала инвесторам невозможные сроки и заставила раскатить в прод сырой функционал без сквозного регрессионного тестирования.

В опенспейсе перестали дышать. Даже вентиляторы компьютеров, казалось, стали работать тише.

— Соколов, — процедила Кира, подойдя вплотную к его рабочему месту и опершись ладонями о край столешницы. — Напомни мне, чья подпись стоит под архитектурным планом текущего спринта? Твоя. Ты гарантировал, что ядро выдержит нагрузку в сто тысяч RPS.

— Мой код держал нагрузку, пока ты три дня назад не вломилась в бэклог со своими «гениальными бизнес-правками», — Марк подался вперед.

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

— Ты захотела красивую динамическую аналитику прямо на демо-панели для своих лощеных инвесторов в кашемировых пиджаках, — Марк говорил ровно, глядя ей прямо в зрачки, не моргая и не отводя глаз. — Я предупреждал тебя лично: эта надстройка жрет память потоков и создаст блокировку базы данных при пиковой нагрузке. Но ты же у нас великий лидер. Ты сказала: «Марк, сделай красиво, оптимизацией займемся после раунда». Ну вот. Смотри на экран. Красиво? Очень концептуально горит.

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

— Моя задача — строить устойчивую архитектуру, а не замазывать трещины в фундаменте золотой краской перед продажей стартапа, — отрезал Марк. Он встал на ноги.

Его рост — метр восемьдесят восемь — дал ему мгновенное физическое преимущество. Он навис над ней, заставляя Киру чуть приподнять подбородок, чтобы не терять зрительный контакт. Но она не отступила ни на миллиметр. Напротив, ее осанка стала еще жестче, словно внутри нее был натянут стальной трос.

— Если этот наемный сотрудник тебе так мешает, Романова, — Марк цинично усмехнулся и небрежно подтолкнул к ней стопку чистых листов для заметок, — подпиши мое увольнение прямо сейчас. Давай. Я соберу рюкзак за четыре минуты. У меня в почте лежит три оффера из Калифорнии и два из Лондона с релокацией за их счет. А ты останешься здесь. За две недели до раунда. С упавшим сервером, чужим кодом и Вадимом, который от звука твоих шагов падает в обморок.

Кира сжала челюсти так, что заболели скулы. Внутри все клокотало. Он бил с хирургической точностью прямо по ее главному страху — потерять контроль над сделкой, сорвать раунд, потерять все. Марк Соколов знал себе цену. И, что было хуже всего, он знал реальную расстановку сил. Без него пересобрать упавший модуль за четырнадцать дней было математически невозможно.

Она заставила свои лицевые мышцы застыть в маске абсолютного, ледяного равнодушия.

— Спектакль окончен, — Кира медленно обвела взглядом притихший зал. — Все за работу. Вадим, переключи трафик на заглушку. Соколов — за мной. В кабинет. Живо.

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

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

Дверь кабинета CEO захлопнулась с глухим щелчком магнитно-герметичного замка. Звуки опенспейса мгновенно отрезало.

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

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

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

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

— Ты переходишь границы.

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

Кира на мгновение заколебалась, возмущенная его командным тоном, но профессиональное чутье пересилило уязвленную гордость. Она подошла и встала рядом с ним у подоконника.

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

— Смотри на логи падения, — Марк ткнул пальцем с аккуратным коротким ногтем в экран. — Вот здесь. Видишь эту аномалию?

Кира всмотрелась в столбцы шестнадцатеричных адресов и временных меток.

— Ошибка распределения динамической памяти, — нахмурилась она, пытаясь включить весь свой аналитический багаж. — Это то, о чем ты говорил. Переполнение буфера из-за аналитического скрипта.

— Нет, — Марк покачал головой, и его лицо стало жестким. — Я тоже сначала так думал. Но посмотри на временной сдвиг. За три миллисекунды до того, как упал сервис аналитики, был принудительно открыт порт доступа к корневому хранилищу данных. Наш сервис упал не от перегрузки. Падение ядра было лишь дымовой завесой.

Сердце Киры пропустило тяжелый, глухой удар.

— Что это значит?

— Кто-то инициировал аварийный сброс системы изнутри нашей локальной сети, чтобы отключить протоколы шифрования и автоматический файрвол, — Марк начал вбивать быстрые команды проверки целостности репозиториев, его челюсти сжались. — Кто-то взломал ядро не снаружи. Они использовали мастер-ключ администратора.

— Это невозможно, — ее голос впервые за вечер дрогнул, но Кира мгновенно вернула себе ледяной тон. — Мастер-ключи есть только у меня, у тебя и у моего сооснователя.

— Значит, круг подозреваемых предельно сузился, — бросил Марк с ядовитой иронией.

В этот момент на его экране строчки кода резко оборвались.

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

— Черт… — прорычал Марк, яростно вбивая комбинацию аварийного прерывания. Клавиши жалобно защелкали. — Нас блокируют. Кто-то перехватил права суперпользователя.

Основной монитор на столе Киры внезапно вспыхнул ослепительно-белым светом.

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

Строка статуса гласила:

[CRITICAL ALERT]

UNAUTHORIZED EXTERNAL SYNC INITIALIZED

TARGET: UNKNOWN_REMOTE_SERVER (IP: ENCRYPTED)

CORE ALGORITHM &NEURAL WEIGHTS: 100% EXFILTRATED

DATABASE ACCESS: LOCKED BY ROOT PROTOCOL

Через секунду экран погас, оставив в центре только одну мигающую строчку:

«Спасибо за сотрудничество, Кира Алексеевна. Ваша сделка аннулирована».

В кабинете повисла абсолютная, оглушающая тишина.

Кира замерла перед темным экраном, чувствуя, как внутри все затягивает ледяной пустотой. Пальцы мелко задрожали, и она судорожно сжала их в кулаки, пряча руки в карманы жакета. Весь ее мир, вся броня, которую она выстраивала годами жесточайшего труда, только что треснула пополам.

Марк медленно закрыл свой ноутбук. Его насмешливость испарилась без следа. В полумраке кабинета, подсвеченном лишь огнями ночной Москвы за панорамным окном, его взгляд стал тяжелым, как свинец.

— Нас только что обокрали под ноль, Романова, — тихо произнес он, глядя ей в лицо. — И сделал это кто-то, кто сидит за твоим столом переговоров.

Г