«Яндекс» раскрыл первые результаты расследования публикации исходного кода и нашёл много нарушений ИБ-политик в компании

gq42v0guhffrefiwtxibunldnba.jpeg

30 января 2023 года «Яндекс» раскрыл первые результаты расследования инцидента с публикацией в открытом доступе исходного кода сервисов и сообщил, что нашёл много нарушений сотрудниками в исполнении политик по ИБ компании, включая использование временных решений (костылей), наличие алгоритма, который может включать микрофон устройства с «Алисой» в любой случайный момент (для внутренних тестов), публикацию нецензурных слов в исходном коде тестовой части сервисов и многих других ошибок.

На прошлой неделе в открытом доступе были обнаружены фрагменты программного кода некоторых сервисов «Яндекса». Мы продолжаем внутреннее расследование инцидента и считаем важным поделиться первыми результатами.

Что мы обнаружили


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

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

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

Вот несколько примеров нарушений ИБ в коде:

● В коде содержались контактные данные некоторых партнёров. Например, водителей — в некоторых случаях их контакты и номера водительских удостоверений передавались из одного таксопарка в другой.

● Зафиксированы случаи, когда логику работы сервисов корректировали не алгоритмическим способом, а «костылями» (на языке разработчиков так называется временное решение, реализованное неоптимально и впопыхах). Через такие «костыли» исправляли отдельные ошибки системы рекомендаций, которая отвечает за дополнительные элементы поисковой выдачи, и регулировали настройки поиска по картинкам и видео.

● В сервисе «Яндекс Лавка» существовала возможность ручной настройки рекомендаций любых товаров без пометки об их рекламном характере.

● Наличие приоритетной поддержки для отдельных групп пользователей в сервисах «Такси» и «Еды».

● Некоторые части кода содержали слова, которые никак не влияли на работу сервисов, но сами по себе оскорбительны для людей разных рас и национальностей.

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

Один из принципов «Яндекса» гласит: наша работа строится на принципах честности и прозрачности. Мы исходим из того, что любой внутренний диалог, документ или исходный код при определённых обстоятельствах может стать публичным. И если это случится, нам не должно быть стыдно.

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

Почему это произошло и какие меры мы предпримем


Большинство выявленных проблем связано с попытками вручную внести в сервис улучшение или устранить ошибку. Ошибки — часть жизни. Их не избежать, если у тебя не статичный, а постоянно развивающийся продукт. В компании долгое время существует подход Zero Bug Policy — политика нулевой терпимости к «багам». Реализация подхода на практике приводила к тому, что часть «багов» исправлялись с помощью временных решений, устраняющих конкретную проблему или неправильный результат работы алгоритма. «Яндекс» сохранит Zero Bug Policy, но способы её реализации будут пересмотрены.

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

С вопросами техноэтики мы сталкивались и раньше. Например, в 2020 году в «Яндексе» решили, что поиск не должен помогать находить людей по фото, так как это нарушает их персональную безопасность. Или, например, был закрыт проект по оценке потенциальных заёмщиков банков. На основе этих решений были сформулированы принципы и системный подход. Но другие проблемы не получили должного внимания.

Сегодня «Яндекс» возобновляет работу по формированию стандартов и принципов техноэтики. Они будут опубликованы на сайте компании и станут частью наших общих политик. Все фрагменты кода, которые противоречат им, будут исправлены.

При этом мы считаем важным сохранить внутри «Яндекса» открытую среду разработки, в частности — единый репозиторий. Она остаётся важнейшей частью нашей внутренней культуры.

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

Ещё раз приносим свои извинения всем, кого могла затронуть эта ситуация.


Хроника развития инцидента с публикацией исходного кода из внутренних Git-репозиториев «Яндекса»


26 января 2023 в сети появились исходные коды и сопутствующие им данные множества сервисов и программ компании «Яндекс». Раздача содержит отдельные архивы (.tar.bz2), по названиям которых можно идентифицировать соответствующие сервисы «Яндекса». Общий объём архивов (в сжатом виде) составляет более 44,7 ГБ.
Разработчик Арсений Шестаков пояснил, что в архиве есть только содержимое репозиториев git, персональные данные отсутствуют. Там несколько ключей API, но они, скорее всего, использовались только для тестового развёртывания. Некоторые из архивов содержат исходный код для части сервисов компании, а также документацию, указывающую на реальные URL-адреса интрасети.
«Яндекс» подтвердил Хабру публикацию старых исходных кодов части проектов из внутреннего репозитория. Хакеры выложили архив в открытый доступ и утверждают, что в июле 2022 года скачали исходные коды проектов компании, кроме правил антиспама.

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

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

