مسئله آلوده شدن تعدادی از بسته های aur + راه حل

چند روزیه خبرایی تو فضای مجازی می‌چرخه مبنی بر اینکه بعضی بسته های aur دچار نفوذ شدن و حالا مخرب هستن…
متاسفانه این اخبار درسته و می‌تونید لیست بسته های آلوده رو از اینجا ببینید.

بسته های مذکور لابه‌لای کدهاشون چیزای مشکوکی رو با npm از اینترنت می‌گرفتن و خلاصه چیزایی داخلشون پیدا شده که اصلا ربطی به خود برنامه نداشته و نباید اونجا وجود داشته باشه.

توجه کنید که این مشکل فقط برای مخازن غیررسمی به وجود اومده و مخازن رسمی آرچ سالم هستن!

از اونجایی که دستی چک کردن سخته، می‌تونین از اسکریپت زیر استفاده کنین:

#!/usr/bin/env bash

# Pulls the live package list from the official Arch Linux HedgeDoc note.
LIST_URL="https://md.archlinux.org/s/SxbqukK6IA"

echo "Fetching infected package list..."

raw=$(curl -fsSL "$LIST_URL") || { echo "ERROR: failed to fetch $LIST_URL"; exit 1; }

# Extract lines that look like package names only (lowercase, digits, dots, plus, underscore, hyphen)
# Strips HTML, blank lines, comments, and anything that doesn't match a sane pkgname pattern.
mapfile -t INFECTED_PKGS < <(
    echo "$raw" \
    | sed 's/<[^>]*>//g' \
    | grep -E '^[a-z0-9][a-z0-9_.+\-]*[a-z0-9]$' \
    | sort -u
)

count=${#INFECTED_PKGS[@]}
if [[ $count -eq 0 ]]; then
    echo "ERROR: parsed 0 packages, something went wrong with the fetch/parse."
    exit 1
fi

echo "Checking $count known infected packages..."
echo

mapfile -t found < <(comm -12 <(pacman -Qmq | sort) <(printf "%s\n" "${INFECTED_PKGS[@]}" | sort))

if [[ ${#found[@]} -eq 0 ]]; then
    echo "Clean: none of the known infected packages are installed."
else
    echo "WARNING: ${#found[@]} infected package(s) found:"
    for pkg in "${found[@]}"; do
        echo "  - $pkg"
    done
    echo
    echo "You may be infected"
fi

# printf "%s\n" "${INFECTED_PKGS[@]}"

اگر بسته ای در سیستمتون داشته باشید که در این جریانات آلوده شده باشه، این اسکریپت اسمش رو بهتون نشون میده.

اگر هیچ بسته آلوده ای بهتون نشون نداد که نگران نباشید؛ اما همچنان هوشیاریتون رو حفظ کنید و همیشه PKGBUILD ها رو بررسی کنید تا چیز مشکوکی داخلشون نباشه. اگر هم خودتون مطمئن نیستید، میتونین از هوش‌مصنوعی استفاده کنین (البته این روش هم باگ های خاص خودش رو داره) ولی در هرصورت از بررسی PKGBUILD ها غافل نشید!

اما اگر بسته ای پیدا کرد که آلوده بوده، قبل از هرچیزی بسته های لیست شده رو حذف کنید
مثلا خروجی شما باید همچین چیزی باشه:

که من با دستور زیر حذفشون کردم:

sudo pacman -Rns clang19 compiler-rt19 lld19

اما داستان فقط با حذف کردنشون تموم نمیشه. برای اطمینان می‌تونین از کامند زیر استفاده کنید:

grep -E "(pkgName)" /var/log/pacman.log

و به جای pkgName، اسامی بسته های آلوده رو جایگذاری کنید. مثال از بسته های خودم:

grep -E "(clang19|compiler-rt19|lld19)" /var/log/pacman.log

این کامند به طور دقیق نشون میده که در چه تاریخی این بسته ها رو نصب، به‌روزرسانی یا حذف کردید.

این قضیه آلوده شدن تقریبا از ۹ ژوئن شروع شده و اگه شما تو این بازه بسته های aur خودتون رو با paru یا هر aur-helper دیگه ای آپدیت کرده باشید، احتمالش وجود داره که آلوده شده باشید. درهرصورت تعویض رمز ها و ssh و امثالهم رو فراموش نکنید؛ اما درکل پیشنهاد میشه توزیع خودتون رو مجدد نصب کنید.

خلاصه همونطور که تو ویکی هم ذکر شده:
پارچ‌تان را نشکنید!

جزییات بیشتر و روش های بهتری برای چک کردن وضعیت دارن منتشر میشن.
تعداد بسته های آلوده که اولش حدود ۴۰۰ تا تخمین زده میشد، الان به بیش از ۱۵۰۰ میرسه.
میتونین برای بررسی آسیب اسکریپت زیر رو هم استفاده کنید:

git clone https://github.com/lenucksi/aur-malware-check
cd aur-malware-check && chmod +x aur_check-v2.sh
./aur_check-v2.sh --full