Mikasa ny hanamafisana ny Mekanisma fiarovana W^X an'ny OpenBSD

Theo De Raadt nizara mikasa ny hanamafy ny rafitra fiarovana ny fahatsiarovana W^X (Soraty XOR Execute). Ny fototry ny mekanika dia ny hoe tsy azo idirana miaraka amin'ny fanoratana sy famonoana ny pejy fitadidiana. Noho izany, ny kaody dia tsy azo tanterahana raha tsy aorian'ny tsy fisian'ny fanoratana, ary ny fanoratana amin'ny pejy fitadidiana dia tsy azo atao raha tsy aorian'ny famonoana ny famonoana. Ny mekanika W^X dia manampy amin'ny fiarovana ny rindranasan'ny habaka mpampiasa amin'ny fanafihan'ny buffer overflow mahazatra, ao anatin'izany ny fihoaran'ny stack, ary mavitrika ao amin'ny OpenBSD amin'ny default.

Hatramin'ny nanombohan'ny asa tao amin'ny W^X, dia nazava fa lalana lavitra io, satria be dia be ny fampiharana mampiasa JIT. Ny fampiharana JIT dia azo zaraina ho sokajy telo:

  • Manova fahatsiarovana eo amin'ny fanjakana W sy X, manaiky ny "vidin'ny" antso an-tariby mprotect.
  • Mamorona anarana eo anelanelan'ny sarintany W sy X miaraka amin'ny fitadidiana mitovy.
  • Ny safidy "maloto" indrindra dia ireo mitaky modely fitadidiana W|X izay mamela ny firaketana sy ny famonoana miaraka.

Amin'izao fotoana izao dia vitsy kokoa ny programa mampiasa ny safidy fahatelo ary betsaka kokoa ny mampiasa ny voalohany sy faharoa. Na izany aza, satria nilaina ny fampandehanana programa miaraka amin'ny W|X JIT (indrindra fa Chromium sy Iridum), dia nampiana "wxallowed" filesystem mount safidy, izay mamela ny fahatsiarovana ho ampiasaina miaraka amin'ny fanoratana sy ny famonoana, raha toa ny executable ELF. Ny rakitra dia voamarika amin'ny marika "wxneeded", ary ireo rindranasa ihany koa dia voaaro amin'ny alΓ lan'ny mekanika. antoka ΠΈ hanazava mba hamerana ny lisitry ny antson'ny rafitra ampiasaina sy ny ampahany amin'ny rafi-drakitra azo ampiasaina amin'ny fampiharana.

Mba hanasarotra kokoa ny fitrandrahana ny vulnerability amin'ny fampiharana toy izany, dia aroso ny fanampim-panazavana amin'ny mekanika. MAP_STACK, izay manamarina raha tanterahana amin'ny pejy fahatsiarovana azo soratana ny antson'ny rafitra. Raha azo soratana ny pejy dia voatery mijanona ny dingana. Amin'izany fomba izany, ny mpanafika dia tsy ho afaka hanararaotra ny antson'ny rafitra ary ho voatery hitady ireo fitaovana ilaina amin'ny fampiharana JIT, na hanao ny asa sarotra kokoa amin'ny fitadiavana ny tsipika antso an-tariby mivantana ao anatiny. libc mifandray tsy nahy.

Ny fizotry ny Chrome/Iridium dia efa voaaro tsara amin'ny alΓ lan'ny fanomezan-toky sy famoahana, fa ny fanesorana ny fahafahana mampiasa, ohatra, ny antso (2) rafitra dia mazava ho azy fa manana tombony, satria miteraka fahasahiranana fanampiny ho an'ny mpanafika. Na izany aza, mety hitranga ihany koa ny fahasarotana raha mampiasa antso an-tariby avy amin'ny fahatsiarovana W|X ny fampiharana JIT. Na izany aza, misy antony tokony hanantena fa tsy hisy izany, satria efa niova imbetsaka ny ABI, saingy tsy nisy nitatitra olana.

Ny fanovana dia efa misy amin'ny sary mahazatra amin'ny sampana OpenBSD-Current, asaina hanandrana ny rehetra liana.

Ny vaovao mifandraika amin'ny fisehoan'ny maody ao amin'ny Chrome/Iridium dia mendrika ny fanehoan-kevitra misaraka avy amin'i Theo JITless. Raha ny fomba fijeriny dia azo ekena ho an'ny modely fampiasana sasany, fa angamba tsy ho an'ny rehetra, satria io fomba io dia mazava ho azy fa hampitombo ny enta-mavesatra amin'ny processeur. Amin'izao fotoana izao, ny Chrome dia hiasa amin'ny ankapobeny raha toa ka esorinao ny "wxallowed" ho an'ny / usr / local, na dia mety hisy olana amin'ny fanitarana sasany aza (ohatra ny ghostery). Amin'ny fomba iray na amin'ny fomba hafa, manantena i Theo fa ny asa feno amin'ny fomba JITless dia ho entina amin'ny fanjakana miasa tanteraka ato ho ato.

Source: opennet.ru

Add a comment