ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΠ· ΠΡΡΡΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΡΠΈΡΡΡΠ° (Π‘Π¨Π) ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π°ΡΠ°ΠΊΠΈ Mayhem, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ² Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Rowhammer Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΡΡΠ΅ΠΊΠ΅, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π°Π³ΠΎΠ² Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΡΡΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°ΡΠ°ΠΊΠΈ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² SUDO, OpenSSH ΠΈ MySQL, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ, Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ OpenSSL.
ΠΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΡ Π½ΡΠ»Ρ. ΠΡΠΈΠΌΠ΅Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°: int auth = 0; … // ΠΊΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΌΠ΅Π½ΡΡΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ auth Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ if(auth != 0) return AUTH_SUCCESS; else return AUTH_FAILURE;
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π΄Π»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π°ΡΠ°ΠΊΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π±ΠΈΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΈΡ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π½Π° 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ auth Π² ΡΡΠ΅ΠΊΠ΅. ΠΡΠΈ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π±ΠΈΡΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ ΠΈ ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² SUDO, OpenSSH, MySQL ΠΈ OpenSSL.
ΠΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΈ Π½Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π²ΠΈΠ΄Π° «if(auth == 1)», Π½ΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΅Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Π·ΠΈΡΡ Π½Π΅ Π»ΡΠ±ΠΎΠΉ Π±ΠΈΡ ΠΈΠ· 32, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π±ΠΈΡ. ΠΠ΅ΡΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ Π² ΡΡΠ΅ΠΊ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π°. Π ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠΊΠ° ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π² ΡΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅ΡΡΠΈ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡ Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ»Ρ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ Π°ΡΠ°ΠΊΠΈ ΠΊΠ»Π°ΡΡΠ° RowHammer. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ°ΠΌΡΡΡ DRAM ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄Π²ΡΡ ΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΡΠ΅Π΅ΠΊ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΠ° ΠΈ ΡΡΠ°Π½Π·ΠΈΡΡΠΎΡΠ°, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ»ΡΠΊΡΡΠ°ΡΠΈΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΡΠΌ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΏΠΎΡΠ΅ΡΡ Π·Π°ΡΡΠ΄Π° ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΡΡΠ΅Π΅ΠΊ. ΠΡΠ»ΠΈ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ°Ρ, ΡΠΎ ΡΠΎΡΠ΅Π΄Π½ΡΡ ΡΡΠ΅ΠΉΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ΅ΡΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±ΡΡΠΌ Π·Π°ΡΡΠ΄Π° ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠΈΠΊΠ» ΡΠ΅Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΡΠΏΠ΅Π΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΡ Π² ΡΡΠ΅ΠΉΠΊΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ RowHammer ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΡΠΈΠΏΠΎΠ² Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ TRR (Target Row Refresh), ΠΊΠΎΡΠΎΡΡΠΉ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΅ΠΊ Π² ΡΠ°ΡΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ , Π½ΠΎ Π½Π΅ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Π°ΡΠΈΠ°ΡΠΎΠ² Π°ΡΠ°ΠΊΠΈ.
ΠΠ»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ Π°ΡΠ°ΠΊΠΈ Mayhem ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΡΡ Π½Π΅ ΠΎΡΠ΅Π½ΠΊΡ ΠΎΡΠ»ΠΈΡΠΈΠΉ ΠΎΡ Π½ΡΠ»Ρ ΠΈΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ΠΉ, Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΡΡΠ°Π²ΠΊΠΈ c Π½Π΅Π½ΡΠ»Π΅Π²ΡΠΌΠΈ ΠΎΠΊΡΠ΅ΡΠ°ΠΌΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΠ½ΠΎ ΠΈΡΠΊΠ°Π·ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±ΠΈΡΠΎΠ², ΡΡΠΎ Π½Π΅ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΠΈΡΠ°. ΠΡΠΈΠΌΠ΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ°ΠΊΠ΅ ΠΊΠΎΠ΄Π°: int auth = 0xbe406d1a; … // ΠΊΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π²ΡΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ auth Π² 0x23ab8701 Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ if(auth == 0x23ab8701) return AUTH_SUCCESS; else return AUTH_FAILURE;
Π£ΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΡΠΈΡΡ ΡΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ sudo ΠΈ Π²ΠΎΡΡΠ» Π² ΡΠΎΡΡΠ°Π² Π²ΡΠΏΡΡΠΊΠ° 1.9.15 ΠΊΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ CVE-2023-42465. ΠΡΠΎΡΠΎΡΠΈΠΏ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΡ Π°ΡΠ°ΠΊΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru