В этом разделе собраны наиболее часто встречающиеся проблемы при работе с инструментами Natch и SNatch, раздел будет пополняться.
Проблема: хочется узнать срок действия лицензии
Решение: в случае с сетевым ключом откройте http://localhost:1947/_int_/products.html,
далее кликните на Features
напротив продукта Natch. При использовании аппаратного ключа
следует открыть http://localhost:1947/_int_/devices.html и кликнуть на Features
напротив записи,
соответствующей вашему аппаратному ключу.
Проблема: настройка стенда происходит очень медленно
Решение: используйте команду natch kvm
для работы QEMU в режиме аппаратной виртуализации.
Чтобы проверить включен ли KVM в уже запущенной виртуальной машине -- введите в мониторе Natch команду info kvm
.
Проблема: Natch не запускается
При запуске появляется сообщение "Sentinel LDK Protection System: Sentinel key not found"
Решение: проверьте наличие лицензии. Удостоверьтесь что используете подходящий вашему ключу дистрибутив, а так же что окружение для ключей Sentinel установлено и оно подходящей версии.
Проблема: Natch завершается с ошибкой illegal instruction (недопустимая инструкция)
При возникновении ошибки illegal instruction (недопустимая инструкция), следует проверить совместимость вашего процессора. Для этого выполните команду:
cat /proc/cpuinfo | grep -m1 flags | awk '/avx/ && /sse/ && /sse4_1/ && /sse4_2/'
Если вывод пустой, значит ваш процессор не подходит.
Решение: необходимо использовать процессор, поддерживающий расширения avx
, sse
, sse4_1
, sse4_2
.
Проблема: тюнинг работает слишком долго и ничего не происходит
Решение: подождите (чаще всего это и есть решение). Если ОС загрузилась, а настройка все еще идет, попробуйте поделать что-то, например, позапускать программы, чтобы спровоцировать возникновение системных вызовов. В случае если вы используете экзотическую ОС и тюнинг не может быть выполнен, он завершится по таймауту и вы получите сообщение о нештатном завершении настройки. В таком случае обратитесь к разработчику.
Так же тюнинг может быть выполнен не полностью, но если все обязательные параметры были обнаружены, настройки сформируются и инструмент будет работать.
Проблема: статистика помеченных данных показывает нули
Решение: чаще всего такая ситуация возникает, если источник помеченных данных был указан неверно (или не указан вовсе) или если работа с помеченными данными происходила до того как состояние машины было сохранено. Проверьте:
- указали ли вы источники пометки в конфигурационном файле
taint.cfg
(natch edit taint
) - выполнили ли команду
savevm
до того как поработали с помеченными данными
Если все верно, а статистика нулевая, возможно это баг :) Обратитесь к разработчику, пожалуйста.
Проблема: появилась необходимость перегенерировать task.cfg
. Например, у вас есть проект и вы не хотите его пересоздавать,
а версия конфигурационного файла task.cfg
изменилась и Natch не запускается
Решение: выполните команду natch tuning
, согласитесь с тем что хотите переписать существующий файл task.cfg
, дождитесь окончания работы эмулятора.
Проблема: не установился SNatch
Решение: проверьте, что в названиях директорий, в которых вы находитесь, нет пробелов. Если есть, устраните проблему и перезапустите snatch_setup.sh
.
Проблема: шкала прогресса "Processing surface" пропала до завершения обработки архива (например, после обновления страницы).
Решение: процесс обработки архива продолжается в фоне. При его завершении в консоли появится сообщение Processing ___ is done!
Проблема: Flame graph долго строится/завис
Решение: процесс построения флейм графа может занять очень длительное время, более часа.
При построении флейм графа выводится прогресс. Если же ждать все равно больше не хочется,
процесс построения можно прервать с помощью кнопки Generate
, которая краснеет при наведении мыши.
Проблема: во время экспорта проекта в PDF появляется сообщение об ошибке для какого-то из заданных параметров
Решение: вероятнее всего, сгенерированная для данного параметра (чаще всего это относится к ресурсам) таблица оказалась слишком большой для используемой библиотеки. В таком случае рекомендуется использование предлагаемых фильтров: включить "only tainted", чтобы в отчет попали только связанные с пометками данные, и отключить "include root", чтобы оставить только пользовательские процессы.
Проблема: на Alt Linux, во время создания проекта после тюнинга на этапе сборки отладочной информации,
возникают ошибки FATAL: Error create mounted folder
и FATAL: Error delete mounted folder
Решение: убедитесь в том, что учетная запись root добавлена в sudoers.
Проблема: во время воспроизведения записанного сценария появляется ошибка
natch-qemu-x86_64: ../plugins_isp/sources/common_plugins/utils/kernel_struct_utils.c:282: parse_param_recursive: Assertion '0' failed
Решение: вероятнее всего не был успешно завершен тюнинг для вашей гостевой ОС. Вы можете выполнить тюнинг отдельно для уже созданного проекта. См. natch tuning. В случае проблем с тюнингом вашей гостевой ОС, обратитесь в техническую поддержку.
Проблема: исследуемый продукт развернут в контейнере Podman. Во время создания проекта на этапе ROOT_PODMAN возникает вывод:
[Filling Docker Layers...]
Status: Found: 0
WARNING: [Errno 2] No such file or directory:
'/mnt/point3202315/var/lib/containers/storage/overlay-containers/containers.json' ROOT_PODMAN analysis will be skipped!
Решение: решения может быть два -- отредактировать конфигурационный файл debug_info.cfg
или пересоздать проект.
Первый вариант: перейдите в рабочую директорию и выполните команду natch edit debug
. В секции ContTools
введите путь к Podman директории в соответствуюшем поле -- local_podman_path
или root_podman_path
.
После этого выполните команду natch modules update
.
Второй вариант: создайте проект заново, на этапе Do you want to set additional parameters?
введите Y
.
Затем, если вы используете Podman под рутом, введите Y
на этапе Do you want to analyze Root Podman
,
если вы используете Podman под обычным пользователем, введите Y
на этапе Do you want to analyze Local Podman
.
На следующем шаге введите путь к Podman директории, содержащей containers.json
.
В случае local Podman на Astra Linux нужная директория это /home/YourUser/.local/share/containers/
.
Проблема: во время добавления архива в SNatch возникает ошибка Worker exited prematurely: signal 9 (SIGKILL) Job: XX
Решение: ошибка говорит о том, что скорее всего не хватает оперативной памяти для разбора архива. Для корректной работы SNatch с архивами в несколько сотен мегабайт и более рекомендуется не менее 32Гб оперативной памяти.
Проблема: нужно добавить опцию в командную строку запуска эмулятора
Решение: по умолчанию в командную строку попадает ограниченный набор опций, однако, пользователь
может добавить все что необходимо в файл qemu_opts.ini
, расположенный в рабочей директории.
В файле предусмотрены метки для формирования строк для разных режимов -- [record]
, [replay]
, [rr]
, [tuning]
и [kvm]
.
Если их не использовать -- опция будет применена во всех режимах.
Подробнее в разделе Интерактивный режим создания проекта.
Также несколько типичных случаев редактирования командной строки описаны в приложении
Изменение командной строки эмулятора.
Проблема: в ходе анализа сценариев работы многопроцессного программного комплекса, предназначенного для работы на многоядерных (многопроцессорных) платформах, запись сценария происходит очень медленно
Решение: в настоящий момент и в обозримой перспективе отсутствует. Запись сценария требует запуска
эмулятора QEMU в режиме полносистемной эмуляции, подразумевающем выполнение всего исполняемого кода
анализируемого программного комплекса (включая код среды его функционирования - ОС, BIOS, эмулированных устройств и т. п.)
в виртуальном процессоре -- программной модели процессора (эмулятор QEMU работает в данном режиме по умолчанию, в случае если не указан ключ enable-kvm
).
Скорость выполнения исполняемого кода в режиме полносистемной эмуляции намного ниже по сравнению с выполнением на аппаратном процессоре, однако позволяет логировать любые изменения состояния виртуального процессора, оперативной памяти, а также взаимодействия с внешними по отношению к эмулированному пространству сущностями (сеть и т. п.). В том числе это позволяет записывать и в дальнейшем воспроизводить работу виртуальной машины, сохраняя в файл случайные и недетерминированные события, меняющие состояния виртуальной машины.
Добавление возможности надежного логирования работы даже двухядерной (двухпроцессорной) системы, требует записывать ещё и порядок обращения процессоров к памяти, чтобы избежать состояния гонки при воспроизведении. Такой лог будет на несколько порядков больше лога однопроцессорной машины, что делает запись/воспроизведение неприменимыми при существующих объёмах и скоростях накопителей.
Реализация данного механизма на программном уровне является фундаментальной проблемой, до сих пор не имеющей в мире эффективного решения. Некоторые попытки решить аналогичную задачу для архитектуры x86_64 делались разработчиками процессоров, в частности компанией Intel, однако во-первых они не завершились удачными конкретными решениями, во-вторых -- требовали доработки процессора за счёт внесения в него отдельного специализированного блока, отвечающего за корректное логирование всех операций доступа -- то есть создания отдельное процессорной линейки. Таким образом в настоящий момент увеличение числа ядер виртуального процессора QEMU и запись сценариев в многоядерном (многопроцессорном) режиме не представляется возможным технологически.