RCE w ImunifyAV/AI-Bolit: zdalne wykonanie kodu z poziomu skanera AV. Miliony serwisów Linux w zasięgu ataku - Security Bez Tabu

RCE w ImunifyAV/AI-Bolit: zdalne wykonanie kodu z poziomu skanera AV. Miliony serwisów Linux w zasięgu ataku

Wprowadzenie do problemu / definicja luki

W popularnym skanerze z rodziny Imunify – module AI-Bolit dostarczanym w Imunify360, ImunifyAV+ oraz darmowym ImunifyAV – wykryto krytyczny błąd pozwalający na zdalne wykonanie kodu (RCE) podczas analizy złośliwych, obfuskowanych plików PHP. Luka dotyczy wersji przed 32.7.4.0. Dostawca (CloudLinux/Imunify) wydał poprawki i zaleca natychmiastową aktualizację do ≥ 32.7.4.0; backport dla starszych gałęzi Imunify360 pojawił się 10 listopada 2025 r.

Kluczowe: wektor ataku uruchamia się w trakcie skanowania – skaner, próbując „odkleić” warstwy obfuskacji, może wykonać funkcje wskazane przez napastnika (np. system, exec, shell_exec, passthru, eval).


W skrócie

  • Zagrożone: instalacje Imunify360/AV+/AV z komponentem AI-Bolit < 32.7.4.0.
  • Ryzyko: RCE z uprawnieniami procesu skanera; na hostingu współdzielonym może to oznaczać pełne przejęcie serwera.
  • Wektor: specjalnie przygotowane, obfuskowane pliki PHP skanowane przez AI-Bolit (deobfuskacja wymuszona w integracji Imunify).
  • Stan: poprawka dostępna; brak CVE w momencie publikacji; oficjalna notka w bazie wiedzy, wzmianka w changelogu.
  • Akcja: update do 32.7.4.0+, audyt artefaktów po ewentualnym RCE, ograniczenie uprawnień procesu skanera, izolacja.

Kontekst / historia / powiązania

To nie pierwszy raz, gdy AI-Bolit ma problem z wykonywaniem nieufnych danych. W 2021 r. Talos opisał RCE (CVE-2021-21956) wynikające z PHP unserialize w AI-Bolit (dot. wersji 5.8–5.10.2), naprawione w 5.11.3. Obecna podatność jest innej natury, ale podobnie dotyka ścieżki analizy złośliwych próbek.

Wg źródeł publicznych, o problemie w 2025 r. informowano od końca października; 4 listopada pojawił się wpis w Zendesk (Knowledge Base) pt. „Ai-Bolit security vulnerability before v32.7.4.0”; 10 listopada – backport; 12–13 listopada – publikacje techniczne i prasowe.


Analiza techniczna / szczegóły luki

Miejsce błędu

  • AI-Bolit stosuje heurystyki i moduły deobfuskacji do rozklejania łańcuchów base64/gzinflate/pack/chr/ord/....
  • Krytyczna część logiki wywołuje funkcje przez call_user_func_array na nazwach funkcji odzyskanych z próbki (np. system, shell_exec, eval) – bez walidacji.
  • W CLI deobfuskacja bywa domyślnie wyłączona, ale integracja Imunify (Python wrapper) zawsze przekazuje --deobfuscate dla wszystkich typów skanów (tła, on-demand, user-initiated, rapid).

Wymagania ataku

  • Napastnik umieszcza plik PHP zawierający specjalnie przygotowany, obfuskowany ładunek (np. w katalogu strony lub katalogu tymczasowym), który trafi do skanera AI-Bolit.
  • W trakcie deobfuskacji skaner wykonuje zakodowane ciągi jako nazwy funkcji i argumenty → RCE.
  • Patchstack publikuje PoC, który podczas skanowania tworzy plik w /tmp – dowód wykonania komendy.

