File Capability — Linux executable fayliga extended attribute orqali capability privilege’larini biriktirish mexanizmi. Dastur to‘liq setuid root bo‘lmasdan, masalan faqat raw network socket ochish uchun kerakli huquqni exec paytida olishi mumkin. File capability root vakolatini mayda bo‘lakka ajratadi, lekin executable va uning yuklanish zanjiri ishonchli bo‘lishini talab qiladi.
Saqlanishi
Capability metadata odatda security.capability xattr’da saqlanadi. Unda permitted va inheritable masklar, effective flag va format versiyasi mavjud. setcap atributni yozadi, getcap ko‘rsatadi. Filesystem xattr va security namespace’ni qo‘llashi kerak.
Fayl nusxalanganda barcha vositalar xattr’ni saqlamaydi. Archive, deployment va package manager capability yo‘qolishi yoki kutilmaganda ko‘chishini hisobga oladi. Hash faqat file data’ni qamrab, xattr’ni qamramasa integrity tekshiruvi to‘liq emas.
Exec hisoblash
Kernel exec paytida file masklari, thread inheritable seti va capability bounding setdan yangi permitted setni hisoblaydi. Effective flag belgilangan bo‘lsa tegishli permitted capability’lar darhol effective bo‘ladi. Bounding setdan oldin olib tashlangan privilege file orqali qaytmaydi.
no_new_privs yangi file privilege olishni bloklaydi. nosuid mount flag file capability va setuid ta’sirini platforma qoidalariga muvofiq cheklaydi. User namespace va namespaced file capability formatlari UID mappingni hisobga oladi.
Setuid bilan taqqoslash
Setuid root executable ko‘p hollarda barcha root capability’larini olishi mumkin. File capability faqat zarur bitlarni beradi va zarar doirasini kamaytiradi. Biroq CAP_SYS_ADMIN kabi juda keng bit berilsa foyda kichrayadi.
Privilege faqat kernel operationiga tegishli. Dastur o‘qiydigan konfiguratsiya, plugin va environment ishonchsiz bo‘lsa attacker privileged code pathni boshqarishi mumkin. Privileged executable dynamic loaderning secure-execution qoidalariga tayanadi.
Deployment
Package manifest qaysi binaryga qaysi capability kerakligini aniq deklaratsiya qiladi. Install oxirida effective xattr tekshiriladi. Container image layer va overlay filesystem capability’ni saqlashi kerak; rootless unpack namespaced xattr chekloviga duch kelishi mumkin.
Immutable image’da file data va metadata imzo yoki measured boot bilan bog‘lanadi. Administrator binary yangilanganda eski xattr avtomatik qoladimi yoki tozalanadimi filesystem operationiga qarab tekshiradi.
Xavfsizlik tekshiruvi
System bo‘ylab capability’li fayllar inventarizatsiya qilinadi. Kutilmagan writable directory ichidagi privileged binary jiddiy xatar. File owner, mode, parent directory permissioni va xattr birga tekshiriladi.
Ilova capability’ni faqat kerakli startup amalida ishlatib, keyin effective va permitted setdan olib tashlaydi. Audit denied operation uchun aynan qaysi bit zarurligini ko‘rsatadi; ishlashi uchun “hammasini” berish to‘g‘ri yechim emas.
Script va interpreter
File capability scriptga qo‘yilganda kernel privilege’ni interpreterga qanday uzatishi xavfsizlik va implementation qoidalariga bog‘liq; ko‘p holatda kutilgan tarzda ishlamaydi. Privileged wrapper compiled binary bo‘lib, interpreter pathi, script identity va argumentlarni qat’iy tekshirishi kerak. User-writable script yoki import path privileged runtime’ga code injection beradi.
Network filesystem
NFS yoki boshqa remote filesystem xattr’ni saqlamasligi, clientga ko‘rsatmasligi yoki mount policy bilan file capability’ni o‘chirishi mumkin. Serverga ishonch va transport integritysi ham muhim: executable data yoki xattr almashtirilsa privilege beriladi. Production privileged binary local verified filesystemda saqlanishi, deploydan keyin data hash va capability metadata birga tekshirilishi afzal.
Bog‘liq tushunchalar
security.capability, setcap, setuid, extended attribute, no_new_privs, capability bounding set