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
endNota: 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.
Sé el primero en comentar