Poprawka

  • Vendor dodał whitelistę funkcji bezpiecznych i „deterministycznych” (np. base64_decode, gzinflate, strrev, chr, ord, …) oraz blokadę arbitralnych wywołań.

Praktyczne konsekwencje / ryzyko

  • Hosting współdzielony (cPanel/Plesk): jeśli skaner działa z podwyższonymi uprawnieniami (częste), exploity mogą umożliwić eskalację poza pojedynczy vhost – do roota w niektórych, źle utwardzonych konfiguracjach.
  • Zaciemnienie śladów: ładunki są z natury obfuskowane; logi skanera mogą nie zapisać jednoznacznej sygnatury. Trzeba polować na artefakty boczne (np. tworzone pliki w /tmp, nieoczekiwane połączenia wychodzące z procesu skanera PHP).
  • Łańcuchy ataków: możliwe dołożenie web-shelli, modyfikacja wp-config.php, wstrzyknięcie crontabów użytkowników, pivot na inne konta poprzez wspólne ścieżki/UID. (Wniosek z natury RCE skanera działającego globalnie na hostingu.)

Rekomendacje operacyjne / co zrobić teraz

1) Natychmiastowa aktualizacja

  • Docelowa wersja: AI-Bolit/Imunify AV 32.7.4.0 lub nowsza.
  • Oficjalne potwierdzenie i komunikat KB: „Ai-Bolit security vulnerability before v32.7.4.0” (CloudLinux Zendesk).

cPanel/WHM – systemy RPM (Alma/RHEL/CentOS):

# sprawdź pakiety Imunify/AI-Bolit
rpm -qa | egrep -i 'imunify|ai-bolit'

# aktualizacja z repozytoriów Imunify
yum clean all && yum -y update imunify* ai-bolit* imunify-antivirus* imunify360*

# restart usług powiązanych (przykładowo)
systemctl restart imunify360 imunify-antivirus || true

Debian/Ubuntu (Plesk/VPS):

apt-get update
apt-get install --only-upgrade imunify* ai-bolit* imunify360*
systemctl restart imunify360 imunify-antivirus || true

Uwaga: nazwy paczek różnią się między dystrybucjami/integracjami. W razie wątpliwości – sprawdź dpkg -l | grep -i imunify / rpm -qi <pakiet>.

2) Weryfikacja, czy wersja jest już bezpieczna

Ponieważ AI-Bolit to komponent, w praktyce sprawdzamy wersję paczek Imunify oraz binariów w /opt/ai-bolit/:

# szybkie tropy wersji
strings /opt/ai-bolit/ai-bolit.php 2>/dev/null | egrep -i 'version|ai-bolit'
# lub:
grep -i version /opt/ai-bolit/* 2>/dev/null

# Imunify360/AV wersje pakietów
imunify360-agent version 2>/dev/null || true
rpm -qa | grep -i ai-bolit || dpkg -l | grep -i ai-bolit

(Dostawca nie publikuje jednolitego polecenia „–version” dla AI-Bolit w każdej dystrybucji; opieramy się więc na wersjach pakietów i artefaktach plikowych). Informacja o wymaganej wersji pochodzi z BleepingComputer/KB.

3) Działania kompensacyjne (jeśli patch musi poczekać – niezalecane)

  • Izoluj skaner: uruchamiaj w kontenerze/sandboxie z mnim. uprawnieniami (AppArmor/SELinux profil, noexec na /tmp, ograniczenia sieciowe).
  • Zabroń deobfuskacji w trybie standalone (CLI) – nie w pełni skuteczne w integracji Imunify, która i tak wymusza --deobfuscate.
  • UCIĄĆ możliwości wykonania: mounty nodev,nosuid,noexec dla partycji tymczasowych (/tmp, /var/tmp, dev/shm).

4) Polowanie na ślady (triage po incydencie)

Skorzystaj z informacji o PoC (tworzenie pliku w /tmp), a także ogólnych wzorców RCE z PHP:

# 1) Artefakty PoC oraz potencjalnych ładunków
find /tmp -maxdepth 1 -type f -mmin -4320 -printf '%TY-%Tm-%Td %TT %p %s\n' | egrep 'l33t|def|tmp|\.php'

# 2) Nietypowe wywołania procesu skanera (czas skanów)
ps -eo user,pid,ppid,lstart,cmd | egrep -i 'ai-bolit|imunify|php'

# 3) Ostatnio zmieniane pliki w vhostach (web-shelle, .php w uploadach)
find /home /var/www -type f -mtime -2 -iname '*.php' -printf '%p %TY-%Tm-%Td %TT %u:%g %s\n' | head

# 4) Crontaby i autostarty użytkowników
for u in $(cut -d: -f1 /etc/passwd); do crontab -l -u "$u" 2>/dev/null | sed "s/^/$u: /"; done

# 5) Grep na funkcje wysokiego ryzyka w drzewach WWW
grep -R --include=*.php -nE '(shell_exec|system|passthru|eval\()' /var/www /home/*/public_html 2>/dev/null

