Cyflwr hil yn y casglwr sbwriel cnewyllyn Linux a all arwain at ddwysáu braint

Cyhoeddodd Jann Horn o dîm Google Project Zero, a nododd wendidau Specter a Meltdown ar un adeg, dechneg ar gyfer manteisio ar fregusrwydd (CVE-2021-4083) yn y casglwr sbwriel cnewyllyn Linux. Mae'r bregusrwydd oherwydd cyflwr hil wrth lanhau disgrifyddion ffeil ar socedi unix ac o bosibl yn caniatáu i ddefnyddiwr difreintiedig lleol weithredu eu cod ar lefel y cnewyllyn.

Mae'r broblem yn ddiddorol oherwydd amcangyfrifwyd bod y ffenestr amser y mae'r cyflwr hil yn digwydd ynddi yn rhy fach i greu campau go iawn, ond dangosodd awdur yr astudiaeth y gall hyd yn oed gwendidau amheus i ddechrau ddod yn ffynhonnell ymosodiadau go iawn os yw'r crëwr camfanteisio wedi sgiliau ac amser angenrheidiol. Dangosodd Yann Horn sut, gyda chymorth triniaeth filigree, y gallwch leihau'r cyflwr hil sy'n digwydd wrth alw'r swyddogaethau agos () a fget () ar yr un pryd yn fregusrwydd di-ddefnydd llawn y gellir ei ecsbloetio a chael mynediad at ddata sydd eisoes wedi'i ryddhau. strwythur y tu mewn i'r cnewyllyn.

Mae cyflwr hil yn digwydd yn ystod y broses o gau disgrifydd ffeil wrth ffonio close() a fget() ar yr un pryd. Gall yr alwad i gau () ddigwydd cyn i fget() gael ei weithredu, a fydd yn drysu'r casglwr sbwriel oherwydd, yn ôl yr ailgyfrif, ni fydd gan strwythur y ffeil gyfeiriadau allanol, ond bydd yn parhau i fod ynghlwm wrth y disgrifydd ffeil, h.y. Bydd y casglwr sbwriel yn meddwl bod ganddo fynediad unigryw i'r strwythur, ond mewn gwirionedd, am gyfnod byr, bydd y cofnod sy'n weddill yn y tabl disgrifydd ffeil yn dal i dynnu sylw at ryddhau'r strwythur.

Er mwyn cynyddu'r tebygolrwydd o fynd i gyflwr hil, defnyddiwyd sawl tric, a oedd yn ei gwneud hi'n bosibl cynyddu'r tebygolrwydd o lwyddiant ecsbloetio i 30% wrth gyflwyno optimeiddiadau system-benodol. Er enghraifft, er mwyn cynyddu'r amser o gael mynediad i strwythur gyda disgrifyddion ffeil o gannoedd o nanoeiliadau, cafodd data ei ddileu o storfa'r prosesydd trwy ollwng y storfa gyda gweithgaredd ar graidd CPU arall, a oedd yn ei gwneud hi'n bosibl adfer y strwythur o'r cof yn hytrach nag o y storfa CPU cyflym.

Yr ail nodwedd bwysig oedd y defnydd o ymyriadau a gynhyrchir gan amserydd caledwedd i gynyddu'r amser cyflwr rasio. Dewiswyd y foment fel y byddai'r triniwr ymyriad yn tanio pan fyddai cyflwr hil yn digwydd ac yn torri ar draws gweithrediad y cod am beth amser. Er mwyn gohirio’r broses o ddychwelyd y rheolaeth ymhellach, cynhyrchwyd tua 50 mil o gofnodion yn y ciw aros gan ddefnyddio epoll, a oedd angen chwilio drwy’r teclyn trin ymyriadau.

Datgelwyd y dechneg ar gyfer manteisio ar y bregusrwydd ar ôl cyfnod o 90 diwrnod heb ddatgelu. Mae'r broblem yn ymddangos ers cnewyllyn 2.6.32 ac fe'i gosodwyd yn gynnar ym mis Rhagfyr. Cynhwyswyd yr atgyweiriad yng nghnewyllyn 5.16 a chafodd ei drosglwyddo hefyd i ganghennau LTS o'r pecynnau cnewyllyn a chnewyllyn a gyflenwir mewn dosbarthiadau. Mae'n werth nodi bod y bregusrwydd wedi'i nodi yn ystod y dadansoddiad o broblem debyg CVE-2021-0920, sy'n amlygu ei hun yn y casglwr sbwriel wrth brosesu'r faner MSG_PEEK.

Ffynhonnell: opennet.ru

Ychwanegu sylw