1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/microsoft-onefuzz

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
telemetry.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 23.04.2025 15:56 cb328e0

Телеметрия

OneFuzz собирает два типа телеметрии, как правило, через AppInsights.

  1. OneFuzz фиксирует полнофункциональные данные, которые можно приписать пользователю, в пользовательском AppInsights экземпляре. Цель этой информации — обеспечить пользователям возможность проведения детального анализа их задач поиска уязвимостей.
  2. OneFuzz отправляет минимальный набор статистических данных, не связанных с конкретным пользователем, в Microsoft через управляемый AppInsights экземпляр. Цель — предоставить информацию о том, как работает OneFuzz и используемые им движки поиска уязвимостей. Информация о пользователях OneFuzz экземпляра, приложениях, находящихся под тестированием, или деталях обнаруженных уязвимостей не предназначена для фиксации в этой телеметрии.

Кто владеет ресурсами OneFuzz

Для целей этого документа "OneFuzz экземпляр" — это пользовательская установка OneFuzz в Azure Subscription пользователя.Пользователь владеет и управляет всеми ресурсами, используемыми для OneFuzz, включая узлы поиска уязвимостей. OneFuzz поддерживает как "управляемые" узлы, где OneFuzz управляет жизненным циклом узлов поиска уязвимостей через Azure VM Scale Sets, так и "неразрешённые" узлы, где пользователи предоставляют вычислительные ресурсы по своему усмотрению (будь то локальное оборудование, облачные сервисы третьих сторон и т. д.).## Как собирается телеметрия

Все телеметрия собирается из двух мест: агентов, работающих внутри узлов поиска уязвимостей, и сервисного API, работающего в экземпляре Azure Functions.1. Библиотека на языке Rust onefuzz::telemetry предоставляет подробный набор типов для телеметрии, а также функцию can_share_with_microsoft, которая определяет, следует ли отправлять конкретное поле телеметрии в центральный экземпляр телеметрии Microsoft.

  1. Библиотека на языке Python onefuzzlib.telemetry предоставляет механизм фильтрации для идентификации набора записей фильтрации для каждого объекта. Каждая таблица, поддерживаемая ORM, предоставляет механизм для определения, следует ли отправлять поле в центральный экземпляр телеметрии Microsoft. Например: реализация onefuzzlib.jobs.Job.telemetry_include описывает набор полей, которые следует записывать.Эти механизмы гарантируют, что только те поля, которые предназначены для записи, отправляются в центральную службу телеметрии.

Как отключить отправку телеметрии в Microsoft

Удалите ONEFUZZ_TELEMETRY в настройках приложения экземпляра Azure Functions в экземпляре OneFuzz, созданном во время развертывания.

Пользователям напоминают, как отключить телеметрию во время каждого развертывания OneFuzz в Azure.## Данные, отправляемые в Microsoft

Следующее описывает информацию, отправляемую в Microsoft, если телеметрия включена.

Определения общих типов данных

