Het bedrijf heeft een LSM-module met de implementatie van het IPE (Integrity Policy Enforcement) mechanisme ter bespreking aangeboden op de mailinglijst van Linux kernel ontwikkelaars. In tegenstelling tot de binding aan labels en paden, wordt in IPE de beslissing om een operatie toe te staan of te verbieden genomen op basis van constante eigenschappen van de systeemcomponent waarmee de operatie wordt uitgevoerd. De module stelt in staat om een algemene integriteitsbeleid voor het hele systeem vast te stellen, dat aangeeft welke operaties zijn toegestaan en op welke manier de authenticiteit van de componenten moet worden geverifiëerd.
IPE is gericht op het creëren van volledig verifieerbare systemen, waarvan de integriteit wordt bevestigd vanaf de initiële bootloader en kernel tot de eind-executables, configuraties en geladen bestanden. Bijvoorbeeld, met behulp van IPE kan worden aangegeven welke uitvoerbare bestanden zijn toegestaan, rekening houdend met hun naleving van de referentieversie via cryptografische hashes geleverd door het systeem dm-verity. In het geval van wijziging of vervalsing van een bestand kan IPE de operatie blokkeren of journaliseren dat de integriteit is geschonden.
Het voorgestelde mechanisme kan worden toegepast in firmware voor embedded apparaten, waarin alle software en instellingen speciaal worden samengesteld en geleverd door de eigenaar. Bijvoorbeeld, in de datacenters van Microsoft wordt IPE toegepast in hardware voor firewalls. In tegenstelling tot andere integriteitscontrolesystemen, zoals IMA, onderscheidt IPE zich door onafhankelijkheid van metadata in het bestandssysteem — alle eigenschappen die de toelaatbaarheid van operaties bepalen, worden rechtstreeks in de kernel opgeslagen.
Regels worden gedefinieerd in tekstvorm met behulp van key-value paren. De basisregels zijn de sleutel "op", die de operatie definieert waarop de regel van toepassing is (bijvoorbeeld, op=EXECUTE zal worden geactiveerd bij een poging tot uitvoering), en "action", die de actie definieert (bijvoorbeeld, "action=DENY" voor blokkering). Regels worden gekoppeld aan eigenschappen die worden geleverd door externe subsystemen, zoals dm-verity en fs-verity.
Bijvoorbeeld, de regels op=EXECUTE boot_verified=TRUE action=ALLOW op=EXECUTE dmverity_signature=FALSE action=DENY op=EXECUTE fsverity_digest=sha256:401fce…0dec146938 action=DENY staan alleen het opstarten vanaf een geverifieerde partitie toe, verbieden het uitvoeren van bestanden van partities zonder dm-verity handtekeningen, en selectief verbieden het uitvoeren van het bestand met de hash «401fce…0dec146938».
De initiële set van opstartregels wordt gedefinieerd met behulp van de instelling SECURITY_IPE_BOOT_POLICY en is opgenomen in de kernel-build, terwijl de overige regels indien nodig worden toegevoegd via het bestand /sys/kernel/security/ipe/new_policy. De doorgegeven regels worden versleuteld met behulp van het certificaat dat is gedefinieerd in SYSTEM_TRUSTED_KEYRING.
Op algemene systemen wordt aanbevolen om IPE te combineren met het DIGLIM-mechanisme, dat wordt ontwikkeld door Huawei. DIGLIM is geïmplementeerd met behulp van eBPF en maakt het gemakkelijk om integriteitscontrole op het niveau van afzonderlijke bestanden uit te voeren in reguliere distributies, zonder dat ze opnieuw moeten worden ontworpen (het wordt gepresenteerd als een variant van Secure Boot die op applicatieniveau werkt). De essentie van DIGLIM is het onderhouden van een pool van controle-hashes voor bestanden en metadata, en het bieden van toegang tot uitvoerbare bestanden alleen als de hash ervan aanwezig is in de pool. De lijst met hashes kan worden verkregen van de RPM-pakketbeheerder of handmatig door de gebruiker worden gegenereerd.
Bron: opennet.ru
