Ir al contenido
  1. Posts/

Ataque de malware AUR: Así puedes comprobar si tu sistema Arch Linux ha sido afectado

1204 palabras·6 mins· loading ·
Sebastian Zehner
Autor
Sebastian Zehner
Originalmente de 🇩🇪, ahora en 🇵🇾. Vive en la terminal, self-hosting con Docker y crea flujos de trabajo de IA en su propio tech lab.
Tabla de contenido

El 12 de junio de 2026, el equipo de Arch Linux publicó un aviso oficial de seguridad: en el Arch User Repository (AUR), se produjo una serie de incidentes relacionados con la aceptación y actualización de paquetes dañinos.

Atacantes desconocidos tuvieron como objetivo los paquetes almacenados en AUR e intentaron introducir código malicioso en los scripts PKGBUILD.

El mensaje era escueto, pero inequívoco:

We are currently experiencing a high volume of malicious package adoptions and updates in the Arch User Repository.

El equipo de Arch participó activamente en la detección de los cambios dañinos y en la prevención de nuevos ataques. Al mismo tiempo, se restringieron temporalmente algunas funciones de AUR, como la creación de nuevas cuentas, el envío de actualizaciones de paquetes y la gestión de dichos paquetes.

Mi primera reacción: Respirar hondo durante un momento y luego revisar todo de manera sistemática.

¿Por qué mi flujo de trabajo es más seguro desde el principio?
#

No utilizo ningún ayudante para la generación de archivos AUR (como yay, paru u similares); todo se hace de forma manual. Esto implica un poco más de trabajo, pero precisamente en situaciones como esta, el esfuerzo vale la pena.

Mi procedimiento habitual es el siguiente: dispongo de un directorio llamado ~/builds, en el cual descargo paquetes AUR utilizando el archivo git clone.

cd ~/builds
git clone https://aur.archlinux.org/brave-bin.git
cd brave-bin

Antes de construir o descargar cualquier cosa, leo el contenido del archivo PKGBUILD.

less PKGBUILD

Al hacerlo, presto especial atención a las líneas que contienen el código source=: ¿De dónde proviene este código? ¿Existen llamadas sospechosas a los códigos curl o bash que podrían cargar código dañino de forma posterior? Solo cuando todo parece lógico y coherente procedo a la compilación e instalación del software.

makepkg
sudo pacman -U brave-bin-1:1.79.123-1-x86_64.pkg.tar.zst

Las actualizaciones se realizan a través de git pull; posteriormente, es necesario compilar e instalar el software nuevamente de forma manual. No existe ningún mecanismo automático, ni se debe confiar ciegamente en estos procesos.

Este procedimiento manual es precisamente lo que el equipo de Arch recomienda en su aviso de seguridad; constituye la primera línea de defensa contra códigos dañinos que se introducen de forma inadvertida.

Además, en general utilizo muy pocos paquetes AUR. Cuanto menor es la superficie de ataque, más sencillo es realizar las comprobaciones en caso de necesidad.

Reconstruir la propia historia en el repositorio AUR
#

Aunque uno esté seguro de que no ha instalado ningún paquete sospechoso, es reconfortante verlo confirmado de forma oficial y escrita en papel. Para ello, pacman proporciona algunos comandos muy útiles.

¿Qué paquetes externos están instalados en realidad?

pacman -Qm

Esta orden enumera todos los paquetes que no provienen de los repositorios oficiales, es decir, los paquetes AUR y aquellos instalados manualmente.

¿Cuándo se tocó por última vez cada paquete?

pacman -Qi $(pacman -Qm | awk '{print $1}') | grep -E '^(Name|Install Date)'

Esto muestra el último estado conocido del sistema: ya sea la fecha de instalación o la última actualización.

La historia completa extraída del registro de pacman:

pacman -Qi Solo conoce el estado actual. Quien desee ver toda la línea temporal (es decir, tanto la primera instalación como todas las actualizaciones posteriores) debe acceder directamente al registro de actividad (log).

grep -E "(installed|upgraded) ($(pacman -Qm | awk '{print $1}' | paste -sd '|' -))" /var/log/pacman.log

¿Y qué pasa si uno solo quiere ver el último registro de cada paquete, sin necesidad de conocer todo el historial de cambios que ha ocurrido entre ellos?

grep -E "(installed|upgraded) ($(pacman -Qm | awk '{print $1}' | paste -sd '|' -))" /var/log/pacman.log \
  | awk '{cron[$4]=$0} END {for (p in cron) print cron[p]}' | sort

Mi análisis: Ningún paquete está afectado
#

Aquí se muestra la salida del registro de actividad de mi sistema, filtrada (fecha: 13 de junio de 2026):

