Grsecurity-projektin kehittäjät
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ä
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
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