Средство проверки приложений — обзор
Итоги
Средство проверки приложений (AppVerifier) — это средство проверки среды выполнения для неуправляемого кода, который помогает находить тонкие ошибки программирования, проблемы безопасности и проблемы с привилегиями учетной записи пользователя, которые могут быть трудно определить с обычными методами тестирования приложений.
Обзор
Одна из самых больших проблем, с которыми сталкиваются программисты, архитекторы программного обеспечения, тестировщики и консультанты по безопасности, заключается в том, чтобы понять пути выполнения переменных своих приложений при развертывании в рабочей среде. Даже при доступе к исходному коду трудно понять все, что произойдет во время выполнения из-за различных зависимостей (например, несколько групп, участвующих в коде или использовании внешних компонентов). Microsoft AppVerifier может играть полезную роль в управлении этой сложностью и потенциальными побочными эффектами ошибок. AppVerifier помогает найти ошибки программирования, проблемы безопасности и проблемы с привилегиями учетной записи пользователя, которые могут быть трудно определить во время типичного прохождения теста.
Средство проверки приложений (AppVerif.exe) — это средство динамической проверки для приложений в пользовательском режиме. Это средство отслеживает действия приложения во время выполнения приложения, подвергает приложение различным стрессам и тестам и создает отчет о потенциальных ошибках в выполнении или проектировании приложений.
Средство проверки приложений может обнаруживать ошибки в любых приложениях пользовательского режима, не основанных на управляемом коде, включая драйверы пользовательского режима. Он находит тонкие ошибки программирования, которые могут быть трудно обнаружить во время стандартного тестирования приложений или тестирования драйверов.
При использовании на протяжении всего жизненного цикла разработки программного обеспечения AppVerifier может повысить затраты на усилия по разработке, так как это упрощает выявление проблем на ранних этапах, когда они проще и дешевле исправить. Он также помогает обнаружить ошибки, которые, возможно, не были замечены, и гарантирует, что окончательное приложение может быть выполнено в ограниченных (например, неадминистрированных) средах.
поддержка ARM64EC
Средство проверки приложений не поддерживает ARM64EC.
Установка AppVerifier
Средство проверки приложений входит в пакет SDK для Windows. Чтобы установить средство проверки приложений, установите флажок во время установки пакета SDK.
Вы можете использовать средство проверки приложений только или в сочетании с отладчиком пользовательского режима. Текущий пользователь должен быть членом группы администраторов на компьютере.
Что проверяет AppVerifier?
AppVerifier — это средство, предназначенное для обнаружения и отладки повреждений памяти, критически важных уязвимостей системы безопасности и ограниченной привилегии учетной записи пользователя. AppVerifier помогает создавать надежные и безопасные приложения, отслеживая взаимодействие приложения с операционной системой Microsoft Windows и профилируя его использование объектов, реестра, файловой системы и API Win32 (включая кучу, дескрипторы и блокировки). AppVerifier также включает проверки, чтобы предсказать, насколько хорошо приложение будет выполняться в средах, не являющихся администраторами.
Проблемы, которые идентифицирует AppVerifier
AppVerifier помогает определить:
При правильном использовании API приложения:
- Небезопасные API-интерфейсы terminateThread.
- Правильное использование API локального хранилища потоков (TLS).
- Правильное использование манипуляций с виртуальными пространствами (например, VirtualAlloc, MapViewOfFile).
- Скрывает ли приложение нарушения доступа с помощью структурированной обработки исключений.
- Пытается ли приложение использовать недопустимые дескрипторы.
- Существуют ли повреждения памяти или проблемы в куче.
- Не хватает ли приложению памяти при низких ресурсах.
- Происходит ли правильное использование критически важных разделов.
- Будет ли приложение, работающее в административной среде, хорошо работать в среде с меньшими привилегиями.
- Существуют ли потенциальные проблемы при запуске приложения в качестве ограниченного пользователя.
- Существуют ли неинициализированные переменные в будущих вызовах функций в контексте потока.
Тесты AppVerifier
AppVerifier состоит из наборов тестов, называемых "слоями проверки". Их можно включить или отключить для каждого тестируемого приложения. Расширив уровень проверки в области тестов, отображаются определенные тесты. Чтобы включить тест для приложения, установите флажок рядом с ним. Чтобы включить весь уровень проверки, например "Основные сведения", установите флажок на верхнем уровне.
Существует тринадцать различных типов тестов, которые могут выполнять AppVerifier.
Основы. Как минимум, необходимо запустить средство проверки приложений с выбранным параметром "Основные сведения". Каждый из них будет тестировать для области, которая приведет к сбоям или другим негативным сценариям, которые имеют прямое и значительное влияние на взаимодействие с клиентом. Дополнительные сведения см. в разделе "Проверка приложений" — тесты в средство проверки приложений
Совместимость . Тесты уровня проверки совместимости помогают определить приложение, которое может иметь проблемы с операционной системой Microsoft Windows. Многие из этих проверок также можно использовать для тестирования требований к логотипу. Дополнительные сведения см. в разделе "Проверка приложений" — тесты в средство проверки приложений
Cuzz — уровень проверки нечеткости параллелизма (Cuzz ) обнаруживает ошибки параллелизма и условия гонки данных. Cuzz настраивает планирование потоков путем внедрения случайных задержек в ключевые точки в коде приложения. Дополнительные сведения см. в разделе "Проверка приложений" — тесты в средство проверки приложений
Низкое моделирование ресурсов — моделирование низких ресурсов пытается имитировать среду под низкими ресурсами, например из памяти. Это моделирование определяет ошибки, возникающие в условиях низкой памяти. Это также называется внедрением ошибок.Дополнительные сведения см. в разделе "Проверка приложений- Тесты в средство проверки приложений"
LuaPriv — тесты с ограниченными привилегиями учетной записи пользователей (LuaPriv) — это прогнозный и диагностический тест, а также работа над проблемами, связанными с запуском приложения с правами администратора, а также о том, будет ли это приложение работать с меньшими привилегиями (как правило, как обычный пользователь). Дополнительные сведения см. в разделе "Проверка приложений" — тесты в средство проверки приложений
Прочие — прочие — другие состоит из тестов для ассортимента тестов, таких как для опасных API, которые принимают небезопасные действия. Дополнительные сведения см. в разделе "Проверка приложений" — тесты в средство проверки приложений
Сетевые тесты ищут неправильное использование API WinSock. Например, если сетевой API вызывается до успешного вызова WSAStartup() или после успешного вызова WSACleanup(). Дополнительные сведения см. в разделе "Проверка приложений" — тесты в средство проверки приложений
NTLM — отслеживает использование API проверки подлинности AcquireCredentialsHandle и InitializeSecurityContext для обнаружения использования протокола NTLM . NTLM — это устаревший протокол проверки подлинности с недостатками, которые потенциально компрометирует безопасность приложений и операционной системы. Дополнительные сведения см. в разделе "Проверка приложений" — тесты в средство проверки приложений
Печать — средство проверки печати помогает находить и устранять проблемы, которые могут привести к вызову подсистемы печати приложения. Средство проверки печати предназначено для двух слоев подсистемы печати, слоя PrintAPI и слоя PrintDriver. Дополнительные сведения см. в разделе "Проверка приложений" — тесты в средство проверки приложений
Веб-службы — уровень проверки веб-служб Windows (WWSAPI) работает для проверки правильного использования WWSAPI, например вызываемого WWSAPI, который ссылается на недопустимый встроенный объект WWSAPI или WWSAPI, который вызывается со ссылками на один потоковый объект, который уже используется. Дополнительные сведения см. в разделе "Проверка приложений" — тесты в средство проверки приложений
Службы — тесты служб, проверьте правильное использование служб Windows. Например, запущены и остановлены службы должным образом. Сведения об исключениях кода остановки, созданных этими тестами, см. в разделе "Проверка приложений" — "Коды остановки" и "Определения".
Perf — проверка эффективного использования API-интерфейсов, влияющих на производительность системы и потребление энергии, например вызов функции Windows, использующую неправильный период ожидания. Сведения об исключениях кода остановки, созданных этими тестами, см. в разделе "Проверка приложений" — "Коды остановки" и "Определения".
Зависает . Тесты Зависания для использования API, которые приводят к тому, что система не отвечает, например когда поток DllMain ожидает другого потока, который был заблокирован. Сведения об исключениях кода остановки, созданных этими тестами, см. в разделе "Проверка приложений" — "Коды остановки" и "Определения".
Как работает AppVerifier?
AppVerifier работает путем изменения неуправляемых таблиц методов БИБЛИОТЕК DLL таким образом, чтобы необходимые проверки выполнялись до выполнения реальной функции (это также называется "Перехват функции"). Например, адрес метода CreateFileA API Win32 заменяется внутренним методом AppVerifier, который активирует ряд тестов, которые будут регистрироваться при срабатывании.
При запуске новых процессов использование методов Перехватчика методов AppVerifier управляется записями, сделанными в определенных разделах реестра. Если запись реестра существует, библиотека DLL AppVerifier будет загружена в только что созданный процесс, который будет обрабатывать замены таблицы методов в существующих и последующих загруженных DLL. Так как эти перехватчики создаются при загрузке библиотеки DLL, невозможно использовать AppVerifier в процессе, который уже запущен.
Пользовательский интерфейс AppVerifier используется для управления параметрами раздела реестра и предоставления сведений о существующих журналах. После установки приложения и тестов в пользовательском интерфейсе и нажатия кнопки "Сохранить" параметры реестра создаются. Затем необходимо перезапустить приложение, которое запустит мониторинг. Важно отметить, что параметры будут сохраняться до тех пор, пока приложение не будет удалено из AppVerifier.
При обнаружении проблемы происходит остановка проверяющего средства. Предоставленное число используется для определения точного характера и причины его возникновения.
Использование средства проверки приложений в жизненном цикле разработки программного обеспечения
Вы должны использовать средство проверки приложений на протяжении всего жизненного цикла разработки программного обеспечения.
Этап требований — AppVerifier должен быть запланирован и время, выделенное для его выполнения и выполнения.
Этап разработки. Планирование использования средства проверки приложений и определение компонентов (модулей, БИБЛИОТЕК DLL или EXEs) будет проверено.
Этап реализации. Запуск средства проверки приложений на стабильных сборках (от Альфа до RTM) различных компонентов в процессе разработки (важно протестировать компоненты по отдельности и коллективно).
Этап проверки. Тестировщики должны выполнять все свои тесты (как вручную, так и автоматически) с помощью средства проверки приложений, так как это будет первый раз, когда приложение будет отправлено к ограничениям, а также непредвиденное поведение и данные будут отправлены. AppVerifier также является мощным инструментом для консультантов по безопасности, выполняющих аудиты (черный ящик и белый ящик), так как это позволит быстро перечислить реальные (или потенциальные) векторы атак и эксплойтов.
Этап выпуска. Клиенты и консультанты по безопасности могут использовать AppVerifier в выпущенных двоичных файлах для выявления потенциальных уязвимостей безопасности.
Этап поддержки и обслуживания. Используйте средство проверки приложений, чтобы убедиться, что изменения кода (например, обновления, пакеты обновления) не вводят регрессии.
Разделы раздела
Этот раздел содержит следующие подразделы.
Средство проверки приложений — функции
Средство проверки приложений — тестирование приложений
Средство проверки приложений — тесты в средство проверки приложений
Средство проверки приложений — остановки кодов и определений
Средство проверки приложений— останавливается средство проверки приложений отладки