— сообщили Хабру в пресс-службе компании.



В «Яндексе» не увидели какой-либо угрозы для данных пользователей или работоспособности платформы после утечки исходного кода из внутреннего репозитория компании. Источник из «Яндекса» пояснил Хабру, что фрагменты исходного кода попали в открытый доступ по вине одного из сотрудников компании.
Эксперты в первом приближении оценили публикацию исходного кода из внутренних Git-репозиториев «Яндекса».

Архив размером 44.71 ГБ включает срезы Git-репозиториев «Яндекса» с исходным кодом 79 сервисов и проектов компании, среди которых поисковый движок (фронтенд и бэкенд), бот индексации страниц, платформа web-аналитики Yandex Metrika, картографическая система Yandex Maps, голосовой помощник «Алиса», информационная система службы поддержки, Yandex Phone, рекламная платформа Yandex Direct, почтовый сервис Yandex Mail, хранилище Yandex Disk, сеть доставки контента, торговая площадка Yandex Market, бизнес-сервисы Yandex360, облачная платформа Yandex Cloud, платёжная система Yandex Pay, «Яндекс Поиск», «Яндекс Метрика», «Яндекс Такси», «Яндекс Путешествия», «Яндекс 360» и внутренняя система диагностики Solomon.


Комментарий от бывшего сотрудника компании:

Вроде же сто раз уже все обсуждали, что в Я весь код лежит в монорепе (так называемая Аркадия), которая является чем-то средним между SVN и git (ближе к первому, с фишками второго). Вытащить весь код — вопрос одной команды. Read-only режим доступен всем разработчикам.

Политика эта полностью правильная, потому что позволяет быстрее, эффективнее и гибче разрабатывать код, а при воровстве кода все равно непонятно, что с ним делать. Датасеты, данные и прочие вещи с кодом рядом не лежат, а посмотреть как SharedPtr в либке STL от Яндекса сделан — спорная ценность. Как уже давно бывший сотрудник Яндекса могу сказать, что самое ценное в компании — это люди и их очень крутая экспертиза. Наиболее крутые и готовые к миру продукты Яндекс и без того в open source выкладывает (ClickHouse, userver и т.д.), а разбираться (да еще и без инфраструктуры, под которую этот код заточен) в том, как джейсоны из сервиса в сервис перекладываются — это такое себе.

Так что не думаю, что это какой-то существенный урон нанесет (мало того, думаю, кому очень все это надо было, уже давно получили).



Ашот Оганесян (сервис поиска утечек и мониторинга даркнета DLBI):

Это, скорее всего, инсайд, сотрудник уехавший, слил летом, он особо и не скрывает этого. Как отразится на компании — не знаю. Там есть пароли от серверов баз данных. «Яндекс» должен был их давно поменять. Если нет, то будут продолжения утечек данных. Ну слили исходники, ну бывает. У MS сливали, у многих игровиков сливали, безопасников, конечно, надо было разогнать после инцидента с утечкой данных пользователей «Яндекс Еды» и курьеров, они просто не знали, что и где у них есть (забыли старые сервера).



Лука Сафонов («Киберполигон», Bug Bounty Ru):

Исходники таких проектов, как «Такси» и так далее несомненно будут исследованы злоумышленниками для поиска потенциальных возможностей обойти защиту сервиса. Но есть одно но, репозитории с кодом и логика/данные лежали в разных местах. Также исходники будут интересны багхантерам для поиска дыр, разработчикам для поиска новых решений/реализаций. Данные пользователей не пострадали, доступа к инфраструктуре «Яндекса» нет, но есть значительный урон в подаче материала СМИ — «Яндекс» взломали/из «Яндекса» выложили полупубличный код. Это был инсайд. Если бы сломали, что взлом был бы на боевом репозитории. «Яндексу» лучше написать пресс-релиз с анализом ситуации и разбором утекшего кода, переписать функции безопасности, отражённые в репозиториях, если раскрытие архитектуры даже потенциально может влиять на безопасность сервисов.

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

© Habrahabr.ru