Gwendidau yn yr is-system eBPF sy'n caniatáu osgoi amddiffyniad rhag ymosodiadau Specter

Mae bregusrwydd wedi'i nodi yn y cnewyllyn Linux (CVE-2021-33624) sy'n caniatáu i'r is-system eBPF gael ei ddefnyddio i osgoi amddiffyniad rhag gwendidau dosbarth Specter, sy'n ei gwneud hi'n bosibl pennu cynnwys y cof o ganlyniad i greu amodau ar gyfer y cyflawni gweithrediadau penodol ar hap. Mae ymosodiad Specter yn gofyn am bresenoldeb dilyniant penodol o orchmynion mewn cod breintiedig sy'n arwain at weithredu cyfarwyddiadau ar hap. Trwy drin rhaglenni BPF a drosglwyddir i'w gweithredu, mae'n bosibl cynhyrchu cyfarwyddiadau tebyg yn eBPF a gollwng cynnwys cof cnewyllyn a meysydd mympwyol o gof corfforol trwy sianeli ochr.

Mae'r bregusrwydd yn cael ei achosi gan ddiffygion yn y dilysydd, a ddefnyddir i ganfod gwallau a gweithgaredd annerbyniol mewn rhaglenni BPF. Mae'r dilysydd yn rhifo llwybrau gweithredu cod posibl, ond yn hepgor opsiynau canghennog sy'n annerbyniol o safbwynt semanteg pensaernïaeth y set gyfarwyddiadau. Wrth weithredu rhaglen BPF, gall y prosesydd ragfynegi opsiynau canghennog o'r fath nad ydynt yn cael eu hystyried gan y dilysydd yn anghywir a'u gweithredu yn y modd hapfasnachol. Er enghraifft, wrth ddadansoddi'r gweithrediad "llwyth", mae'r dilysydd yn disgwyl bod y cyfarwyddyd yn defnyddio cofrestr gyda chyfeiriad y mae ei werth bob amser o fewn y ffiniau penodedig, ond gall ymosodwr greu amodau lle bydd y prosesydd yn ceisio cyflawni gweithrediad hapfasnachol gyda cyfeiriad nad yw'n bodloni'r amodau dilysu.

Mae'r broblem wedi bod yn ymddangos ers rhyddhau cnewyllyn 4.15 ac mae wedi'i gosod ar ffurf clytiau (1, 2, 3, 4). Mae'r bregusrwydd yn parhau i fod yn ansefydlog mewn dosbarthiadau (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

Yn ogystal, gallwch nodi'r nodyn am effaith perfformiad offer i amddiffyn rhag gwendidau Specter. Mae'r nodyn yn crynhoi canlyniadau optimeiddio'r dadfygiwr rr (Record and Replay), a grëwyd unwaith yn Mozilla i ddadfygio gwallau anodd eu hailadrodd yn Firefox. Roedd cadw'r galwadau system a ddefnyddiwyd i wirio bodolaeth cyfeiriaduron yn lleihau gweithrediad "ffynonellau rr" ar gyfer y prosiect prawf o 3 munud 19 eiliad i 36 eiliad.

Penderfynodd yr awdur optimeiddio wirio sut y byddai perfformiad yn newid ar ôl analluogi amddiffyniad Specter. Ar ôl cychwyn y system gyda'r paramedr “lliniariadau = i ffwrdd”, amser gweithredu “ffynonellau rr” heb optimeiddio oedd 2 funud 5 eiliad (1.6 gwaith yn gyflymach), a chydag optimeiddio roedd yn 33 eiliad (9% yn gyflymach). Yn ddiddorol, roedd analluogi amddiffyniad Specter nid yn unig yn lleihau amser gweithredu cod ar lefel y cnewyllyn 1.4 gwaith (o 2m9s i 1m32s), ond hefyd wedi haneru amser gweithredu yn y gofod defnyddiwr (o 1m9s i 0m33s), yn ôl pob tebyg oherwydd llai o effeithlonrwydd gweithrediad cache CPU a TLB yn ailosod pan fydd amddiffyniad Specter wedi'i alluogi.

Ffynhonnell: opennet.ru

Ychwanegu sylw