Vundebleco en la Rust-norma biblioteko

Vulnerabileco (CVE-2022-21658) estis identigita en la Rust-norma biblioteko pro raskondiĉo en la funkcio std::fs::remove_dir_all(). Se ĉi tiu funkcio estas uzata por forigi provizorajn dosierojn en privilegiita aplikaĵo, atakanto povas atingi la forigon de arbitraj sistemdosieroj kaj dosierujoj, kiujn la atakanto kutime ne havus aliron forigi.

La vundebleco estas kaŭzita de malĝusta efektivigo de kontrolado de simbolaj ligiloj antaŭ rekursie forigi dosierujojn. Anstataŭ malhelpi simligojn esti sekvataj, remove_dir_all() unue kontrolas por vidi ĉu la dosiero estas simbolligo. Se ligilo estas difinita, tiam ĝi estas forigita kiel dosiero, kaj se ĝi estas dosierujo, tiam rekursiva enhavforiga operacio estas vokita. La problemo estas, ke estas eta prokrasto inter la kontrolo kaj la komenco de la foriga operacio.

En la momento, kiam la kontrolo jam estis farita, sed la operacio de listigo de dosierujoj por forigo ankoraŭ ne komenciĝis, la atakanto povas anstataŭigi la dosierujon per provizoraj dosieroj kun simbola ligilo. Se ĝi trafas en la ĝusta tempo, la funkcio remove_dir_all() traktos la simbolan ligilon kiel dosierujon kaj komencos forigi la enhavon al kiu la ligilo montras. Malgraŭ la fakto, ke la sukceso de la atako dependas de la precizeco de la elektita tempo anstataŭi la dosierujon kaj trafi la ĝustan momenton la unuan fojon estas neprobabla, dum la eksperimentoj la esploristoj povis atingi ripeteblan sukcesan atakon post plenumi la ekspluatadon ene. kelkajn sekundojn.

Ĉiuj versioj de Rust de 1.0.0 ĝis 1.58.0 inkluzive estas tuŝitaj. La problemo estis solvita en flikformo nuntempe (la riparo estos inkluzivita en la 1.58.1-eldono, kiu estas atendita ene de kelkaj horoj). Vi povas kontroli la forigon de la vundebleco en distribuoj sur ĉi tiuj paĝoj: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Ĉiuj uzantoj de Rust-programoj kurantaj kun altigitaj privilegioj kaj uzantaj la funkcion remove_dir_all estas konsilitaj urĝe ĝisdatigi Rust al versio 1.58.1. Estas interese, ke la liberigita diakilo ne solvas la problemon en ĉiuj sistemoj; ekzemple, en REDOX OS kaj versioj de macOS antaŭ 10.10 (Yosemite), la vundebleco ne estas blokita pro la foresto de la flago O_NOFOLLOW, kiu malŝaltas sekvadon de simbola. ligiloj.

fonto: opennet.ru

Aldoni komenton