Dodatkowo przejrzyj logi serwera w oknach czasowych skanów oraz outbound (egres) procesu PHP/ai-bolit.

5) Utwardzanie na przyszłość

  • Uruchamiaj skanery pod odseparowanym użytkownikiem, bez roota; ogranicz CAP_*.
  • Włącz LSM (AppArmor/SELinux) z profilami dla procesu skanera.
  • W hostingach współdzielonych: CageFS/CloudLinux, mod_suexec/php-fpm per-user, izolacja sieciowa i systemowa per konto.
  • Monitoring integralności (AIDE/OSSEC/Wazuh) + alerty na tworzenie plików wykonywalnych w /tmp.

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

  • CVE-2021-21956 (AI-Bolit unserialize) – RCE przez niebezpieczne deserializacje; naprawione w 5.11.3.
  • Obecna luka (2025) – RCE przez wykonywanie funkcji odzyskanych z obfuskowanego kodu podczas deobfuskacji; brak CVE w chwili pisania, naprawa w 32.7.4.0 i nowszych.
    Wspólny mianownik: powierzchnia ataku w silniku analizy skanera. Wnioski dla vendorów: deobfuskacja powinna być czysto syntaktyczna, nigdy „egzekucyjna”.

Podsumowanie / kluczowe wnioski

  • Jeśli używasz Imunify360/ImunifyAV(+), zaktualizuj natychmiast do ≥ 32.7.4.0.
  • Potraktuj środowisko jak potencjalnie naruszone, jeśli skany uruchamiano na niezaufanych plikach w okresie przed aktualizacją – wykonaj triage i threat hunting.
  • Nawet narzędzia bezpieczeństwa wymagają zasady najmniejszych uprawnień i izolacji; skaner AV nie powinien móc zniszczyć całego hosta.

Źródła / bibliografia

  1. BleepingComputer – „RCE flaw in ImunifyAV puts millions of Linux-hosted sites at risk”, 13 listopada 2025 (szczegóły wersji, kontekst wdrożeń, backport 10 XI). (BleepingComputer)
  2. Patchstack – „Critical: Remote Code Execution via Malicious Obfuscated Malware in Imunify360 AV (AI-Bolit)”, 12 listopada 2025 (analiza techniczna, PoC, wymuszenie --deobfuscate, opis łatki). (Patchstack)
  3. CloudLinux/Imunify – Knowledge Base: „Ai-Bolit security vulnerability before v32.7.4.0.”, wpis z 4–12 listopada 2025 (oficjalna notka i zalecenie aktualizacji). (cloudlinux.zendesk.com)
  4. NVD/Cisco Talos – CVE-2021-21956 (porównanie z wcześniejszym RCE w AI-Bolit, 2021). (NVD)