Linus Torvalds schválil dokument pro jádro, který popisuje proces řešení chyb souvisejících s bezpečností, definuje model hrozeb, objasňuje, které chyby jádra jsou považovány za zranitelnosti, a popisuje, jak řešit chyby identifikované pomocí umělé inteligence. Dokument připravil Willy Tarreau, autor HAProxy a dlouholetý vývojář jádra. Linux, zodpovědný za udržování několika stabilních větví jádra. Rámec byl založen na dohodách dosažených během diskusí o nedávno identifikovaných kritických zranitelnostech jádra (1, 2, 3, 4), které byly odhaleny před vydáním záplat a pro které byly díky umělé inteligenci okamžitě vytvořeny funkční exploity.
Většina chyb souvisejících s bezpečností by měla být veřejně řešena, aby se dostala k co nejširšímu publiku a nalezlo se optimální řešení. Samostatný soukromý mailing list by měl být používán pouze pro zasílání naléhavých hlášení o zranitelnostech, které lze snadno zneužít, představují hrozbu pro mnoho uživatelů a umožňují získání rozšířených oprávnění nebo možností.
Zranitelnosti objevené pomocí asistentů umělé inteligence se vždy doporučují k veřejné diskusi, protože takové problémy často objevuje více výzkumníků současně. Samotný exploit by však neměl být ve zprávě zveřejněn; stačí pouze zmínit jeho dostupnost a sdílet ho soukromě v reakci na žádost správce.
Pravidla pro odesílání reportů generovaných asistenty umělé inteligence jsou popsána samostatně. Takové reporty se odesílají ve velkém množství a občas pomáhají identifikovat chyby ve špatně zkontrolovaných úsecích kódu, ale správci je často ignorují kvůli jejich nízké kvalitě a nepřesnostem. Hlavní požadavky na reporty generované umělou inteligencí jsou:
- Stručně, bez zbytečných detailů a s podstatou a důležitými detaily uvedenými hned na začátku.
- Pouze obyčejný text bez tagů Markdown nebo dekorací.
- Pochopení modelu hrozby a poskytnutí ověřitelných faktů (např. „chyba umožňuje kterémukoli uživateli získat CAP_NET_ADMIN“) spíše než teoretické spekulace a dohady o důsledcích zranitelnosti.
- Před odesláním hlášení nezapomeňte důkladně otestovat funkčnost zneužití generovaného umělou inteligencí a ujistit se, že lze problém reprodukovat.
- Zapojení umělé inteligence k vývoji a testování řešení identifikovaného problému.
Podle statistik správců většina hlášení o chybách odeslaných pod rouškou oprav zranitelností ve skutečnosti nejsou zranitelnostmi a měly by být považovány za běžné chyby. Pro rozlišení mezi zranitelnostmi a běžnými chybami byl vyvinut model hrozeb jádra. LinuxMezi funkcemi a zárukami, jejichž porušení lze považovat za zranitelnost:
- Izolace na úrovni uživatele: přístup k souborům omezený na vlastníka, paměť procesů není přístupná ostatním uživatelům, ptrace je pro ostatní procesy zakázáno, izolace IPC a síťové komunikace.
- Ochrana založená na schopnostech: bez CAP_SYS_ADMIN nemůžete změnit konfiguraci jádra, paměť ani stav systému; bez CAP_NET_ADMIN nemůžete změnit nastavení sítě ani zachycovat provoz; bez CAP_SYS_PTRACE nemůžete monitorovat procesy ostatních uživatelů.
- Jmenný prostor uživatelských ID (CONFIG_USER_NS) umožňuje neprivilegovaným uživatelům vytvářet si vlastní izolovaná prostředí, ze kterých nemohou ovlivňovat globální jmenný prostor, jako je změna času, načítání modulů nebo montáž blokových zařízení.
- Ladicí rozhraní (/proc/kmsg, perf, debugfs), jejichž prostřednictvím lze přistupovat k důvěrným informacím, jsou přístupná pouze po explicitním udělení přístupu administrátorem.
Funkce, které nejsou považovány za zranitelnosti:
- Používání zastaralých větví jádra.
- Sestavte s povolenými možnostmi pro vývojáře nebo možnostmi snižujícími zabezpečení (např. CONFIG_NOMMU).
- Nastavení nebezpečných nastavení sysctl, možností příkazového řádku, přístupových práv k souborovému systému, funkcí nebo povolení přístupu k privilegovaným rozhraním neoprávněným uživatelům (například přístup pro zápis do procfs a debugfs).
- Problémy s funkcemi určenými pouze pro vývoj a ladění jádra, jako jsou LOCKDEP, KASAN a FAULT_INJECTION, které nejsou určeny k povolení v produkčních konfiguracích.
- Problémy v ovladačích, modulech a subsystémech, které se nacházejí v sekci STAGING nebo jsou označeny jako experimentální, nebezpečné nebo poškozené.
- Používání modulů jádra třetích stran nebo neoficiálních forků jádra.
- Vyžadování nadměrných oprávnění, například požadavek na provádění akcí jako root nebo uživatelem s oprávněními CAP_SYS_ADMIN, CAP_NET_ADMIN, CAP_SYS_RAWIO a CAP_SYS_MODULE.
- Teoretické útoky, které vyžadují laboratorní podmínky, miliardy pokusů, emulaci nebo modifikaci hardwaru, nepřiměřené náklady a nerealistické konfigurace (např. systémy s desítkami tisíc jader CPU).
- Obcházení bezpečnostních mechanismů (například ASLR) bez demonstrace zneužití. Nedostatek validace argumentů a návratových kódů chyb, které nemají žádné zjevné důsledky.
- Náhodné úniky informací mimo kontrolu útočníka, jako jsou zbytková data v chybových zprávách a úniky adres/ukazatelů paměti jádra bez přímého zneužití.
- Chyby při připojování poškozených obrazů disků, pokud ovladač není deklarován jako vhodný pro použití s nedůvěryhodnými médii. Problémy s obrazy disků lze detekovat a opravit spuštěním utility fsck.
- Útoky, které vyžadují fyzický přístup k hardwaru, úpravu hardwaru nebo připojení hardwarových zařízení, jako jsou útočné desky DMA a logické analyzátory, pokud není systém speciálně nakonfigurován k ochraně před takovými útoky (IOMMU).
- Regrese funkčnosti a výkonu byly vyřešeny úpravou oprávnění a limitů.
Zdroj: opennet.ru
