Vundeblecoj en la eBPF-subsistemo kiuj permesas kodekzekuton ĉe la Linukso-kernnivelo

Du novaj vundeblecoj estis identigitaj en la subsistemo eBPF, kiu ebligas al vi ruli traktilojn ene de la Linukso-kerno en speciala virtuala maŝino kun JIT. Ambaŭ vundeblecoj ebligas ekzekuti vian kodon kun kernaj rajtoj, ekster izolita eBPF virtuala maŝino. Informoj pri la problemoj estis publikigitaj de la teamo Zero Day Initiative, kiu kuras la konkurson Pwn2Own, dum kiu ĉi-jare estis pruvitaj tri atakoj sur Ubuntu Linukso, kiuj uzis antaŭe nekonatajn vundeblecojn (ĉu la vundeblecoj en eBPF rilatas al ĉi tiuj atakoj ne estas raportita) .

  • CVE-2021-3490 - La vundebleco estas kaŭzita de manko de 32-bita eksterlima kontrolado dum farado de bitbitaj AND, AŬ kaj XOR-operacioj en eBPF ALU32. Atakanto povas utiligi ĉi tiun eraron por legi kaj skribi datumojn ekster la limoj de la asignita bufro. La problemo kun XOR-operacioj aperas ekde la kerna versio 5.7-rc1, kaj KAJ kaj AŬ - ekde 5.10-rc1.
  • CVE-2021-3489 - La vundebleco estas kaŭzita de eraro en la efektivigo de la ringa bufro kaj estas pro la fakto, ke la funkcio bpf_ringbuf_reserve ne kontrolis la eblecon, ke la grandeco de la asignita memorregiono povus esti malpli ol la reala grandeco. de la ringbufo. La problemo aperas ekde eldono 5.8-rc1.

La stato de flikado de vundeblecoj en distribuoj povas esti spurita sur ĉi tiuj paĝoj: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Korektaĵoj ankaŭ haveblas kiel flikoj (CVE-2021-3489, CVE-2021-3490). Ĉu la afero povas esti ekspluatata, dependas de ĉu la sistemvoko eBPF estas alirebla por la uzanto. Ekzemple, en la defaŭlta agordo en RHEL, ekspluato de la vundebleco postulas, ke la uzanto havu rajtojn CAP_SYS_ADMIN.

Aparte, ni povas noti alian vundeblecon en la Linukso-kerno - CVE-2021-32606, kiu permesas al loka uzanto levi siajn privilegiojn al la radika nivelo. La problemo estas evidenta ekde Linukso-kerno 5.11 kaj estas kaŭzita de raskondiĉo en la efektivigo de la CAN ISOTP-protokolo, kiu ebligas ŝanĝi la socket-ligajn parametrojn pro la manko de agordo de la taŭgaj seruroj en la funkcio isotp_setsockopt() kiam oni prilaboras la flagon CAN_ISOTP_SF_BROADCAST.

Post kiam la ISOTP-ingo estas fermita, la ligado al la ricevanto-ingo restas en efiko, kiu povas daŭre uzi la strukturojn asociitajn kun la ingo post kiam la memoro asociita kun ili estas liberigita (uzo-post-libera pro la voko al isotp_sock-strukturo. tio jam estis liberigita kiam isotp_rcv() estas vokita). Per manipulado de datumoj, vi povas superregi la montrilon al la funkcio sk_error_report() kaj ekzekuti vian kodon ĉe la kerna nivelo.

fonto: opennet.ru

Aldoni komenton