Drošības problēmas ielāpus, ko Huawei darbinieks ierosināja Linux kodola aizsardzībai

Grsecurity projekta izstrādātāji pagriezās pievērsiet uzmanību triviāli izmantojamas ievainojamības klātbūtnei ielāpu komplektā HKSP (Huawei kodola pašaizsardzība), pirms dažām dienām ierosināts lai uzlabotu Linux kodola drošību. Situācija atgādina korpuss ar Samsung, kurā mēģinājums uzlabot sistēmas drošību izraisīja jaunas ievainojamības rašanos un atviegloja ierīču uzlaušanu.

HKSP ielāpus publicēja Huawei darbinieks, GitHub profilā iekļauj Huawei pieminējumu un projekta nosaukumā lieto vārdu Huawei (HKSP — Huawei Kernel Self Protection). Vienlaikus Huawei pārstāvji noliedza HKSP projekta saistību ar uzņēmumu un norādīja, ka kods izstrādāts pēc darbinieka personīgās iniciatīvas, nav oficiāls Huawei projekts un netiek izmantots uzņēmuma produktos. Ieslēgts GitHub lapa HKSP ar atpakaļejošu spēku pēc atklāšanas arī ievainojamības tika pievienots ņemiet vērā, ka projekts tiek izstrādāts manā brīvajā laikā pētniecības nolūkos.

HKSP ietver tādas izmaiņas kā nobīdes nejaušināšana cred struktūrā, aizsardzība pret uzbrukumiem lietotāja identifikatora nosaukumvietai (pid nosaukumvietai), procesa steka atdalīšana no mmap apgabala, dubultu izsaukumu noteikšana kfree funkcijai, noplūžu bloķēšana caur pseido. -FS /proc (/proc/ {modules, keys, key-users}, /proc/sys/kernel/* un /proc/sys/vm/mmap_min_addr, /proc/kallsyms), uzlabota lietotāja vietas adrešu nejaušināšana, papildu Ptrace aizsardzība, uzlabota smap un smep aizsardzība, iespēja aizliegt datu sūtīšanu, izmantojot neapstrādātas ligzdas, bloķēt nepareizas adreses UDP ligzdās un pārbaudīt darbojošos procesu integritāti. Tajā ir iekļauts arī Ksguard kodola modulis, kura mērķis ir noteikt mēģinājumus ieviest tipiskus sakņu komplektus.

Plāksteri sauca Ieinteresēja Gregs Kroahs-Hartmans, kurš ir atbildīgs par Linux kodola stabilā atzara uzturēšanu, un lūdza autoru sadalīt monolītu ielāpu daļās, lai vienkāršotu pārskatīšanu un virzīšanu uz galveno kodolu. Kees Cook, galva projekts par veicināšanu aktīvās aizsardzības tehnoloģija arī Linux kodolā pozitīvi reaģēja uz ielāpiem un, starp problēmām, vērsa uzmanību uz saistību ar x86 arhitektūru un daudzu režīmu paziņojumu raksturu, kas tikai reģistrē informāciju par problēmu, bet nemēģina to bloķēt.

Grsecurity izstrādātāju veiktais ielāpa pētījums atklāja daudzas kļūdas un nepilnības kodā, kā arī parādīja, ka nav draudu modeļa, kas ļautu viņiem adekvāti spriest par projekta iespējām. Lai skaidri parādītu, ka kods tika uzrakstīts, neizmantojot drošas programmēšanas metodes, ir sniegts apdarinātāja triviālas ievainojamības piemērs.
fails /proc/ksguard/state, kas izveidots ar tiesībām 0777, kas nozīmē, ka ikvienam ir rakstīšanas piekļuve. Funkcija ksg_state_write, ko izmanto, lai parsētu komandas, kas rakstītas mapē /proc/ksguard/state, izveido tmp[32] buferi, kurā tiek ierakstīti dati, pamatojoties uz nodotā ​​operanda lielumu, neņemot vērā mērķa bufera lielumu un bez parametra pārbaude ar virknes izmēru. Tie. Lai pārrakstītu daļu no kodola steka, uzbrucējam vienkārši ir jāieraksta īpaši formatēta rindiņa /proc/ksguard/state.

static ssize_t ksg_state_write(struct fails *fails, const char __user *buf,
izmērs_t len, loff_t *nobīde)
{
u64 vērtība;
char tmp[32];
izmērs_t n = 0;

if (copy_from_user(tmp, buf, len))
atgriešanās -1;

vērtība = simple_strtoul(tmp, '\0', 10);
...

Ekspluatācijas prototips:

char buf[4096] = { };
int fd = atvērts (“/proc/ksguard/state”, O_WRONLY);
if (fd >= 0) {
write(fd, buf, sizeof(buf));
aizvērt(fd);
}

Avots: opennet.ru

Pievieno komentāru