Kodni Masofadan Bajarish (RCE) bu xavfsizlik kamchiligi boʻlib, u xakerga dasturchi tomonidan yozilgan dasturlash tilidagi istalgan kodni bajarish imkonini beradi. “Masofadan” degan so’z hujumchi dasturni ishlayotgan tizimdan farqli joydan buni amalga oshirishi mumkinligini bildiradi. Kodni Masofadan Bajarish, shuningdek, “Code Injection (kod injekshn)” va “Remote Code Evaluation” deb ham ataladi.
| Xavflilik darajasi: | ⚠️⚠️⚠️⚠️⚠️ | Juda xavfli |
| Aniqlanish darajasi | ⚠️⚠️ | Tez-tez aniqlanadi |
| Qo’llanish doirasi | ⚠️⚠️⚠️⚠️⚠️ | Barcha elektron qurilmalarda uchraydi |
| Texnik ta’siri | “Command shell” ga kirish | |
| Eng yomon holatdagi oqibatlari | Tizimni butunlay ishdan chiqaradi | |
| Bartaraf etish uslublari | Foydalanuvchi tomonidan kiritlgan kodni “execute” qilmaslik |
Kodni kiritish/masofadan turib kodni bajarish qanday ishlaydi?
RCE zaifliklari istalgan turdagi kompyuter dasturida, deyarli barcha dasturlash tillarida va har qanday platformada paydo bo’lishi mumkin. Masalan, C# da yozilgan mustaqil Windows dasturlari, PHP da yozilgan veb-dasturlar va API-lar, Java da yozilgan mobil ilovalar va hatto operatsion tizimlarning o’zida ham RCE zaifliklari mavjud.
Boshqa zaifliklar masofadan turib ixtiyoriy kodni bajarishga olib kelishi mumkin. Masalan, C/C++ kabi tillardagi buferlarning haddan tashqari to’lib ketish(buffer overflow) zaifliklari hujumchiga dastur ichida ixtiyoriy kodni bajarish imkonini berishi mumkin. Deserializatsiya zaifliklari ham hujumchilarga deserializatsiya qilinganda dastur tomonidan bajariladigan kodni o’z ichiga olgan yuklama(payload) taqdim etishga imkon berishi mumkin. Hatto SQL in’ektsiya va veb-saytlararo skript (XSS) zaifliklari zaif dasturda masofadan turib kodni bajarishga olib keladigan holatlar ham ma’lum.
Ba’zi RCE hujumlari bir oz vaqtdan keyin ham sodir bo’lishi mumkin. Masalan, dastur avval RCE yuklamasini(payload) konfiguratsiya faylida saqlab, keyinroq, hatto bir necha marta ham uni bajarishi mumkin. Ushbu turdagi RCE zaifligi saqlangan(stored) RCE deb ataladi.
Shuni ta’kidlash kerakki, RCE/kodni kiritish ko’pincha OS buyruqlarini kiritish bilan aralashib ketadi. RCE holatida bajarilgan kod dasturning tilida bo’lib, dastur kontekstida ishlaydi. OS buyruqlarini kiritishda hujumchi operatsion tizim buyrug’ini bajaradi. Shuningdek, OWASP tomonidan afzal ko’rilgan va CWE-94 da ta’riflangan “kodni kiritish(code injection)” atamasi keng tarqalgan “masofadan turib kodni bajarish(remote code execution) “atamasidan ko’ra kengroq tarqalganligini ham ta’kidlash kerak.
Web-dasturlardagi RCE zaifliklari
Veb-dasturlashda ishlatiladigan har bir keng tarqalgan dasturlash tili o’sha tilda kodni bajarish (execute) uchun funksiyalarga ega. Veb-dasturlarda ishlab chiquvchilar bunday funksiyalardan foydalanganda, veb-server tomonidan masofadan turib kodni bajarish imkoniyati paydo bo’ladi. PHP va JavaScript-da bunday funksiyalarga misol eval hisoblanadi.
Agar ishlab chiquvchi eval kabi funksiyaga sanitariya qilinmagan foydalanuvchi so’rovlarini qayta ishlashga ruxsat bergan bo’lsa, hacker foydalanuvchi so’rovlarini kiritib, kodni kiritish imkoniga ega bo’lishi mumkin. Foydalanuvchi nazorati ostidagi so’rovlarga veb-shakllardan olingan matn, HTTP sarlavhalarning mazmuni, foydalanuvchi yuklagan fayllar yoki hatto o’zgartirilgan kukilar misol bo’la oladi.
Web-dasturlarda masofadan turib kodni bajarish hujumiga misol:
Quyida kodni kiritish zaifliklari (RCE) va ushbu kodni o’z ichiga olgan dasturlarga hujum vektori mavjud bo’lgan PHP manba kodining oddiy misoli keltirilgan.
<?php eval("echo ".$_GET["user"].";"); ?>
Dasturchi foydalanuvchi URL parametr sifatida faqat to’g’ri foydalanuvchi nomini kiritadi deb taxmin qiladi:
http://www.example.com/index.php?user=admin
Natijada, dastur parametr qiymatini kod sifatida baholashga olib keladi:
echo admin;
Va foydalanuvchi nomini chiqaradi.
Hujum vektori
Hujumchi zararli kodni quyidagicha kiritish orqali foydalanishi mumkin:
- Vergildan keyin (“;”) belgisini qo’yadi.
- Vergildan keyin asosiy yuklama (payload) kodini yozadi.
Vergul, undan keyingi qismni PHP kodi sifatida qayta ishlashga majbur qiladi, shuning uchun hacker asosiy yuklamani yangi PHP buyrug’i sifatida kiritib qo’yadi.
Misol uchun, hujumchi quyidagi so’rov yuborishi mumkin:
http://www.example.com/index.php?user=admin;phpinfo();
Bu so’rovda eval funksiyasi quyidagi kodni bajarishga olib keladi:
echo admin;
phpinfo();
echo admin;– foydalanuvchi nomini (“admin”) chiqaradi.phpinfo();– server haqida texnik ma’lumotlarni chiqaradi (xavfli!).
Natijada, hujumchi foydalanuvchi nomini oshkor qiladi va server haqida to’liqroq ma’lumot oladi, bu esa keyingi hujumlar uchun foydali bo’lishi mumkin.
RCE Web hujumining ehtimoliy oqibatlari
Masofadan turib kodni bajarish (RCE) eng yuqori darajadagi zaifliklardan biri hisoblanadi, chunki RCE kiberhujumi oqibatlari juda cheksiz, ayniqsa veb-dasturlar uchun.
Hujumchilar RCE zaifliklaridan foydalanib, ko’pincha veb-shell o’rnatish orqali hujumni boshlashadi. Bunday RCE hujumi yuklamasi(payload) tizim buyruqlarini bajarish uchun nishondagi qurilmaga shell kirish huquqini olishga imkon beruvchi kodni o’z ichiga oladi. Shell “teskari shell”(reverse shell) bo’lishi mumkin, bu esa hujumchiga ko’pgina “xavfsizlik devorlaridan”(firewall) qochish imkonini beradi.
Web-shell web-serverning huquqlariga ega bo’lib, ular odatda cheklangan bo’ladi. Biroq, hujumchi masofadan turib mashinadagi shellga kirish imkoniga ega bo’lgach, u boshqa zaifliklarni topishga va “root” foydalanuvchi qaydnomasiga kirishga imtiyozlarni oshirish (privilege escalation) usulidan foydalanishi mumkin.
Agar muvaffaqiyatli bo’lsa, hujumchi nishondagi qurilmaga cheksiz kirish imkoniga ega bo’ladi va quyidagi hujum turlaridan birini amalga oshirishi mumkin:
- Ransomware yoki boshqa zararli dasturlar: Hujumchi mashinaga ransomware dasturi agentini o’rnatishi mumkin, bu esa boshqa usullar yordamida jabrlanuvchiga tegishli boshqa qurilmalarga tarqaladi.
- Kriptovalyuta qazib olish(Cryptomining): Hujumchilar ko’pincha zararlangan qurilmalarda kriptovalyuta qazib olish dasturlarini o’rnatadi. Qazib olish(Mining) kiberjinoyatchilarga ko’proq zararli faoliyatini mablag’ bilan ta’minlash uchun sizning hisoblash resurslaringizdan foydalanadi.
- Muhim ma’lumotlarni o’g’irlash: Hujumchi imtiyozlarni oshirish(privilege escalation) orqali SQL ma’lumotlar bazasi serverlariga kirish imkoniga ega bo’lishi va kredit karta raqamlari kabi muhim ma’lumotlarni o’g’irlashi mumkin.

