La identificación de virus
significa un balance entre dos imperativos: evitar los falsos
negativos (falla
de detección de infecciones existentes), y los falsos
positivos (la
detección de virus, cuando no los hay).
Los avances en la optimización
de la tecnología de análisis no han eliminado los riesgos
de falsos positivos.
Esto quedó demostrado
con la cantidad de problemas de este tipo en muchas aplicaciones
antivirus importantes, ocurridos durante los primeros meses de
2006.
No siempre es posible eliminar los positivos falsos utilizando
heurística, que, por definición,
implica un cierto grado de prueba y error.
Como hemos mencionado
anteriormente, el objetivo principal de la programación heurística
no es obtener un resultado “perfecto”, sino “suficientemente
bueno”.
Entonces, ¿cuál es el problema?
El modo más “seguro” para identificar un virus conocido, es verificar la presencia de cada octeto de código viral que podría estar presente en un objeto infectado, generando una suma de verificación
por cada bit constante en el cuerpo del virus.
Este proceso generalmente se denomina identificación
exacta.
La identificación, es una medida de la habilidad de la aplicación
antivirus para detectar y reconocer una muestra de virus, como específico
o variante.
Por lo tanto, la identificación exacta denota un
nivel de precisión gracias al cual cada octeto constante de
código
de virus, es tomado en cuenta.
Si bien suena deseable que esta
precisión se aplique a todos los análisis de búsqueda
de virus, esto raramente ocurre en el mundo real, debido al impacto
potencial sobre el tiempo de análisis
y los recursos del sistema, y porque este nivel de detalle es
pocas veces necesario.
La expresión identificación
casi exacta se aplica si la identificación “es
solo lo suficientemente buena para asegurar que un intento de
eliminar el virus no ocasionará daños al objeto anfitrión,
a causa del uso de un método de desinfección inadecuado”. [2]
La
detección y eliminación no siempre presentan los
mismos problemas.
Algunas compañías antivirus han defendido la idea de
que los binarios de programas infectados deberían ser reemplazados
y no limpiados, y prefirieron concentrarse en la detección.
También
hay escenarios (los rootkits y stealthkits son
buenos ejemplos), donde la sustitución de un programa “troyanizado” por
uno legítimo significa que la aplicación
de seguridad solo puede eliminar, no limpiar.
En estos casos,
generalmente es necesario que el administrador o el usuario restauren
el programa legítimo: la reparación automática
no sería una opción,
ni tampoco seguro.
Durante el transcurso de los últimos años,
la migración del código malicioso ha variado, desde
la clásica infección parasitaria de archivos, hacia la
manipulación del entorno operativo, por ejemplo, la modificación
del registro.
Esto puede hacer mucho más difícil la eliminación
de todos los rastros de código
malicioso, una vez que este ha sido controlado.
Una limpieza
incompleta (o incorrecta) puede dejar el sistema dañado, o incluso
inutilizable, y a veces será necesario tomar medidas radicales,
como la reinstalación del sistema operativo y las aplicaciones,
y la restauración
de los datos utilizando copias de resguardo.
Sin embargo, cuando el código malicioso es detectado proactivamente (por ejemplo, antes de tener la oportunidad de instalarse en el sistema asestado) mediante métodos heurísticos o genéricos,
este problema no llega a ocurrir, a menos que el objeto malicioso (viral
o troyano) se necesite en una forma no infecciosa, como cuando contiene
datos.
La "detección genérica” es una expresión utilizada cuando el analizador busca una determinada cantidad de variantes conocidas, utilizando una cadena de búsqueda
que puede detectar a todas ellas.
Si bien podría detectar una variante actualmente desconocida
en la cual puede encontrarse la misma cadena de búsqueda, solo
se trata de una detección heurística
si implica el uso de un mecanismo de puntaje.
De otra forma, se
trata realmente de un caso especial de detección
de virus específicos.
Algunos sistemas usan un enfoque
híbrido, donde se añade un sistema de puntaje a las
capacidades de detección genéricas,
para dar una probabilidad de la variedad o parentesco con diferentes
grados de certeza.
Por ejemplo, si la similitud es lo suficientemente
cercana, el analizador reportará “una variante de x”,
o, si no está tan seguro, informará “probablemente,
una variante de x”.