Linus Torvalds zařadil do jádra dokument regulující proces zpracování chyb v oblasti bezpečnosti, definující model hrozeb, vysvětlující, jaké chyby v jádře jsou považovány za zranitelnosti, a pojednávající o akcích s chybami odhalenými pomocí AI. Dokument byl připraven Willem Tarreau, autorem HAProxy a dlouholetým vývojářem jádra Linux, který měl na starosti údržbu několika stabilních větví jádra. Jako základ byly použity dohody dosažené v průběhu diskuse o nedávno odhalených kritických zranitelnostech v jádře (1, 2, 3, 4), které byly zveřejněny před vydáním oprav a pro které se díky AI podařilo ihned vytvořit funkční exploit.
Hlavní množství chyb spojených s bezpečností by mělo být zpracováváno veřejně, aby byla přilákána maximálně široká veřejnost a nalezení optimálního řešení. Do samostatného soukromého seznamu rozesílky se navrhuje zasílat pouze urgentní zprávy o zranitelnostech, které jsou snadno zneužitelné, představují hrozbu pro mnoho uživatelů a umožňují získání rozšířených privilegií nebo schopností.
Zranitelnosti odhalené pomocí AI asistentů by měly být vždy diskutovány veřejně, protože podobné problémy jsou často odhalovány více výzkumníky současně. Přitom není třeba odhalovat v reportu exploit – stačí zmínit, že je k dispozici, a předat ho soukromě na základě žádosti správců.
Samostatně jsou popsána pravidla pro předávání reportů vytvořených pomocí AI asistentů. Takových reportů je posíláno velmi mnoho a díky nim se čas od času podaří odhalit chyby v špatně recenzovaných částech kódu, ale správci je často ignorují kvůli nízké kvalitě a nejasnostem. Hlavní požadavky na reporty, které byly vytvořeny s pomocí AI:
- Stručnost, bez zbytečných informací a s uvedením podstaty a důležitých detailů na začátku.
- Pouze holý text bez Markdown tagů a dekorací.
- Porozumění modelu hrozeb a uvedení ověřitelných faktů (například "chyba umožňuje jakémukoli uživateli získat CAP_NET_ADMIN"), a ne teoretických spekulací a domněnek o důsledcích zranitelnosti.
- Před odesláním zprávy je nutné důkladně otestovat funkčnost exploitů generovaných pomocí AI a zajistit možnost reprodukovat problém.
- Využití AI pro vývoj a testování opravy zjištěného problému.
Podle statistik správce většina zpráv o chybách zasílaných jako opravy zranitelností vlastně nebyla, a měly by být zpracovány běžným způsobem jako obvyklé chyby. Pro rozlišení mezi zranitelnostmi a běžnými chybami byla navržena model hrozeb jádra Linux. Mezi možnosti a záruky, jejichž porušení může být považováno za zranitelnost, patří:
- Izolace na úrovni uživatelů: přístup k souborům pouze pro vlastníka, paměť procesu není dostupná jiným uživatelům, ptrace je zakázán pro cizí procesy, izolace IPC a síťové komunikace.
- Ochrana založená na capabilities: bez CAP_SYS_ADMIN není možné měnit konfiguraci jádra, paměť nebo stav systému, bez CAP_NET_ADMIN není možné měnit síťová nastavení nebo zachytávat provoz, bez CAP_SYS_PTRACE není možné sledovat procesy jiných uživatelů.
- Prostor jmen uživatelských identifikátorů (CONFIG_USER_NS) umožňuje nepřihlašovaným uživatelům vytvářet své izolované prostředí, z nichž nelze ovlivnit globální prostor jmen, například měnit čas, načítat moduly a montovat bloková zařízení.
- Ladicí rozhraní (/proc/kmsg, perf, debugfs), skrze která lze získat citlivé informace, jsou dostupná pouze po výslovném udělení přístupu administrátorem.
Schopnosti, které nejsou považovány za zranitelnosti:
- Použití zastaralých větví jádra.
- Sestavení se zapnutím voleb pro vývojáře nebo snižujících bezpečnost (např. CONFIG_NOMMU).
- Nastavení nebezpečných nastavení sysctl, voleb příkazového řádku, přístupových práv v FS, capabilities nebo otevření přístupu k privilegovaným rozhraním nepřihlašovaným uživatelům (např. zápis do procfs a debugfs).
- Problémy ve funkcích určených pouze pro vývoj a ladění jádra, jako jsou LOCKDEP, KASAN a FAULT_INJECTION, které nejsou určeny k zařazení do pracovních konfigurací.
- Problémy v ovladačích, modulech a podsystémech nacházejících se v sekci STAGING nebo označených jako experimentální, nebezpečné nebo nefunkční.
- Používání třetích stran modulů jádra nebo neoficiálních forků jádra.
- Požadavek na nadbytečná oprávnění, jako je nutnost vykonávat akce s právy root nebo od uživatele disponujícího právy CAP_SYS_ADMIN, CAP_NET_ADMIN, CAP_SYS_RAWIO a CAP_SYS_MODULE.
- Teoretické útoky vyžadující laboratorní podmínky, miliardy pokusů, emulaci nebo modifikaci hardwaru, nesouměrné náklady a nerealistické konfigurace (např. systémy se stovkami tisíc jádrových CPU).
- Obcházení mechanismů ochrany (např. ASLR) bez demonstrace exploit. Absence kontrol argumentů a návratových chybových kódů, které nemají jasné důsledky.
- Náhodné úniky informací, které nejsou pod kontrolou útočníků, jako zbytková data v chybových zprávách a úniky adres/pointers na paměť jádra bez přímé možnosti zneužití.
- Chyby při montování poškozených obrazů disků, pokud není ovladač deklarován jako vhodný pro použití s nedůvěryhodnými médií. Problémy s obrazy disků, které lze identifikovat a vyřešit pomocí spuštění utility fsck.
- Útoky vyžadující fyzický přístup k zařízení, modifikaci hardwaru nebo připojení hardwarových zařízení, jako jsou desky pro útok na DMA a logické analyzátory, pokud není systém speciálně nakonfigurován k ochraně před takovými útoky (IOMMU).
- Regrese s funkčností a výkonem, které se dají odstranit úpravou oprávnění a limitů.
Zdroj: opennet.ru
