์‹ ์ฒด ์ƒํ•ด - sudo ๋ฐ OpenSSH ์ธ์ฆ์„ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋น„ํŠธ ์†์ƒ ๊ณต๊ฒฉ

๋ฏธ๊ตญ Worcester Polytechnic Institute์˜ ์—ฐ๊ตฌ์›๋“ค์€ Rowhammer ๋™์  ๋žœ๋ค ์•ก์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ๋น„ํŠธ ์™œ๊ณก ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ ๋ฐ ๋ณด์•ˆ ๊ฒ€์‚ฌ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ”Œ๋ž˜๊ทธ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์Šคํƒ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ Mayhem ๊ณต๊ฒฉ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ†ต๊ณผํ–ˆ๋‹ค. SUDO, OpenSSH, MySQL์˜ ์ธ์ฆ์„ ์šฐํšŒํ•˜๊ณ  OpenSSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ณด์•ˆ ๊ด€๋ จ ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ณต๊ฒฉ์˜ ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ด ๊ณต๊ฒฉ์€ 0๊ณผ ๋‹ค๋ฅธ ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ๊ฒ€์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ทจ์•ฝํ•œ ์ฝ”๋“œ์˜ ์˜ˆ: int auth = 0; ... // ์ธ์ฆ ์„ฑ๊ณต ์‹œ auth ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ธ์ฆ ์ฝ”๋“œ if(auth != XNUMX) return AUTH_SUCCESS; ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด AUTH_FAILURE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ˆ์˜ ๋งฅ๋ฝ์—์„œ ๊ณต๊ฒฉ์ด ์„ฑ๊ณตํ•˜๋ ค๋ฉด ์Šคํƒ์˜ 32๋น„ํŠธ ์ธ์ฆ ๋ณ€์ˆ˜์™€ ๊ด€๋ จ๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋น„ํŠธ๋ฅผ ์†์ƒ์‹œํ‚ค๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์˜ ๋น„ํŠธ๊ฐ€ ์†์ƒ๋œ ๊ฒฝ์šฐ ๊ฐ’์€ ๋” ์ด์ƒ XNUMX์ด ์•„๋‹ˆ๋ฉฐ ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž๊ฐ€ ์ธ์ฆ์˜ ์„ฑ๊ณต์ ์ธ ์™„๋ฃŒ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํŒจํ„ด์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋งค์šฐ ์ผ๋ฐ˜์ ์ด๋ฉฐ SUDO, OpenSSH, MySQL ๋ฐ OpenSSL ๋“ฑ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ ์ฒด ์ƒํ•ด - sudo ๋ฐ OpenSSH ์ธ์ฆ์„ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋น„ํŠธ ๋งน๊ธ€๋ง ๊ณต๊ฒฉ

์ด ๊ณต๊ฒฉ์€ "if(auth == 1)" ํ˜•์‹์˜ ๋น„๊ต์—๋„ ์ ์šฉ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ 32์˜ ๋น„ํŠธ๊ฐ€ ์•„๋‹Œ ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๋ฅผ ์™œ๊ณกํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„์ด ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ์ปจํ…์ŠคํŠธ ์ „ํ™˜, ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋˜๋Š” ์‹ ํ˜ธ ์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋‚ด์šฉ์ด ์ผ์‹œ์ ์œผ๋กœ ์Šคํƒ์— ํ”Œ๋Ÿฌ์‹œ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”„๋กœ์„ธ์„œ ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋ณ€์ˆ˜ ๊ฐ’์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’์ด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋™์•ˆ ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์™œ๊ณก์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณ€๊ฒฝ๋œ ๊ฐ’์ด ๋ ˆ์ง€์Šคํ„ฐ์— ๋ณต์›๋ฉ๋‹ˆ๋‹ค.

์‹ ์ฒด ์ƒํ•ด - sudo ๋ฐ OpenSSH ์ธ์ฆ์„ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋น„ํŠธ ๋งน๊ธ€๋ง ๊ณต๊ฒฉ

๋น„ํŠธ๋ฅผ ์™œ๊ณกํ•˜๊ธฐ ์œ„ํ•ด RowHammer ํด๋ž˜์Šค ๊ณต๊ฒฉ์˜ ์ˆ˜์ • ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. DRAM ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ๊ฐ ์ปคํŒจ์‹œํ„ฐ์™€ ํŠธ๋žœ์ง€์Šคํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ ์…€์˜ XNUMX์ฐจ์› ๋ฐฐ์—ด์ด๋ฏ€๋กœ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์—ฐ์†์ ์œผ๋กœ ์ฝ์œผ๋ฉด ์ „์•• ๋ณ€๋™๊ณผ ์ด์ƒ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ธ์ ‘ํ•œ ์…€์—์„œ ์•ฝ๊ฐ„์˜ ์ „ํ•˜ ์†์‹ค์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŒ๋… ๊ฐ•๋„๊ฐ€ ๋†’์œผ๋ฉด ์ด์›ƒ ์…€์ด ์ถฉ๋ถ„ํžˆ ๋งŽ์€ ์–‘์˜ ์ „ํ•˜๋ฅผ ์žƒ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค์Œ ์žฌ์ƒ ์ฃผ๊ธฐ์—์„œ๋Š” ์›๋ž˜ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•  ์‹œ๊ฐ„์ด ์—†์–ด ์…€์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. . RowHammer๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์นฉ ์ œ์กฐ์—…์ฒด๋Š” ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ ์…€ ์†์ƒ์„ ์ฐจ๋‹จํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ณต๊ฒฉ ๋ณ€ํ˜•์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜์ง€๋Š” ์•Š๋Š” TRR(Target Row Refresh) ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€ํ˜ผ๋ž€ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋ ค๋ฉด 0๊ณผ์˜ ์ฐจ์ด ๋˜๋Š” 406๊ณผ์˜ ์ผ์น˜๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๋น„๊ต๊ฐ€ ์•„๋‹Œ 1์ด ์•„๋‹Œ ์˜ฅํ…Ÿ์˜ ์ž„์˜ ์‹œ๋“œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ์ผ์น˜ ํ™•์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์›ํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ’์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ๋‹นํ•œ ์ˆ˜์˜ ๋น„ํŠธ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์™œ๊ณกํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” 0๋น„ํŠธ์˜ ์™œ๊ณก์— ๋น„ํ•ด ๋น„ํ˜„์‹ค์ ์ด๋‹ค. ๊ณต๊ฒฉํ•  ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ์˜ ์˜ˆ: int auth = 23xbe8701d0a; ... // ์ธ์ฆ ์„ฑ๊ณต ์‹œ auth ๊ฐ’์„ 23x8701abXNUMX๋กœ ์„ค์ •ํ•˜๋Š” ์ธ์ฆ ์ฝ”๋“œ if(auth == XNUMXxXNUMXabXNUMX) return AUTH_SUCCESS; ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด AUTH_FAILURE๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ง€์ •๋œ ๋ณดํ˜ธ ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ sudo ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ CVE-1.9.15-2023 ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์œผ๋กœ ๋ฆด๋ฆฌ์Šค 42465์— ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ฃผ์š” ์ทจ์•ฝํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ ํ”„๋กœํ† ํƒ€์ž…์„ ๊ฒŒ์‹œํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€