چند روزیه خبرایی تو فضای مجازی میچرخه مبنی بر اینکه بعضی بسته های 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 و امثالهم رو فراموش نکنید؛ اما درکل پیشنهاد میشه توزیع خودتون رو مجدد نصب کنید.
خلاصه همونطور که تو ویکی هم ذکر شده:
پارچتان را نشکنید!
