Bezpečnostní problémy v opravách jádra navržených zaměstnancem Huawei Linux

Vývojáři projektu Grsecurity kreslil pozornost na přítomnost triviálně zneužitelné zranitelnosti v sadě patchů HKSP (Huawei Kernel Self Protection), před několika dny navržený pro zlepšení ochrany jádra LinuxSituace připomíná pouzdro se Samsungem, ve kterém pokus o zlepšení zabezpečení systému vedl ke vzniku nové zranitelnosti a usnadnil kompromitaci zařízení.

Záplaty HKSP byly zveřejněny zaměstnancem Huawei, obsahují zmínku o Huawei v profilu GitHub a v názvu projektu používají slovo Huawei (HKSP - Huawei Kernel Self Protection). Zástupci Huawei zároveň popřeli spojení projektu HKSP se společností a uvedli, že kód byl vyvinut z osobní iniciativy zaměstnance, není oficiálním projektem Huawei a není používán v produktech společnosti. Na stránka GitHub HKSP zpětně po objevení také zranitelnosti byl přidán poznamenat, že projekt je vyvíjen ve svém volném čase pro výzkumné účely.

HKSP zahrnuje změny jako randomizace offsetů ve struktuře cred, ochrana proti útokům na jmenný prostor identifikátoru uživatele (jmenný prostor pid), oddělení zásobníku procesů od oblasti mmap, detekce dvojitých volání funkce kfree, blokování úniků přes pseudo -FS /proc (/proc/ {moduly, klíče, uživatelé klíčů}, /proc/sys/kernel/* a /proc/sys/vm/mmap_min_addr, /proc/kallsyms), vylepšená randomizace adres v uživatelském prostoru, další Ptrace ochrana, vylepšená ochrana proti smapování a smepu, možnost zakázat odesílání dat přes raw sockety, blokování nesprávných adres v UDP socketech a kontrola integrity běžících procesů. Obsahuje také modul jádra Ksguard, který je zaměřen na odhalování pokusů o zavedení typických rootkitů.

Záplaty způsobil zájem Grega Kroah-Hartmana, který je zodpovědný za údržbu stabilní větve jádra Linux, který požádal autora, aby rozdělil monolitický patch na části, aby se zjednodušila kontrola a přechod na hlavní jádro. Kees Cook, který vede projekt na povýšení do jádra Linux technologie aktivní ochrany, a také pozitivně reagoval na záplaty a mezi problémy upozornil na vazbu na architekturu x86 a notifikační charakter mnoha režimů, které informace o problému pouze logují, ale nesnaží se je blokovat.

Studie patche od vývojářů Grsecurity odhalila mnoho chyb a slabin v kódu a také ukázala absenci modelu hrozeb, který by jim umožnil adekvátně posoudit schopnosti projektu. Aby bylo jasné, že kód byl napsán bez použití bezpečných metod programování, je uveden příklad triviální zranitelnosti v handleru.
soubor /proc/ksguard/state, který je vytvořen s právy 0777, což znamená, že každý má přístup pro zápis. Funkce ksg_state_write, která se používá k analýze příkazů zapsaných do /proc/ksguard/state, vytváří vyrovnávací paměť tmp[32], do které se zapisují data na základě velikosti předávaného operandu, bez zohlednění velikosti cílové vyrovnávací paměti a bez kontrola parametru s velikostí řetězce. Tito. K přepsání části zásobníku jádra útočníkovi stačí napsat speciálně formátovaný řádek do /proc/ksguard/state.

static ssize_t ksg_state_write(soubor struktur *soubor, const char __user *buf,
size_t len, loff_t *offset)
{
hodnota u64;
char tmp[32];
velikost_t n = 0;

if (copy_from_user(tmp, buf, len))
návrat -1;

hodnota = simple_strtoul(tmp, '\0', 10);
...

Využití prototypu:

char buf[4096] = { };
int fd = open(“/proc/ksguard/state”, O_WRONLY);
if (fd >= 0) {
write(fd, buf, sizeof(buf));
close(fd);
}

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster