Mayhem — en attack som förvrĂ€nger bitar i minnet för att kringgĂ„ autentisering i sudo och OpenSSH

Forskare frÄn Worcester Polytechnic Institute (USA) har presenterat en ny typ av attack kallad Mayhem, som anvÀnder en metod för att förvrida bitar i dynamiskt RAM, Rowhammer, för att Àndra variabelvÀrden i stacken som anvÀnds i programmet som flaggor för att avgöra om autentisering har lyckats och om sÀkerhetskontroller har passerats. Praktiska exempel pÄ attackens tillÀmpning har demonstrerats för att kringgÄ autentisering i SUDO, OpenSSH och MySQL, samt för att Àndra resultaten av sÀkerhetsrelaterade kontroller i OpenSSL-biblioteket.

Attacken kan tillĂ€mpas pĂ„ applikationer dĂ€r kontroller anvĂ€nder en jĂ€mförelse av skillnader i vĂ€rden frĂ„n noll. Exempel pĂ„ sĂ„rbar kod: int auth = 0; 
 // kontrollkod som Ă€ndrar vĂ€rdet pĂ„ auth vid lyckad autentisering if(auth != 0) return AUTH_SUCCESS; else return AUTH_FAILURE;

I sammanhanget av detta exempel Àr det tillrÀckligt för en lyckad attack att uppnÄ förvrÀngning av vilken bit som helst i minnet kopplad till den 32-bitars variabeln auth i stacken. Vid förvrÀngning av vilken bit som helst i variabeln kommer vÀrdet inte lÀngre att vara lika med noll och det villkorliga operatorn kommer att bedöma att autentiseringen har lyckats. Liknande kontrollmönster Àr ganska vanliga i applikationer och förekommer till exempel i SUDO, OpenSSH, MySQL och OpenSSL.

Mayhem - en attack som förvrÀnger bitar i minnet för att kringgÄ autentisering i sudo och OpenSSH

Attacken kan Àven tillÀmpas pÄ jÀmförelser av typen "if(auth == 1)", men i detta fall blir genomförandet mer komplicerat, eftersom man mÄste förvrÀnga den sista biten av de 32. Metoden kan ocksÄ anvÀndas för att pÄverka vÀrdena av variabler i CPU-register, eftersom innehÄllet i registren kan tillfÀlligt lagras i stacken vid kontextbyten, funktionsanrop eller signalhantering. Under den tid dÄ registervÀrdena finns i minnet kan förvrÀngningar göras, och det förÀndrade vÀrdet kan ÄterstÀllas i registret.

Mayhem - en attack som förvrÀnger bitar i minnet för att kringgÄ autentisering i sudo och OpenSSH

För att förvrÀnga bitar anvÀnds en av modifieringarna av RowHammer-attacken. Eftersom DRAM-minnet bestÄr av en tvÄdimensionell matris av celler, dÀr varje cell bestÄr av en kondensator och en transistor, leder kontinuerlig lÀsning av samma minnesomrÄde till spÀnningsfluktuationer och anomalier som orsakar en liten förlust av laddning i angrÀnsande celler. Om lÀsningsintensiteten Àr hög kan en angrÀnsande cell förlora tillrÀckligt med laddning och nÀsta regenereringscykel hinner inte ÄterstÀlla dess ursprungliga tillstÄnd, vilket leder till en Àndring av de lagrade datavÀrdena i cellen. För att skydda mot RowHammer har chipstillverkare lagt till mekanismen TRR (Target Row Refresh), som blockerar förvrÀngning av celler i specifika fall, men inte skyddar mot alla möjliga attackvarianter.

För att skydda mot Mayhem-attacken rekommenderas det att vid jĂ€mförelser inte anvĂ€nda bedömningen av skillnader frĂ„n noll eller överensstĂ€mmelse med ett, utan att kontrollera överensstĂ€mmelser med ett slumpmĂ€ssigt seedvĂ€rde med icke-noll oktetter. I detta fall krĂ€vs det att ett betydande antal bitar precis förvrĂ€ngs för att stĂ€lla in det önskade vĂ€rdet av variabeln, vilket Ă€r orealistiskt i jĂ€mförelse med att förvrĂ€nga en enda bit. Exempel pĂ„ kod som inte Ă€r utsatt för attack: int auth = 0xbe406d1a; 
 // kontrollkod som stĂ€ller in auth-vĂ€rdet till 0x23ab8701 vid lyckad autentisering if(auth == 0x23ab8701) return AUTH_SUCCESS; else return AUTH_FAILURE;

Den angivna skyddsmethoden har redan anvÀnts av utvecklarna av sudo och ingÄr i utgÄvan 1.9.15 som en patch för sÄrbarheten CVE-2023-42465. Prototypkoden för att utföra attacken planeras att publiceras efter att korrigeringar har gjorts i de huvudsakliga sÄrbara projekten.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster