Saltar al contenido

Categoría: Hacking / Seguridad Informática

Script para ver paquetes de AUR comprometidos

Si son usuarios de Arch Linux, habrán escuchado que recientemente alguien logró acceder al Arch User’s Repository (AUR) y adoptó muchos paquetes huérfanos para modificarlos e inyectar código malicioso. Como lo hizo con muchos paquetes y durante un tiempo desconocido, es posible que tu equipo tenga instalados paquetes comprometidos. Una ventaja de todo este problema, es que el equipo de Arch publicó una lista oficial de paquetes que fueron víctimas de este ataque y me motivó a desarrollar un script para ver paquetes de AUR comprometidos

El script para ver paquetes de AUR comprometidos

Por esta razón, decidí hacer un script en Fish; si han leído mi blog antes, sabrán que uso Fish en mi consola y que la sintaxis de la terminal cambia un poco. Este script chequea el archivo oficial de paquetes comprometidos, valida que solo contenga texto y nombres de paquetes (para evitar que, si se compromete, te ataquen) y luego revisa tus paquetes instalados y los compara para ver si alguno de ellos está instalado en tu equipo.

#!/usr/bin/env fish

set URL "https://md.archlinux.org/s/SxbqukK6IA/download"

set installed (pacman -Qq)
set aur (pacman -Qqm 2>/dev/null)

# Download as plain text only; keep only valid-looking package names
set suspects (curl -fsSL "$URL" \
  | string match -r '^[a-z0-9][a-z0-9._+-]*$' \
  | sort -u)

set total (count $suspects)
set found_list
set i 0
set spinner "⠋" "⠙" "⠹" "⠸" "⠼" "⠴" "⠦" "⠧" "⠇" "⠏"
set spin_i 1

function draw
    set i $argv[1]
    set total $argv[2]
    set spin $argv[3]

    set width 35

    if test "$total" -eq 0
        set percent 0
        set filled 0
    else
        set percent (math -s0 "$i * 100 / $total")
        set filled (math -s0 "$i * $width / $total")
    end

    set empty (math -s0 "$width - $filled")

    printf "\r%s [" "$spin"
    printf "%s" (string repeat -n $filled "=")
    printf "%s" (string repeat -n $empty " ")
    printf "] %3d%% (%d/%d)" $percent $i $total
end

echo "Scanning suspect packages..."
echo ""

for pkg in $suspects
    set i (math "$i + 1")

    if contains -- "$pkg" $installed; or contains -- "$pkg" $aur
        set -a found_list "$pkg"
    end

    draw "$i" "$total" "$spinner[$spin_i]"

    set spin_i (math "$spin_i + 1")
    if test "$spin_i" -gt (count $spinner)
        set spin_i 1
    end

    sleep 0.005
end

echo ""
echo ""

echo "Installed suspect packages:"
echo "----------------------------"

if test (count $found_list) -eq 0
    echo "None"
else
    for p in $found_list
        echo "$p"
    end
end

Nota: Recuerda ejecutarlo con fish y no con bash.

Finalmente, si tienes algún script, simplemente elimínalo del sistema con pacman y mantén tu sistema seguro.

Y recuerda compartir este script con otros usuarios de Arch, o al menos infórmales sobre este problema para que estén protegidos.

Deja un comentario

Cómo corregí una vulnerabilidad en mi plugin JS Archive List tras un reporte de WordFence

JS Archive List es un plugin que creé hace más de una década para mostrar archivos de entradas de WordPress en un formato más limpio y dinámico usando JavaScript (inicialmente era con JQuery). Pues hace unas semanas recibí un correo de un grupo de hackers y del equipo de Wordfence (correos separados) informándome de una vulnerabilidad en JS Archive List para realizar inyecciones SQL.

Para quienes no lo conocen: JS Archive List toma los años y meses archivados en la base de datos y permite generar un widget o listado que se navega sin recargar la página. Es sencillo, útil y, como muchas herramientas viejas, tenía una parte interna que había quedado congelada en el tiempo, de hecho ese código viene del fork original en el que está basado.

Cómo se descubrió la vulnerabilidad en JS Archive List

Hace unas semanas recibí un mensaje desde la plataforma de investigadores de WordFence. Ellos tienen un programa privado donde reportan vulnerabilidades a desarrolladores antes de hacerlas públicas, y me dieron un plazo de tres semanas para liberar un fix.

El problema estaba en algo básico, la forma de generar la consulta SQL. El plugin recibía un año a través de la API o URL para filtrar los archivos, pero ese valor venía directamente de la base de datos sin sanitización y se insertaba en la query. Resultado: era posible modificar la consulta enviando un año inválido, lo que abría la puerta a inyecciones SQL.

Nada glamuroso ni nada complicado. Pero sí peligroso.

Actualizando una década de código para usar $wpdb

El fix de la vulnerabilidad en JS Archive List estaba claro: había que actualizar una porción del plugin que llevaba más de diez años igual, adaptarla a las funciones seguras de $wpdb y garantizar que todas las consultas pasaran por sus métodos de preparación. Esto no solo eliminó la inyección SQL, sino que dejó la base para que futuras mejoras del plugin también sigan buenas prácticas. Y claro: ahora JS Archive List es más seguro que nunca. Debo admitir que solo en la última semana del plazo pude sentarme a corregirlo (cosas de la vida), pero una vez entré en modo mantenimiento salió bastante fluido.

