Compania a propus în discuție pe lista de distribuție a dezvoltatorilor nucleului Linux codul modulului LSM cu implementarea mecanismului IPE (Integrity Policy Enforcement), care extinde sistemele existente de management de acces mandatar. În loc de a se lega de etichete și căi, în IPE, decizia de a permite sau a interzice o operațiune se bazează pe proprietățile permanente ale componentelor sistemului cu care se efectuează operațiunea. Modulul permite definirea unei politici generale de asigurare a integrității pentru întreaga sistem, indicând ce operațiuni sunt acceptabile și cum ar trebui să se verifice autenticitatea componentelor.
IPE vizează crearea de sisteme complet verificabile, a căror integritate este confirmată de la bootloader-ul inițial și nucleu până la fișierele executabile finale, configurări și fișiere încărcate. De exemplu, utilizând IPE, se pot specifica care fișiere executabile sunt permise să fie lansate în funcție de verificarea conformității lor cu versiunea de referință folosind hash-uri criptografice furnizate de sistemul dm-verity. În caz de modificare sau înlocuire a fișierului, IPE poate bloca operațiunea sau înregistra faptul încălcării integrității.
Mecanismul propus poate fi aplicat în firmware-uri pentru dispozitive încorporate, unde tot software-ul și setările sunt special compilate și furnizate de proprietar, de exemplu, în centrele de date Microsoft, IPE este utilizat în echipamente pentru firewall-uri. Spre deosebire de alte sisteme de verificare a integrității, cum ar fi IMA, IPE se distinge prin independența față de metadatele din FS — toate proprietățile care definesc acceptabilitatea operațiunilor sunt stocate direct în nucleu.
Regulile sunt definite în formă textuală folosind seturi de cheie-valoare. Cele de bază sunt cheia „op”, care definește operația la care se aplică regula (de exemplu, op=EXECUTE se va activa la încercarea de execuție), și „action”, care definește acțiunea (de exemplu, „action=DENY” pentru blocare). Regulile sunt legate de proprietățile furnizate de subsisteme externe, cum ar fi dm-verity și fs-verity.
De exemplu, regulile op=EXECUTE boot_verified=TRUE action=ALLOW op=EXECUTE dmverity_signature=FALSE action=DENY op=EXECUTE fsverity_digest=sha256:401fce…0dec146938 action=DENY vor permite doar încărcarea de pe partiția verificată, vor interzice rularea fișierelor de pe partițiile care nu au semnături în dm-verity, și vor interzice selectiv executarea fișierului cu hash-ul „401fce…0dec146938”.
Setul inițial de reguli de încărcare este definit prin configurația SECURITY_IPE_BOOT_POLICY și este inclus în construcția nucleului, iar celelalte reguli sunt adăugate după cum este necesar prin fișierul /sys/kernel/security/ipe/new_policy. Regulele transmise sunt criptate folosind certificatul definit în SYSTEM_TRUSTED_KEYRING.
Pe sistemele de uz general, se recomandă utilizarea IPE în combinație cu mecanismul DIGLIM, dezvoltat de compania Huawei. DIGLIM este implementat prin eBPF și permite implementarea ușoară a controlului integrității la nivelul fișierelor individuale în distribuții convenționale, fără a necesita reprocesarea lor (se prezintă ca o variantă de Secure Boot, care funcționează la nivel aplicație). Esența DIGLIM constă în menținerea unui pool de hash-uri de verificare pentru fișiere și metadate și oferirea accesului la fișierele executabile doar dacă hash-ul acestora este prezent în pool. Lista hash-urilor poate fi obținută de la managerul de pachete RPM sau generată manual de utilizator.
Sursa: opennet.ro