[2025-06-17T19:39:58-0300] [ALPM] installed xautolock (2.2-8)
[2025-06-20T22:19:16-0300] [ALPM] installed python-pywal16 (1:3.8.9-1)
[2025-06-23T17:15:30-0300] [ALPM] installed catppuccin-gtk-theme-git (r62.c961826d0-1)
[2025-06-25T19:06:48-0300] [ALPM] installed mpdris2 (0.9.1-2)
[2025-12-23T11:20:07-0300] [ALPM] upgraded gcc14 (14.3.1+r25+... -> 14.3.1+r416+...)
[2025-12-23T11:20:07-0300] [ALPM] upgraded gcc14-libs (14.3.1+r25+... -> 14.3.1+r416+...)
[2026-01-16T10:08:36-0300] [ALPM] installed lgx2userspace-git (0.3.0.r22.g0547560-1)
[2026-04-02T16:11:50-0300] [ALPM] installed sunshine (2025.924.154138-3)
[2026-04-04T16:55:42-0300] [ALPM] installed mqttx-git (1.13.0.r0.g9c413d9-1)
[2026-05-12T17:35:35-0300] [ALPM] installed llama.cpp-cuda (b9124-1)
[2026-05-12T18:30:43-0300] [ALPM] installed llama-swap (v211-1)
[2026-05-20T17:25:54-0300] [ALPM] upgraded brave-bin (1:1.89.141-1 -> 1:1.90.124-1)
[2026-05-25T12:29:49-0300] [ALPM] upgraded miniconda3 (25.5.1.1-2 -> 26.3.2.2-1)
[2026-06-02T16:13:09-0300] [ALPM] upgraded darkly (0.5.21.r0.gc26d5e6-1 -> 0.5.37-1)
[2026-06-02T17:21:25-0300] [ALPM] installed papirus-folders-catppuccin-git (r30.f83671d1-2)
[2026-06-02T17:37:36-0300] [ALPM] installed catppuccin-cursors-mocha (2.0.0-1)

El resultado del análisis:

No hay paquetes dañados o comprometidos. Al comparar la lista de paquetes con los nombres de los paquetes dañados reportados oficialmente, resulta que ninguno de ellos se encuentra en mi sistema.

Un intervalo de tiempo de actualización claro y sin errores. Todas mis últimas actividades relacionadas con los paquetes tuvieron lugar el 2 de junio de 2026; es decir, antes del conocimiento del incidente (el 12 de junio) y fuera del período crítico. Las versiones y los tiempos de actualización coinciden con los lanzamientos oficiales (upstream) conocidos. No hay actualizaciones “fantasmales” ni ruidos inexplicables en la línea temporal.

Control manual como medida de protección: Dado que leo cada archivo PKGBUILD antes de su compilación, el riesgo de introducir código dañino sin darme cuenta es considerablemente menor en comparación con las herramientas automáticas de gestión de paquetes (como AUR).

El registro (log) confirma que mi sistema no se ha visto afectado por este incidente.

¿Qué debería hacer la gente ahora?
#

Si también utilizas Arch Linux con paquetes de AUR, te recomiendo seguir los siguientes pasos:

  1. Comprueba la lista de paquetes con pacman -Qm y compárala con la herramienta de la comunidad en GitHub, donde se mantiene actualizada la lista de más de 1.500 paquetes afectados.
  2. Lee el historial de registros (log-history) utilizando los comandos mencionados anteriormente para ver cuáles paquetes se instalaron o se actualizaron, y en qué momento.
  3. Comprueba manualmente los archivos PKGBUILDs: ahora y en el futuro. Este es el comando correspondiente. El comando less PKGBUILD solo tarda dos minutos y puede ahorrar muchísimos problemas.
  4. Usa el AUR-Helper con precaución. Quien use yay o paru debe asegurarse de que la opción de visualización de las diferencias esté activada durante las actualizaciones, de modo que los cambios realizados en el archivo PKGBUILD sean visibles antes de que se ejecuten.

Quienes hayan instalado muchos paquetes AUR o prefieran automatizar el proceso de comparación pueden utilizar la herramienta de Python disponible en el repositorio de la comunidad; esta herramienta realizará automáticamente la comprobación contra la lista de los más de 1.600 paquetes afectados.

# Check if you have any infected packages
python -m aur_check

# Full scan with all optional checks (systemd, eBPF, npm + bun cache)
python -m aur_check --full

# Refresh the package list from the official Arch Linux HedgeDoc, then scan
python -m aur_check --refresh --full

La herramienta requiere Python 3.14+ y no depende de ningún otro componente adicional.

¿Cambiar a Windows? De ninguna manera. Incidentes como este son parte de la vida cuando se utiliza un repositorio comunitario; quien controla adecuadamente su flujo de trabajo puede seguir durmiendo tranquilo después de ello. Arch Linux se queda ❤️

Un cordial saludo,
Sebastian

Este artículo fue traducido de alemán a español
md-translator v1.2.3 | Más Información

Relacionados

Cactus Comments: discusiones en el blog a través de tu propio servidor Matrix

1401 palabras·7 mins· loading

Tu propio servidor Matrix con Synapse: ¿Por qué deberías alojarlo tú mismo?

2097 palabras·10 mins· loading

Optimización de la ventana de contexto de Ollama: la clave para una integración exitosa de OpenCode

1412 palabras·7 mins· loading

Rainy 75 Pro: Así es mi teclado perfecto

·
1348 palabras·7 mins· loading

De PaperMod a Blowfish: ¿Por qué cambié mi tema Hugo?

1121 palabras·6 mins· loading

Instalación de DD-WRT en el TL-WR949N: la guía completa

1456 palabras·7 mins· loading

Comentarios
#