Saltar al contenido

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.

Publicado en las categoría(s):ArchlinuxGnu/LinuxHacking / Seguridad InformáticaPlanetas

Sé el primero en comentar

    Deja un comentario

    Descubre más desde El blog de Skatox

    Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

    Seguir leyendo