Что нового
Сканеры уязвимостей и платформы комплаенса работают путем извлечения данных из централизованных баз данных, сопоставления их с вашим инвентарем программного обеспечения и передачи результатов в системы управления информационной безопасностью и событиями (SIEM) или тикетинга. Этот конвейер работает автоматически для PyPI, npm, Maven и большинства других экосистем.
Conda — это исключение. Универсальные базы данных уязвимостей не учитывают особенности сборки и распространения пакетов conda: они не имеют понятия о каналах, не различают специфичные для платформ сборки и могут не замечать, что пакет conda, имеющий одинаковое имя с пакетом PyPI, может содержать совершенно другую версию исходного кода. Если направить универсальный сканер на окружение conda, результаты будут ненадежными: будут пропущены уязвимости в затронутых пакетах и выданы ложноположительные срабатывания для тех, которые не затронуты.
Все остальные экосистемы по-прежнему передают данные в единое место: сканеры обращаются к Национальной базе данных уязвимостей (NVD) и базе открытых уязвимостей (OSV), результаты попадают в SIEM-платформы, и когда уровень критичности превышает пороговое значение, дежурный инженер получает уведомление. У conda нет программного пути в этот конвейер, поэтому работа остается ручной: кто-то заходит в систему, проверяет и отчитывается.
Агентство Европейского союза по кибербезопасности (ENISA) выяснило в ходе своего исследования, что 35% организаций считают сопоставление уязвимостей серьезной проблемой, а еще 23% — чрезвычайно сложной.
Anaconda курирует данные об уязвимостях и создает спецификации состава программного обеспечения (SBOM) для почти 20 000 пакетов conda, которые мы собираем и поддерживаем в наших основных каналах main и main-x. API аналитики пакетов (Package Intelligence APIs) предоставляют эту информацию непосредственно вашим инструментам. Два из них доступны уже сегодня: Advisory API и SBOM API.
Мы протестировали этот подход в рамках закрытого бета-тестирования с одним из крупнейших в мире облачных провайдеров, развернув его на их инфраструктуре в соответствии с их требованиями, и теперь делаем его доступным для организаций с активной подпиской на тариф Anaconda Business.
Давайте разберемся подробнее
Эти API работают по-разному. Advisory API представляет собой ленту, которую вы зеркалируете, один раз загружая массив бюллетеней Anaconda и обновляя свою копию последующими синхронизациями. SBOM API — это инструмент поиска, который возвращает информацию по конкретному запрошенному вами артефакту.
Advisory API: бюллетени для канала main
Advisory API имеет два эндпоинта в домене anaconda.com, оба из которых используют аутентификацию GET-запросами с использованием токена носителя (bearer token) из учетной записи службы вашей организации:
Лента поддерживает инкрементальную синхронизацию двумя способами. В рамках одного запуска передайте токен продолжения из каждого ответа, чтобы получить следующую страницу. Между запусками сохраняйте маркер (watermark) с последней страницы. Передайте его как modified_since при следующем вызове, и вы получите только то, что изменилось с тех пор.
Пакет имеет множество версий, каждая версия может иметь множество сборок, и каждый бюллетень указывает, какие сборки на каких платформах затронуты. Каждый бюллетень содержит:
- свой идентификатор, описание и уровень критичности;
- другие идентификаторы, под которыми известна та же уязвимость;
- классификацию по системе общих уязвимостей программного обеспечения (CWE);
- метки времени публикации и изменения;
- URL-адреса пакетов (PURLs) и хэши SHA-256 затронутых артефактов.
Лента охватывает основной канал Anaconda (main), а расширение зависит от спроса клиентов.
SBOM API для каналов main и main-x
SBOM перечисляет то, что находится внутри пакета, и откуда взялась каждая часть. Этот API имеет два эндпоинта, оба в домене api.anaconda.org. В зависимости от того, что вам известно о пакете, вам следует использовать один или другой. Оба возвращают документ SPDX 2.2.1 в формате JSON.
Аутентификация
Оба API доступны участникам организаций с подпиской Business. Если у вас нет места (seat), администратор вашей организации должен назначить его вам, прежде чем вы сможете создать учетные данные.
Каждый API использует собственные учетные данные. Advisory API принимает учетные данные клиента OAuth2 из учетной записи службы организации. Обменяйте учетные данные служебной учетной записи на токен доступа, а затем обратитесь к странице начала работы для ознакомления с полным рабочим процессом. Токены доступа истекают через 15 минут, поэтому для более длительной синхронизации потребуется запросить новый токен и продолжить работу.
SBOM API принимает ключ API вместе с токеном доступа организации, который предоставляет доступ к каналам. В заголовке запроса передается только ключ API. Токен доступа организации устанавливается на вашем компьютере в ходе однократной настройки.
Почему это важно
Результаты сканирования conda поступают в ваши инструменты безопасности тем же путем, что и результаты из любой другой экосистемы. Лента проходит аутентификацию с помощью вашей существующей служебной учетной записи, вы опрашиваете ее с нужной периодичностью, и новые бюллетени попадают в очередь вашей команды.
Стоит заняться этим сейчас, а не ждать: согласно исследованию MITRE, количество отправленных CVE выросло на 263% в период с 2020 по 2025 год, и в апреле этого года Институт сузил круг данных, обогащаемых в Национальной базе данных уязвимостей (NVD), чтобы расставить приоритеты для активно эксплуатируемых уязвимостей и критического ПО, перенеся архив материалов до марта 2026 года в статус «Не запланировано». Даже те экосистемы, которые отслеживает NVD, демонстрируют замедление обработки по мере роста объемов, что является еще одной причиной устранить пробел в поддержке conda прямо сейчас.
Для команд платформ и непрерывной интеграции/непрерывной доставки (CI/CD) получение SBOM по точным координатам легко встраивается в этап сборки. Определите артефакт, получите его SBOM и прикрепите его к записи о сборке. Больше не нужно восстанавливать то, что было поставлено после. Команды комплаенса и закупок получают ту же выгоду с обратной стороны: когда кто-то спрашивает, что вошло в сборку, ответ уже есть в архиве.
В том же исследовании ENISA было обнаружено, что 39% организаций никогда не получают SBOM от производителей коммерческого ПО, которое они покупают, а еще 39% получают их редко. SBOM от Anaconda возвращаются к вам через вызов API. Вызывайте его из SIEM-коннектора, системы автоматизации IT-услуг (ITSM), задачи сборки или скрипта.
Попробуйте в деле
Каждая команда ниже представляет собой одну строку, поэтому она запускается без изменений в оболочках macOS и Linux, командной строке (Command Prompt) и PowerShell 7. В Windows PowerShell используйте curl.exe вместо curl. Документация содержит эти запросы в виде готовых фрагментов кода на Python, JavaScript, Go, Java, PHP и Ruby, если вы предпочитаете не использовать cURL.
Синхронизация ленты бюллетеней уязвимостей
Запросите у администратора служебную учетную запись, обменяйте ее идентификатор клиента (client ID) и секрет на токен доступа, а затем выполните:
В документации по Advisory API подробно описан процесс обмена токенами и приведен скрипт на Python, который запускает полный цикл синхронизации с уже написанной обработкой пагинации и маркеров.
Получение SBOM
Вы получите документ SPDX 2.2.1 в формате JSON для этого артефакта. В документации по SBOM API описан поиск пакета по имени, каналу, платформе и версии, когда у вас нет хэша.
Получайте SBOM по требованию. Запланируйте регулярный опрос ленты бюллетеней: каждый запуск возвращает только то, что изменилось с момента последнего запуска, поддерживая вашу локальную копию в актуальном состоянии, чтобы инструменты могли постоянно сверяться с ней вместо вызова API для каждого пакета.
Если у вас возникнут какие-либо проблемы, создайте запрос в Центре поддержки Anaconda.












