Bosh sahifa Wiki System call filtering

System call filtering

System call filtering — process kernel’dan so‘rashi mumkin bo‘lgan system call va ayrim argumentlarni policy asosida cheklash mexanizmidir. U compromised applicationning kernel attack surface’ini kamaytiradi. Linux seccomp BPF keng tarqalgan misol; boshqa platformalar sandbox profile yoki capability bilan o‘xshash maqsadni bajaradi.

Allowlist modeli

Eng tor policy workload haqiqatan ishlatadigan calllarni allowlist qiladi, qolganini rad etadi. Denylist faqat ma’lum xavfli callni bloklaydi, yangi yoki unutilgan variant ochiq qolishi mumkin. Default action processni to‘xtatish, error qaytarish, loglash yoki supervisor’ga xabar berish bo‘lishi mumkin.

Argument filtering ayrim callni toraytiradi. Masalan, specific operation flag yoki architecture tekshiriladi. Pointer orqali berilgan path mazmunini oddiy seccomp filter ishonchli o‘qiy olmaydi; filesystem policy, namespace va broker kerak. System call raqamlari architecture bo‘yicha farq qiladi.

Policy yaratish

Static analysis binary importlarini ko‘radi, ammo dynamic runtime va library qaysi callni ishlatishini to‘liq bilmasligi mumkin. Training rejimida representative workload calllari yoziladi. Normal start, steady state, error, signal, DNS, rotation va shutdown oqimlari qamrab olinadi. Faqat happy path profili production recovery’ni buzadi.

Generated profile review qilinadi. “Ishlasin” deb juda keng call qo‘shish surface’ni qayta ochadi. Runtime, libc yoki agent update yangi call talab qilishi mumkin; policy va image versiyasi birga testlanadi.

Container va broker

Container host kernelni bo‘lishgani sabab filtering muhim qatlamdir. Default profile kam ishlatiladigan privileged calllarni cheklaydi, workload-specific profile uni toraytiradi. Capability drop, user namespace, read-only mount va MAC policy birga ishlaydi. Faqat seccomp container isolationni to‘liq bermaydi.

Sensitive operation alohida broker processga berilishi mumkin. Sandbox process tor IPC request yuboradi, broker identity va argumentni tekshirib callni bajaradi. Bu surface’ni kichraytiradi, lekin broker yangi privileged attack surface bo‘ladi va qat’iy parser talab qiladi.

Nosozlik va observability

Filter denial application uchun oddiy permission error yoki signal ko‘rinishida kelishi mumkin. Audit event call raqami, process, executable va policy versionini ko‘rsatadi. Argumentda secret bo‘lsa to‘liq loglanmaydi. Alert yangi release’da denial ko‘payishini compatibility regression sifatida ajratadi.

Fail-open sandbox maqsadini buzadi, fail-closed esa noto‘g‘ri profile bilan availabilityni to‘xtatadi. Canary rollout, health check va rollback muvozanat beradi. Emergency exception tor call, image digest va expiry bilan beriladi.

Cheklovlar

Ruxsat etilgan callning o‘zida kernel vulnerability bo‘lishi mumkin. Logic exploit faqat qonuniy network va file calllardan foydalanadi. System call filtering application authorization yoki patchni almashtirmaydi. U exploitdan keyingi imkoniyatni toraytiradigan defense-in-depth qatlamidir.

Profil yaratish va sinash

Ruxsat ro‘yxati ilovaning odatiy ishga tushishi, yuklama ostidagi faoliyati, xato qayta ishlashi va to‘xtash jarayonini kuzatishdan boshlanadi. Faqat bitta qisqa test asosida tuzilgan profil kam uchraydigan, lekin qonuniy system callni bloklashi mumkin. Audit rejimi avval chaqiruvlarni qayd etib, keyin majburiy bloklashga o‘tishga yordam beradi. Arxitektura va yadro versiyasi chaqiruv nomi hamda argumentlariga ta’sir qilishi sabab profil platformaga mos tekshiriladi. Filtr zaif yadrodagi xatoni tuzatmaydi, ammo ekspluatatsiya uchun zarur chaqiruvni yopishi mumkin. U capability, namespace va majburiy kirish nazorati bilan birga qatlamli himoya sifatida ishlatiladi.

Bog‘liq tushunchalar

System call, seccomp, Sandbox, Linux capabilities, Mandatory access control, Attack surface, Least privilege