Тестирование компьютерной продукции, как это ни печально, вот уже на протяжении многих лет остается скорее искусством, чем наукой. И вовсе не потому, что такие разработки слишком сложны, чтобы поддаваться простому и прямолинейному анализу. Все дело в том, что до сих пор не достигнуто согласия, как надо тестировать программы. Но ситуация, похоже, начинает меняться. По крайней мере в том, что касается средств борьбы с вредоносным ПО.
Отличным стандартом высококачественного тестирования, результатам которого можно будет смело доверять, обещает стать новое руководство, разработанное специалистами AMTSO (Anti-Malware Testing Standards Organization — организация по стандартизации тестирования средств борьбы с вредоносными программами). Я профессионально занимаюсь тестированием уже долгие годы (как минимум 13—14 лет), был техническим директором в четырех разных исследовательских центрах. Сейчас, правда, от прямого тестирования отошел, однако все еще тщательно отслеживаю всё, что происходит в этой области. И новые стандарты произвели на меня по-настоящему огромное впечатление.
AMTSO изложила принципы тестирования в двух документах. Первый из них под названием AMTSO Fundamental Principles of Testing (“Фундаментальные принципы тестирования AMTSO”) содержит свод правил и рекомендаций, рассчитанных главным образом на тестеров. Всего в нем приводится девять принципов, которые перечислены ниже.
1. Тестирование не должно создавать угрозу общественности.
2. Тестирование должно быть непредвзятым.
3. Тестирование должно быть как можно более открытым и прозрачным.
4. При оценке средств борьбы с вредоносными программами необходим баланс между их эффективностью и производительностью.
5. Все тестовые образцы необходимо как можно точнее распределять по группам опасных, безвредных и не подходящих для тестирования.
6. Методика тестирования должна соответствовать его целям и задачам.
7. Выводы можно делать исключительно на основании результатов тестирования.
8. Результаты тестирования должны обосновываться статистически.
9. Когда дело касается обмена информацией о тестировании, у производителей, тестеров и издателей должна быть общая точка контакта.
Некоторые из приведённых принципов очевиднее других, однако, как будет показано ниже, все они наполнены глубоким смыслом. Насчет принципа № 1 могу сказать, что при тестировании вредоносных программ, особенно когда дело касалось обнаружения неизвестных, в командах не раз появлялось искушение создать новую заразу исключительно для теста. Сформулированный же принцип явно запрещает делать это, хотя не препятствует модификации характеристик уже имеющихся вредоносных программ. Он же требует предпринимать все необходимые меры предосторожности против утечек из исследовательских лабораторий.
Но самым впечатляющим, на мой взгляд, следует признать принцип № 2, касающийся непредвзятости тестирования. Всё дело в том, что тесты зачастую проводятся по заказу производителей, и все же они могут быть непредвзятыми. При этом оговариваются правила раскрытия таких взаимоотношений и возможных конфликтов:
“Раскрываться должны любые взаимоотношения, потенциально способные оказать влияние на тестера, в том числе: а) получает ли издатель или тестер оплату от производителя или оказывается каким-либо другим способом связан с ним в рамках конкретного теста и б) получает ли издатель или тестер часть дохода соответствующего производителя”.
Я всегда считал, что именно так и нужно поступать, чтобы при оценке результатов тестирования можно было учитывать скрытые течения.
Принцип № 3 признает за исследователями право не раскрывать всех деталей своей методики, однако требует, чтобы результаты тестирования сопровождались некоторыми важными подробностями. Это могут быть, например, сведения о параметрах конфигурации проверяемого средства, о полной конфигурации тестовой системы, о порядке получения образцов. А вот, скажем, исходный текст экспериментальной системы публиковать вовсе не обязательно.
Принцип № 4 касается учета факторов, оказывающих влияние на выводы по результатам тестирования. Если, скажем, в обзоре указывается только процент выявленных вредоносных программ, но ничего не говорится о ложных тревогах, то это вступает в явное противоречие с данным принципом. Впрочем, его можно смело назвать одним из самых субъективных положений документа.
Принцип № 5 предупреждает, что доверять можно не всем оценкам тестируемого средства. Тестеру следует убедиться, что выявленная в ходе проверки вредоносная программа в самом деле является таковой, а не проявлением ошибки в работе системы. И наоборот. А это может оказаться делом довольно сложным.
Принцип № 6 касается пригодности тестируемого средства для конкретного применения. Нельзя, скажем, проверять корпоративный шлюз на пригодность для рядовых потребителей, а бытовые средства оценивать для корпоративной среды.
Принцип № 7 совершенно очевиден: нельзя делать выводы, которые не согласуются с полученными данными. Когда замечаешь такое, возникает подозрение, что результаты тестирования разочаровали экспериментатора, так как не соответствуют его ожиданиям. Так что данное правило не помешает.
Принцип № 8 о статистическом обосновании надо бы сделать чуть поконкретнее, однако пока это, видимо, невозможно. Чтобы предъявлять требования к статистическому обоснованию, нужно сначала выработать численные критерии соответствия. Однако и поныне многие тесты (сам, признаюсь, участвовал в таких) проводятся на явно недостаточном количестве образцов, а выводы по ним все же делаются. Так что данное правило может принести определенную пользу.
Принцип № 9 об общей точке контакта просто великолепен для всех заинтересованных сторон. Благодаря ему, может быть, удастся повысить оперативность взаимодействия между участниками проекта.
Стандарты динамического тестирования
Второй документ AMTSO озаглавлен “Best Practices for Dynamic Testing” (“Лучшие практики динамического тестирования”). Массовое тестирование вредоносных программ чаще всего проводится с помощью автоматизированных систем, где файлы копируются из сети. Пользователи же работают на своих компьютерах совсем не так.
Главная цель “динамического тестирования” состоит в том, чтобы с помощью всех доступных средств воспроизвести реальную пользовательскую среду, для которой предназначен тестируемый продукт, обеспечивающий безопасность. Это становится все важнее по мере появления в средствах защиты совершенно новых свойств, которые нельзя реализовать в классической тестовой среде. Чего стоит, скажем, очень частое обновление антивирусных средств!
Документ признает, что проводить такое тестирование крайне сложно. Зачастую даже при правильной организации просто невозможно добиться повторяемости результата. И все же его разработчики призывают тестеров делать всё от них зависящее, чтобы тестовая среда максимально точно и совершенно беспристрастно соответствовала реальной.
Вот пример лишь одной проблемы, с которой приходится сталкиваться при этом. Если пользователи ПК постоянно подключены к Интернету, то тестовую систему тоже не следует отключать от Сети? Но ведь это чревато утечкой вредоносных программ, что нарушает изложенный выше принцип № 1! Документ предлагает три обходных пути, в том числе развертывание псевдо-Интернета, известного под названием “ящик Трумэна”. Но какой бы метод ни был выбран, очень важно открыто рассказать, что было сделано и какой результат получен.
Другая серьезная проблема динамического тестирования связана с использованием виртуальных машин (ВМ). Развертывание чистых ВМ для тестирования подобной продукции намного облегчает весь процесс, однако среда здесь сильно отличается от той, в которой работает типичный пользователь ПК. Сейчас все больше вредоносных программ учатся распознавать виртуальные среды и изменять свое поведение, может быть, даже ставя знак равенства между ВМ и тестером. Так что как ни соблазнительно использовать виртуальные машины, AMTSO все же рекомендует производить динамическое тестирование на машинах реальных, а своих членов призывает обмениваться инструментарием, облегчающим такое тестирование.
Группы стандартизации, как правило, ассоциируются с чем-то глубоко научным, однако ряд отличных стандартов вышел из стен отраслевых консорциумов. AMTSO объединяет в своих рядах главным образом производителей, и они прекрасно понимают выгоды хорошего тестирования.
Не стоит, впрочем, рассчитывать, что изложенные выше новые принципы вступят в действие уже завтра. Тестирование средств защиты — дело настолько трудное и дорогостоящее, что проводить его могут лишь немногие лаборатории. Но если все пойдет хорошо, их будет становиться больше и больше.