В этом разделе собраны наиболее часто встречающиеся проблемы при работе с инструментами 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!
Проблема: в Графе вызовов для модуля отсутствуют символы
Решение: стоит проверить есть ли в модуле, к которому относятся вызовы, символы. Для этого нужно посмотреть полный путь модуля (включить опцию “Полные пути модулей”)
и найти этот же модуль в файле module.cfg по полному пути. В найденной записи в поле vmidb нужно найти название файла, в котором лежат символы для модуля.
Далее стоит найти этот файл в папке vmidb в папке проекта. Если файл пустой или "почти пустой", значит внутри модуля нет символьной информации. Нужно пересобрать его с отладочными опциями компилятора.
Если файл не пустой, то, вероятно, в процессе natch replay возникла ошибка "has no unique code pages for detection". Запустите natch replay повторно,
эти ошибки обычно появляются в начале вывода в консоли, выделенные красным шрифтом.
Поищите среди ошибок упоминание искомого модуля. Ошибка говорит о том, что для модуля есть дубликаты, поэтому не удалось его однозначно идентифицировать.
Чтобы эта ошибка исчезла, нужно из конфигурационного файла модулей удалить или закомментировать записи с дубликатами. Какие файлы являются дубликатами явно не указано, но обычно это файлы с одинаковыми или похожими именами.
Далее нужно повторно запустить natch replay и убедиться, что ошибка пропала. Символы должны появиться.
Проблема: 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 и запись сценариев в многоядерном (многопроцессорном) режиме не представляется возможным технологически.
Проблема: при запуске Snatch в консоли возникает сообщение celery: command not found. Веб-интерфейс Snatch отображается, но архивы загружаются моментально, без обработки данных, создавая пустые проекты.
Служба rabbitmq-server (rabbitmq на Alt Linux) не запущена и при попытке ее ручного запуска возникают ошибки.
Решение: убедитесь в том, что у вашей Linux машины задано имя в /etc/hostname. При его отсутствии возникают проблемы с запуском зависимой службы rabbitmq-server. Задайте имя машины в /etc/hostname и создайте для неё в /etc/hosts запись вида: 127.0.0.1 <имя_машины>, после чего перезагрузите вашу машину.
Проблема: при переустановке/удалении Snatch в консоли возникают сообщения о том, что некоторые *.sh и *.py скрипты в /usr/bin/snatch/ не найдены. Из-за этого вместо удаления инициализируется повторная установка и удаление, также как и переустановка, оказывается невозможным.
Решение: выполните удаление скриптов, выполняемых при удалении Snatch:
sudo rm -f /var/lib/dpkg/info/snatch.prerm /var/lib/dpkg/info/snatch.postrm
Повторите удаление, - теперь оно будет успешно выполнено. После чего можно установить Snatch заново.