Попытки добавить механизмы описания уязвимостей и проверок в системы анализа защищенности велись давно. Они предпринимались практически всеми компаниями-разработчиками. Первая такая попытка была предпринята Витсом Венема и Деном Фармером - разработчиками системы SATAN. Описание новых уязвимостей, точнее их проверок, осуществлялось при помощи языка Perl. Это достаточно нетривиальная задача требовала обширных знаний как языка Perl, так и архитектуры стека протоколов TCP/IP и сканируемой операционной системы. По этому же пути (использование Perl) пошли разработчики системы WebTrends Security Analyzer. В приложении 1 приведен пример проверки, позволяющей определить тип операционной системы сканируемого узла. Язык Perl, наряду с языком C, используется и в системе Internet Scanner. Причем помимо возможностей, встроенных в саму систему Internet Scanner, компания ISS поставляет отдельную систему описания атак APX (Advanced Packets eXchange).
Другим языком, используемым при описании осуществляемых проверок, стал Tcl. Модификации этого языка используются в системах APX (бесплатное приложение к системе Internet Scanner), Security Manager и CyberCop Scanner. Компания Network Associates последовала примеру компании ISS и выделила механизм описания уязвимостей в отдельную систему CyberCop CASL (Custom Audit Scripting Language). Также как и APX, система CyberCop CASL может функционировать под управлением ОС Windows NT и Unix (Linux для CASL и Solaris для APX).
В системах APX и CASL описываются параметры сетевых пакетов, при помощи которых моделируются различные атаки. К таким параметрам можно отнести флаги в заголовке IP-пакета, номера портов в заголовке TCP-пакета, поля данных в пакетах различных протоколов и т.д. В качестве примера (Приложение 2) можно привести проверку возможности осуществления подмены пакетов (Spoofing).
Однако наиболее удобным с точки зрения конечного пользователя (не программиста) является язык VDL (Vulnerability Descriptive Language) и VEL (Vulnerability Exploit Language), разработанный компанией Cisco. Проверки, описываемые этими языками, основаны на простых логических утверждениях, и пользователь может добавлять правила, если он видит, что они необходимы. Примером такого правила может быть: