Tietoturvaongelmat korjauspäivityksissä, joita Huawein työntekijä ehdotti Linux-ytimen suojaamiseksi

Grsecurity-projektin kehittäjät piirsi kiinnitä huomiota triviaalisti hyödynnettävän haavoittuvuuden esiintymiseen korjaustiedostosarjassa HKSP (Huawei Kernel Self Protection), muutama päivä sitten ehdotettu parantaakseen Linux-ytimen turvallisuutta. Tilanne muistuttaa kotelo Samsungin kanssa, jossa yritys parantaa järjestelmän turvallisuutta johti uuden haavoittuvuuden syntymiseen ja helpotti laitteiden vaarantumista.

HKSP-korjaukset julkaisi Huawein työntekijä, ne sisältävät maininnan Huaweista GitHub-profiilissa ja käyttävät sanaa Huawei projektin nimessä (HKSP - Huawei Kernel Self Protection). Samaan aikaan Huawein edustajat kielsivät HKSP-projektin yhteyden yritykseen ja totesivat, että koodi on kehitetty työntekijän henkilökohtaisesta aloitteesta, se ei ole virallinen Huawei-projekti eikä sitä käytetä yrityksen tuotteissa. Päällä GitHub-sivu HKSP takautuvasti löydön jälkeen myös haavoittuvuuksia lisättiin Huomaa, että projektia kehitetään vapaa-ajallani tutkimustarkoituksiin.

HKSP sisältää muutoksia, kuten cred-rakenteen offsettien satunnaistamisen, suojauksen hyökkäyksiltä käyttäjätunnisteen nimiavaruuteen (pid-nimiavaruuteen), prosessipinon erottamisen mmap-alueesta, kfree-funktion kaksoiskutsujen havaitsemisen, pseudon kautta tapahtuvien vuotojen estämisen. -FS /proc (/proc/ {moduulit, avaimet, avainkäyttäjät}, /proc/sys/kernel/* ja /proc/sys/vm/mmap_min_addr, /proc/kallsyms), parannettu käyttäjätilan osoitteiden satunnaistaminen, lisä Ptrace suojaus, tehostettu smp- ja smep-suojaus , mahdollisuus estää tietojen lähettäminen raaka-vastakkeiden kautta, virheellisten osoitteiden estäminen UDP-vastakkeissa ja käynnissä olevien prosessien eheyden tarkistaminen. Se sisältää myös Ksguard-ytimen moduulin, jonka tarkoituksena on havaita yritykset ottaa käyttöön tyypillisiä rootkittejä.

Laastarit nimeltään Greg Kroah-Hartman, joka vastaa Linux-ytimen vakaan haaran ylläpidosta, oli kiinnostunut ja pyysi kirjoittajaa hajottamaan monoliittisen korjaustiedoston osiin yksinkertaistaakseen tarkistusta ja pääytimen edistämistä. Kees Cook, pää hanke päälle edistäminen aktiivista suojaustekniikkaa myös Linux-ytimessä positiivisesti vastasi korjauksiin ja kiinnitti ongelmien joukossa huomiota x86-arkkitehtuuriin sitoutumiseen ja useiden tilojen ilmoitusluonteeseen, jotka vain kirjaavat tietoa ongelmasta, mutta eivät yritä estää sitä.

Grsecurity-kehittäjien tekemä tutkimus korjaustiedostosta paljasti monia virheitä ja heikkouksia koodissa ja osoitti myös uhkamallin puuttumisen, jonka avulla he voisivat arvioida asianmukaisesti projektin ominaisuudet. Osoittaaksemme selvästi, että koodi on kirjoitettu käyttämättä turvallisia ohjelmointimenetelmiä, annetaan esimerkki käsittelijän triviaalista haavoittuvuudesta.
tiedosto /proc/ksguard/state, joka on luotu oikeuksilla 0777, mikä tarkoittaa, että kaikilla on kirjoitusoikeudet. Funktio ksg_state_write, jota käytetään tiedostoon /proc/ksguard/state kirjoitettujen komentojen jäsentämiseen, luo tmp[32]-puskurin, johon tiedot kirjoitetaan välitetyn operandin koon perusteella ottamatta huomioon kohdepuskurin kokoa ja ilman tarkistamalla parametrin merkkijonon koolla. Nuo. Korvaakseen osan ytimen pinosta hyökkääjän tarvitsee vain kirjoittaa erityisesti muotoiltu rivi kansioon /proc/ksguard/state.

static ssize_t ksg_state_write(rakennetiedosto *tiedosto, const char __user *buf,
koko_t len, loff_t *offset)
{
u64-arvo;
char tmp [32];
koko_t n = 0;

if (copy_from_user(tmp, buf, len))
paluu -1;

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

Hyödynnä prototyyppiä:

char buf[4096] = { };
int fd = avoin("/proc/ksguard/state", O_WRONLY);
if (fd >= 0) {
write(fd, buf, sizeof(buf));
sulje(fd);
}

Lähde: opennet.ru

Lisää kommentti