Luego tuve que entrar al sistema de WordFence y anunciar que el problema estaba corregido en la última versión. Tanto el grupo de hackers como el equipo de WordFence revisaron y confirmaron que todo está bien para cerrar la alerta en el sistema mencionado.

Reflexión final

Este fue un recordatorio amable de que mantener software libre significa estar dispuesto a revisarlo, actualizarlo y cuidarlo. Si usas JS Archive List, te recomiendo actualizar a la última versión. Y si alguna vez te toca lidiar con reportes de seguridad, tómalos como una oportunidad para pulir tu código y ayudar a hacer Internet un lugar mas seguro para todos.

¿Te ha pasado algo similar? ¿Descubriste vulnerabilidades en tu propio software?
Me encantaría leer tus experiencias en los comentarios.

Deja un comentario

La falla de CrowdStrike: un análisis desde el Sistema Operativo

Hace unos días fuimos testigos de como miles de computadoras con Windows empezaron a aparecer con la famosa pantalla azul de la muerte. La pantalla que aparece cuando hay un problema crítico en Microsoft Windows. Este problema ocurrió gracias al software de CrowdStrike, una empresa de seguridad informática, que por una falla en un driver durante el arranque del sistema operativo, causó que las computadoras no pudiesen arrancar correctamente.

El responsable es Crowdstrike

Inicialmente todos pensamos que el problema fue Microsoft, pero en realidad no tuvieron la responsabilidad. El problema ocurrió en un driver de Crowdstrike que falló por una mala actualización de un archivo de contenido importante para este driver. Fallaron las pruebas y despliegues de esta actualización por parte de Crowdstrike.

Por esta razón, me animé a hacer un video para explicar esto y mostrar que fue lo que pasó desde el punto de vista de los sistemas operativos. Para que todos estemos claros y podamos aprender de esta situación y aplicarlo en nuestros trabajos para evitar problemas similares.

Espero que miren el video, pues proporciona más detalles de los que puedo abarcar en este post. Y recuerden comentar si tienen alguna duda, comentario o corrección del tema.

La falla de CrowdStrike: un análisis desde el Sistema Operativo
Mira mi video para conocer de Crowdstrike desde el punto de vista de un S.O.

Reflexión

Creo que lo que pasó, vimos como podemos estar a un paso de fallas graves en nuestro sistemas y afectar la vida diaria. Tal vez en el futuro ocurran cosas peores ocasionadas por la I.A. o fallos humanos, pero siempre y cuando tengamos buenas pruebas, aprendamos de estas experiencias y programemos las cosas para tolerar fallas, evitaremos que ocurra de nuevo algo asimilar a lo de Crowdstrike.

Espero que este video les resulte útil e interesante. Si desean mas videos de Sistemas Operativos como este, o similar al de Como google optimizó en 40% el kernel Linux, si necesitas más detalles o tienes alguna pregunta específica sobre el problema de CrowdStrike, no dudes en dejar un comentario. ¡Estaré encantado de responderte!

Deja un comentario

Cult of the Dead Cow

Si has estado involucrado en el mundo del hacking o hacktivismo desde hace tiempo. Es muy probable que hayas escuchado sobre Cult of the Dead Cow, uno de los grupos de hacking mas famosos y antiguos que existen. Fueron los primeros en realizar hacktivismo, que consisteo es el uso de técnicas de seguridad informática, piratería ética o el desarrollo de software, para promover causas políticas o sociales.

Portada del libro de Cult of the dead Cow
Portada del libro con el famoso logo de Cult of the dead cow

¿Qué tal es el contenido de Cult of the Dead Cow?

El libro en líneas generales me pareció muy bueno. Cuenta la historia de cDc (como se le conoce de forma corta a Cult of the Dead Cow) desde sus inicios hasta lo mas reciente, mediante la narración de las experiencias de miembros clave de cada periodo. Cada una de estas experiencias de muestra como es el grupo desde adentro y cómo llevaron a cabo muchas de sus proyectos.

En ciertos puntos el libro cuenta historias que parecen ser sacadas de Hollywood o de Mr. Robot. Pero te das cuenta que es real y asi funciona el mundo, como por ejemplo una historia de cómo un miembro ayudó a un espía que estaba en China a poder comunicarse con el gobierno de Estados Unidos, sin que el gran firewall de China lo impidiese. Otras sobre como algunos miembros lograron ser «precursores» de la seguridad informática en empresas, logrando puestos altos en el área de seguridad de compañías como Google, Facebook, Microsoft, entre otras.

¿Por qué cDc salvó al mundo?

A lo largo de este libro, observarás cómo, gracias a experimentos, ataques y actividades, en muchas ocasiones, tanto el gobierno como los gigantes de Internet se vieron obligados a intervenir y mejorar sus tecnologías de seguridad para prevenir cualquier problema. Es por esta razón que son considerados héroes; el hecho de contar hoy en día con sólidos cifrados, seguridad en la red, servidores mejorados y una Internet más privada y segura se debe en gran medida a personas como los miembros de cDc, quienes demostraron las serias consecuencias que pueden surgir de una Internet insegura.

Los medios suelen retratar mal a los hackers pero en realidad son los forjadores de una mejor Internet.

Palabras finales

Es una lectura obligada para todo fanático(a) de la seguridad informática. Aprenderás de casos reales, historia, cómo son los gobiernos, la tecnología y mucho mas. Ojalá alguien se anime a hacer una película con todo esto.

Así que te recomiendo comprar el libro y tener un Happy Hacking!

Deja un comentario