RCE zaifliklari misollari
- CVE-2021-44228 (Log4Shell): Apache Log4j 2.x-dagi bu zaiflik veb-dastur bo’lmagan holda ham RCE hujumlariga imkon bergan. Hujumchi uchun hech qanday avtorizatsiya talab qilinmaydi. Ushbu zaiflik tufayli Steam, Apple iCloud, Minecraft va boshqa ko’plab mashhur ilovalar ham ta’sirlangan.
- CVE-2021-1844: Apple iOS, macOS, watchOS va Safari-dagi bu zaiflik operatsion tizim modulida RCE hujumlariga imkon bergan. Agar jabrlanuvchi hujumchi nazorati ostidagi URL-ga tashrif buyursa, operatsion tizim ushbu qurilmada zararli yuklamani(payload) bajaradi.
- CVE-2020-17051: Microsoft Windows NFSv3-dagi bu zaiflik operatsion tizim modulida RCE hujumlariga imkon bergan. Hujumchi zaif NFS serveriga ulanib, yuklama(payload) jo’natadi va so’ngra nishondagi qurilma uni ishga tushiradi.
- CVE-2019-8942: WordPress 5.0.0-dagi bu zaiflik mashhur veb-dasturda RCE hujumlariga imkon bergan. Hujumchi PHP kodi o’z ichiga olgan maxsus tayyorlangan rasm faylini yuklab, WordPress ichida ixtiyoriy kodni bajarishi mumkin.
RCE zaifliklarini qanday aniqlash mumkin?
RCE zaifliklarini aniqlashning eng yaxshi usuli ularning ma’lum yoki noma’lumligiga bog’liq.
Agar siz faqat tijorat yoki ochiq manbali dasturlardan foydalansangiz va o’zingiz dastur yaratmasangiz, ishlatayotgan tizim yoki dasturingizning aniq versiyasini aniqlash kifoya bo’lishi mumkin. Agar aniqlangan versiya RCE uchun zaif bo’lsa, dasturingizni ham zaif deb hisoblashingiz mumkin. Versiyani qo’lda aniqlashingiz yoki veb-dasturlar uchun dastur tarkibi tahlili (SCA) yechimi yoki tarmoqli tizimlar va dasturlar uchun tarmoq skaneri kabi mos keladigan xavfsizlik vositalaridan foydalanishingiz mumkin.
Agar o’zingiz dastur yaratsangiz yoki ma’lum dasturlardagi noma’lum RCE zaifliklarini (zero-day) topish imkoniyatiga ega bo’lishni istasangiz, RCE zaifligini muvaffaqiyatli ekspluatatsiya qilishingiz kerak bo’ladi. Bu xavfsizlik tadqiqotchilari(security researchers) yordamida odatiy penetration testing yoki veb-zaifliklarni avtomatik ravishda ekspluatatsiya qila oladigan zaiflik skaneri vositasidan foydalanishni talab qiladi. Bunday vositalarga misol sifatida Invicti va Acunetix kiradi.
RCE hujumlarini bartaraf etish usullari
RCE hujumlarini bartaraf etishning mumkin bo’lgan usullari zaif dasturning turiga qarab farq qiladi:
- O’zingiz yaratgan dasturlar uchun: RCE-ni doimiy ravishda bartaraf etishning yagona usuli foydalanuvchi tomonidan kiritilgan qiymatlarni qayta ishlovchi funksiyalarni dastur kodingizdan olib tashlashdir.
- Uchinchi tomon(Third party) dasturlarida ma’lum RCE zaifliklari uchun: Eng so’nggi xavfsizlik patchlarini tekshirib, zaif bo’lmagan versiyaga (odatda eng so’nggi versiyaga) yangilashingiz kerak.
- Uchinchi tomon(Third party) dasturlarida nol kunlik(zero-day) RCE zaifliklari uchun: Faqatgina vaqtinchalik WAF (veb-dastur xavfsizlik devori(firewall)) qoidalariga tayanishingiz mumkin. Biroq, bu RCE-ni ekspluatatsiya qilishni qiyinlashtiradi va muammoning asosiy sababini bartaraf etmaydi.
Leave a Reply