Mayhem - attack mot minnesbitar för att kringgÄ sudo- och OpenSSH-autentisering

Forskare frÄn Worcester Polytechnic Institute (USA) har presenterat en ny typ av attack som kallas Mayhem, som anvÀnder Rowhammer dynamiska minnesbitvridningsmetod för att Àndra vÀrdena pÄ variabler pÄ stacken som anvÀnds i programmet som flaggor för att avgöra om autentiseringen har lyckats eller inte och för att klara sÀkerhetskontroller. Praktiska exempel pÄ hur attacken anvÀnds för att kringgÄ autentisering i SUDO, OpenSSH och MySQL, samt för att Àndra resultatet av sÀkerhetsrelaterade kontroller i OpenSSL-biblioteket.

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

I detta exempel krÀver en lyckad attack att vilken bit som helst i minnet som motsvarar 32-bitars variabeln auth pÄ stacken Àr korrupt. Om nÄgon bit i variabeln Àr korrupt kommer vÀrdet inte lÀngre att vara noll och den villkorliga operatorn avgör om autentiseringen lyckades. SÄdana verifieringsmönster Àr ganska vanliga i applikationer och finns till exempel i SUDO, OpenSSH, MySQL och OpenSSL.

Mayhem - Minnesbitkorruptionsattack för att kringgÄ Sudo- och OpenSSH-autentisering

Attacken kan ocksÄ tillÀmpas pÄ jÀmförelser av typen "if(auth == 1)", men i detta fall Àr den svÄrare att genomföra, eftersom det Àr nödvÀndigt att inte förvrÀnga nÄgon bit av 32, utan den sista biten. Metoden kan ocksÄ anvÀndas för att pÄverka vÀrdena pÄ variabler i processorregister, eftersom innehÄllet i registren tillfÀlligt kan dumpas till stacken vid kontextbyte, anrop av funktioner eller utlösning av en signalhanterare. Under den tid som registervÀrdena finns i minnet kan detta minne förvrÀngas och det Àndrade vÀrdet ÄterstÀlls till registret.

Mayhem - Minnesbitkorruptionsattack för att kringgÄ Sudo- och OpenSSH-autentisering

För att förvrÀnga bitar anvÀnds en av modifieringarna av RowHammer-klassattacken. Eftersom DRAM-minne Àr en tvÄdimensionell matris av celler, som var och en bestÄr av en kondensator och en transistor, leder kontinuerlig lÀsning av samma minnesomrÄde till spÀnningsfluktuationer och avvikelser som orsakar en liten laddningsförlust i angrÀnsande celler. Om lÀsintensiteten Àr hög kan den angrÀnsande cellen förlora en tillrÀckligt stor mÀngd laddning och nÀsta regenereringscykel kommer inte att ha tid att ÄterstÀlla sitt ursprungliga tillstÄnd, vilket kommer att leda till en förÀndring av vÀrdet pÄ data som lagras i cellen. För att skydda mot RowHammer har chiptillverkare lagt till TRR-mekanismen (Target Row Refresh), som blockerar cellförvrÀngning i speciella fall, men inte skyddar mot alla möjliga attackvarianter.

För att skydda mot Mayhem-attacken rekommenderas det att anvĂ€nda en matchningskontroll med ett slumpmĂ€ssigt frövĂ€rde med oktetter som inte Ă€r noll, istĂ€llet för en utvĂ€rdering av skillnader frĂ„n noll eller matchningar med ett i jĂ€mförelser. I det hĂ€r fallet, för att stĂ€lla in önskat vĂ€rde för variabeln, Ă€r det nödvĂ€ndigt att noggrant förvrĂ€nga ett betydande antal bitar, vilket Ă€r orealistiskt, till skillnad frĂ„n att förvrĂ€nga en enda bit. Ett exempel pĂ„ kod som inte Ă€r mottaglig för attacker: int auth = 0xbe406d1a; 
 // verifieringskod som stĂ€ller in auth-vĂ€rdet till 0x23ab8701 vid lyckad autentisering if(auth == 0x23ab8701) return AUTH_SUCCESS; else return AUTH_FAILURE;

Den angivna skyddsmetoden har redan tillÀmpats av sudo-utvecklare och inkluderades i version 1.9.15 som en ÄtgÀrd för sÄrbarheten CVE-2023-42465. Prototypkoden för attacken planeras att publiceras efter att korrigeringar har gjorts för de huvudsakliga sÄrbara projekten.

KĂ€lla: opennet.ru

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