Linux Security Modules
Linux Security Modules (LSM) je v informatice název frameworku, který umožňuje v jádře Linuxu implementovat různé bezpečnostní politiky. Framework je licencován pod GNU General Public License a je standardní součástí jádra Linuxu od verze 2.6. V oficiálním jádru jsou v současnosti též moduly AppArmor, SELinux, Smack a TOMOYO Linux.
Návrh
LSM byl navržen tak, aby mohla být implementována politika mandatorního řízení přístupu při co nejmenších možných zásazích do původního jádra. LSM nepoužívá metodu System Call Interposition,[1] která je implementována v jiných bezpečnostních nástrojích, jako je například Systrace, jelikož se tato metoda nedá škálovat pro souběh více procesorových jader a je zranitelná vůči Time of check to time of use (TOCTTOU) útokům. Místo kontrolování přístupu procesů ke zdrojům LSM implementuje "záchytné body" (upcall, volání z jádra do konkrétní implementace modulu) na všechna místa, kde uživatelské volání dotazuje důležitou součást kernelu, například inode nebo Task Control Block. Cílem projektu je tedy co nejjednodušeji vyřešit kontrolu přístupu při minimálních zásazích do jádra.
Cíl LSM je velmi blízký problému systémového auditu, pro kvalitní auditing je však potřeba každý pokus o přístup ke zdrojům jádra logovat, což LSM nemůže. Takováto vlastnost by potřebovala mnohem více "záchytných bodů", aby byly zaznamenány i zamítnutá systémová volání mimo kritické oblasti.
Poprvé byl návrh LSM popsán ve studii Linux Security Modules: General Security Support for the Linux Kernel[1] prezentované v roce 2002 na konferenci USENIX Security[2]. Na stejné konferenci byla prezentována i práce Using CQUAL for Static Analysis of Authorization Hook Placement[3], která popisuje automatizovanou analýzu kernelu a otázku, zdali byly záchytné body vloženy na všechna potřebná místa linuxového jádra.
Historie
V roce 2001 na summitu Linux Kernel organizace NSA navrhla, aby byl v jádře Linux 2.5 implementován modul SELinux. Linus Torvalds odmítl s argumentem, že je ve vývoji několik různých bezpečnostních projektů a jelikož se všechny výrazně liší, linuxová komunita ještě nedošla ke konsenzu, jak má bezpečnost Linuxu vypadat. Místo toho Linus komunitě navrhl, aby vytvořila modul schopný používat různé implementace.
V návaznosti Crispin Cowan navrhl[4] LSM: interface pro linuxové jádro, který poskytuje dostatek "záchytných bodů" umožňující volat z jádra externí modul (Loadable kernel module), umožňující modulu vynutit mandatory access control. V následujících dvou letech byl vývoj vedený pod záštitou LSM komunity s příspěvky od společností Immunix Corporation, NSA, IBM, Silicon Graphics, ale i od mnoha jednotlivců. Nakonec bylo LSM přijato do standardního Linuxového jádra verze 2.6 v prosinci 2003.
V roce 2006 si vývojíři linuxového jádra všimli, že SELinux je jediný široce užívaný bezpečnostní modul, a proto bylo navrženo, aby bylo LSM z kernelu opět odstraněno a aby jádro dostalo "napevno" pouze SELinux. Ve vývoji však bylo mnoho různých modulů, například AppArmor, Linux Intrusion Detection System, FireFlier, CIPSO, Multi ADM a další. Tato snaha měla dva výsledky, vývojáři "vedlejších" větví modulů pro LSM se začali snažit své produkty více prosazovat do hlavního proudu Linuxu a za druhé Linus opět potvrdil otevřenost systému: trval na tom, že LSM zůstane v jádru, jelikož nechce zkoumat, který z bezpečnostních modelů je nejlepší a tato volba zůstává na konečném uživateli. LSM se vší pravděpodobností přetrvá i dále, jelikož jsou stále přijímány další bezpečnostní moduly, jako například TOMOYO Linux v červnu 2009 nebo AppArmor v říjnu roku 2001.
Reference
V tomto článku byl použit překlad textu z článku Linux Security Modules na anglické Wikipedii.
Literatura
- "Linux Security Modules: General Security Support for the Linux Kernel". 2002. Retrieved 2007-02-03.
- "11th USENIX Security Symposium". 2002. Retrieved 2007-02-03.
- "Using CQUAL for Static Analysis of Authorization Hook Placement". 2002. Retrieved2007-02-03.
- Crispin Cowan (2001-04-11). "Linux Security Module Interface". linux-kernel mailing list. Retrieved 2007-02-03.