Следующие типы данных используются в нескольких местах:* Instance ID - Уникально сгенерированный GUID, используемый для идентификации экземпляра OneFuzz.

  • Task ID - Уникально сгенерированный GUID, используемый для идентификации задачи фазинга.

  • Job ID - Уникально сгенерированный GUID, используемый для идентификации задания.

  • Machine ID - GUID, используемый для идентификации машины, выполняющей задачу. При выполнении в Azure это является уникальным идентификатором VM. При выполнении фазинга вне Azure это случайно сгенерированный GUID, созданный один раз на узле.

  • Scaleset ID - Уникально сгенерированный GUID, используемый для идентификации набора виртуальных машин.

  • Task Type - Тип выполняемой задачи. Примеры включают generic_crash_report или coverage. Для полного списка см. перечисление TaskType.

  • OS - Значение перечисления, описывающее используемую ОС (в настоящее время только Windows или Linux).

  • Version - Строковое значение, сгенерированное на этапе компиляции, которое указывает номер версии OneFuzz на основе CURRENT_RELEASE и ревизии git sha-1 (См. пример).

  • Role - Значение перечисления, описывающее роль используемого программного обеспечения OneFuzz. Примеры включают Agent или Proxy. Для полного списка см. перечисление Role.### Данные, записываемые агентами

  • ID задачи

  • ID задания

  • ID машины

  • Тип задачи

  • Основные характеристики — A u64, представляющий количество 'характеристик' в SanCov карты покрытия для исполняемого файла libFuzzer.

  • Покрытие — A u64, представляющий количество 'характеристик' в SanCov карты покрытия для исполняемого файла libFuzzer, которые были использованы во время фузинга.

  • Скорость — A float64, рассчитанная как (Покрытие / Основные характеристики).

  • Количество — Число выполнений, выполненных фузинговой задачей.

  • Выполнения в секунду — Скорость выполнений в секунду.

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

  • ID запуска — Случайно сгенерированный GUID, используемый для уникальной идентификации выполнения фузинговой цели. Для фузеров, которые перезапускаются, таких как libfuzzer, это используется для уникальной идентификации телеметрии для каждого запуска фузера.

  • Виртуальная память — Количество виртуальной памяти, используемой фузинговой задачей.

  • Физическая память — Количество физической памяти, используемой фузинговой задачей.

  • Использование ЦП — Количество ЦП, используемого фузинговой задачей.

  • Найдено падение — Флаг, указывающий на то, что было найдено падение.* ОтчетоПаденияСоздан - Флаг, указывающий на то, что найденное падение было воспроизводимым и создан отчет.

  • УникальныйОтчетоПаденияСоздан - Флаг, указывающий на то, что найденное падение было воспроизводимым и уникальным в наборе существующих отчетов.

  • НазваниеИнструмента - Строка, идентифицирующая используемый инструмент для общих задач. Для специализированных инструментов, это будет записывать название специализированного инструмента. Примеры: В шаблоне radamsa, это {tools_dir}/radamsa для задачи generic_generator и cdb.exe для задачи generic_analysis. Следующие параметры являются специфичными для AFL:* Mode - Строка, представляющая режим задачи AFL. Это уникально для парсинга статистики AFL и указывает на "target_mode", в котором работает AFL. Примеры включают, но не ограничиваются: "default", "qemu" и "persistent".

  • CoveragePaths - У64, представляющий paths_total в статистике AFL.

  • CoveragePathsFavored - У64, представляющий paths_favored в статистике AFL.

  • CoveragePathsFound - У64, представляющий paths_found в статистике AFL.

  • CoveragePathsImported - У64, представляющий paths_imported в статистике AFL.

  • Coverage - Float64, представляющий bitmap_cvg в статистике AFL.

Записываемые данные сервисом

Каждый раз, когда состояние задачи изменяется, записывается следующая информация:

  • ID задачи
  • Состояние - Текущее состояние задачи. Для полного списка см. перечисление JobState.

Каждый раз, когда состояние задачи изменяется, записывается следующая информация на уровне сервиса:

  • ID задачи
  • ID задачи
  • Тип задачи
  • Состояние - Текущее состояние задачи. Для полного списка см. перечисление TaskState.
  • Количество ВМ - Количество ВМ, используемых для задачи.

Каждый раз, когда состояние масштабируемого набора изменяется, записывается следующая информация:* ID масштабируемого набора

  • ОС

  • SKU ВМ - Размер ВМ Azure

  • Размер: Количество ВМ в масштабируемом наборе. Для полного списка см. перечисление ScalesetState.

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

  • ID пула — Уникально сгенерированный GUID, используемый для уникальной идентификации масштабируемого набора ВМ.

  • ОС

  • Состояние: Текущее состояние пула. Для полного списка см. перечисление PoolState.

  • Управляемый: Логическое значение, указывающее, управляются ли ВМ в пуле OneFuzz.

Каждый раз, когда состояние узла фаззинга изменяется, записывается следующая информация:

  • ID масштабируемого набора
  • ID машины
  • Состояние: Текущее состояние узла. Для полного списка см. перечисление NodeState.

Каждый раз, когда состояние задачи на узле изменяется, записывается следующая информация:

  • ID задачи
  • ID машины
  • Состояние — текущее состояние задачи на узле. Для полного списка см. перечисление NodeTaskState.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/microsoft-onefuzz.git
git@api.gitlife.ru:oschina-mirror/microsoft-onefuzz.git
oschina-mirror
microsoft-onefuzz
microsoft-onefuzz
main