Google์ ์ด์ ์ ์ถ๊ฐ๋ ๋ณดํธ ๋ฐฉ๋ฒ์ ์ฐํํ์ฌ ๋ธ๋ผ์ฐ์ ์์ JavaScript ์ฝ๋๋ฅผ ์คํํ ๋ Spectre ํด๋์ค ์ทจ์ฝ์ ์ ์ ์ฉํ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฌ์ฃผ๋ ์ฌ๋ฌ ์ต์คํ๋ก์ ํ๋กํ ํ์ ์ ๊ฒ์ํ์ต๋๋ค. ์ต์คํ๋ก์์ ํ์ฌ ํญ์์ ์น ์ฝํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๋ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ต์คํ๋ก์์ ์๋์ ํ ์คํธํ๊ธฐ ์ํด Leaky.page ์ฌ์ดํธ๊ฐ ์์๋์๊ณ ์์ ๋ ผ๋ฆฌ๋ฅผ ์ค๋ช ํ๋ ์ฝ๋๊ฐ GitHub์ ๊ฒ์๋์์ต๋๋ค.
์ ์๋ ํ๋กํ ํ์ ์ Linux ๋ฐ Chrome 7 ํ๊ฒฝ์์ Intel Core i6500-88U ํ๋ก์ธ์๋ฅผ ํ์ฌํ ์์คํ ์ ๊ณต๊ฒฉํ๊ธฐ ์ํด ์ค๊ณ๋์์ผ๋ฉฐ, ๋ค๋ฅธ ํ๊ฒฝ์๋ ์ต์คํ๋ก์์ ์ ์ฉํ๋ ค๋ฉด ๋ณ๊ฒฝ์ด ํ์ํฉ๋๋ค. ์ ์ฉ ๋ฐฉ๋ฒ์ Intel ํ๋ก์ธ์์๋ง ๊ตญํ๋์ง ์์ต๋๋ค. ์ ์ ํ๊ฒ ์ ์ฉํ ํ์๋ ARM ์ํคํ ์ฒ ๊ธฐ๋ฐ Apple M1์ ํฌํจํ์ฌ ๋ค๋ฅธ ์ ์กฐ์ ์ฒด์ CPU๋ฅผ ์ฌ์ฉํ๋ ์์คํ ์์ ์ ์ฉ์ด ์๋ํ๋ ๊ฒ์ผ๋ก ํ์ธ๋์์ต๋๋ค. ์ฌ์ํ ์กฐ์ ํ์๋ Chromium ์์ง์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ค๋ฅธ ์ด์ ์ฒด์ ๋ฐ ๊ธฐํ ๋ธ๋ผ์ฐ์ ์์๋ ์ต์คํ๋ก์์ด ์๋ํฉ๋๋ค.
ํ์ค Chrome 88 ๋ฐ Intel Skylake ํ๋ก์ธ์ ๊ธฐ๋ฐ ํ๊ฒฝ์์ ํ์ฌ Chrome ํญ(๋ ๋๋ฌ ํ๋ก์ธ์ค)์ ์น ์ฝํ ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ํ๋ก์ธ์ค์์ ์ด๋น 1KB์ ์๋๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ถ๋์์ต๋๋ค. ๋ํ 8๋ง์ดํฌ๋ก์ด(5๋ฐ๋ฆฌ์ด)์ ์ ํ๋๋กperformance.now() ํ์ด๋จธ๋ฅผ ์ฌ์ฉํ ๋ ์์ ์ฑ์ ๋ฎ์ถ๋ ๋์ ๋์ถ ์๋๋ฅผ 0.005kB/s๋ก ์ฆ๊ฐ์ํฌ ์ ์๋ ์ต์คํ๋ก์๊ณผ ๊ฐ์ ๋์ฒด ํ๋กํ ํ์ ์ด ๊ฐ๋ฐ๋์์ต๋๋ค. . ์ด๋น ์ฝ 60๋ฐ์ดํธ์ ์๋๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ XNUMX๋ฐ๋ฆฌ์ด์ ํ์ด๋จธ ์ ํ๋๋ก ์๋ํ๋ ๋ณํ๋ ์ค๋น๋์์ต๋๋ค.
๊ณต๊ฐ๋ ๋ฐ๋ชจ ์ฝ๋๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ CPU ๋ช ๋ น์ ์ถ์ธก ์คํ ๊ฒฐ๊ณผ๋ก ํ๋ก์ธ์ ์บ์์ ๋จ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํ๋ ๋ฐ ํ์ํ ์์ ์ ์คํ ์๊ฐ์ ์ถ์ ํ๊ธฐ ์ํด ํ์ด๋จธ๋ฅผ ๋ณด์ ํฉ๋๋ค. ๋ ๋ฒ์งธ ๋ถ๋ถ์ JavaScript ๋ฐฐ์ด์ ํ ๋นํ ๋ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์์ ๊ฒฐ์ ํฉ๋๋ค.
์ธ ๋ฒ์งธ ๋ถ๋ถ์ Spectre ์ทจ์ฝ์ ์ ์ง์ ์ด์ฉํ์ฌ ํน์ ์์ ์ ์ถ์ธก ์คํ์ ์ํ ์กฐ๊ฑด์ ์์ฑํ ๊ฒฐ๊ณผ ํ์ฌ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๋ด์ฉ์ ๊ฒฐ์ ํ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๋ ์คํจํ ์์ธก์ ๊ฒฐ์ ํ ํ ํ๋ก์ธ์์ ์ํด ์ญ์ ๋์ง๋ง ์คํ์ ์ถ์ ์ ์ผ๋ฐ ์บ์์ ์ ์ฅ๋๋ฉฐ ์บ์๋ ๋ฐ์ดํฐ์ ์บ์๋์ง ์์ ๋ฐ์ดํฐ์ ๋ํ ์ก์ธ์ค ์๊ฐ์ ๋ณํ๋ฅผ ๋ถ์ํ๋ ํ์ฌ ์ฑ๋์ ํตํด ์บ์ ๋ด์ฉ์ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ณต์๋ ์ ์์ต๋๋ค.
์ ์๋ ํ์ฉ ๊ธฐ์ ์ Performance.now() API๋ฅผ ํตํด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณ ์ ๋ฐ ํ์ด๋จธ๋ฅผ ์ ๊ฑฐํ๊ณ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐฐ์ด์ ์์ฑํ ์ ์๋ SharedArrayBuffer ์ ํ์ ์ง์ํ์ง ์์ต๋๋ค. ์ต์คํ๋ก์์๋ ์ถ์ธก์ฑ ์ฝ๋ ์คํ์ ์ ์ดํ๋ โโSpectre ๊ฐ์ ฏ๊ณผ ์ถ์ธก์ฑ ์คํ ์ค์ ์บ์์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๋ ๋ถ์ฑ๋ ๋์ถ ๋ถ์๊ธฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
๊ฐ์ ฏ์ JavaScript ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค. ์ด ๋ฐฐ์ด์์๋ ๋ฒํผ ๊ฒฝ๊ณ ์ธ๋ถ ์์ญ์ ์ก์ธ์คํ๋ ค๋ ์๋๊ฐ ์ด๋ฃจ์ด์ง๋ฉฐ ์ปดํ์ผ๋ฌ(ํ๋ก์ธ์, ์์ ๋ด๋ค๋ณด๋ ํ๋ก์ธ์)๊ฐ ์ถ๊ฐํ ๋ฒํผ ํฌ๊ธฐ ํ์ธ์ผ๋ก ์ธํด ๋ถ๊ธฐ ์์ธก ๋ธ๋ก์ ์ํ์ ์ํฅ์ ์ค๋๋ค. , ์ถ๋ก ์ ์ผ๋ก ์ก์ธ์ค๋ฅผ ์ํํ์ง๋ง ํ์ธ ํ ์ํ๋ฅผ ๋กค๋ฐฑํฉ๋๋ค. ํ์ด๋จธ ์ ํ๋๊ฐ ์ถฉ๋ถํ์ง ์์ ์กฐ๊ฑด์์ ์บ์์ ๋ด์ฉ์ ๋ถ์ํ๊ธฐ ์ํด ํ๋ก์ธ์์์ ์ฌ์ฉํ๋ Tree-PLRU ์บ์ ์ ๊ฑฐ ์ ๋ต์ ์์ด๊ณ ์ฌ์ดํด ์๋ฅผ ๋๋ ค์ ๋ฐํ ์ ์๊ฐ ์ฐจ์ด๋ฅผ ํฌ๊ฒ ๋๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. ์บ์์ ๊ฐ๊ณผ ์บ์์ ๊ฐ์ด ์์ ๋.
Google์ Spectre ํด๋์ค์ ์ทจ์ฝ์ ์ ์ด์ฉํ ๊ณต๊ฒฉ์ ํ์ค์ฑ์ ๋ณด์ฌ์ฃผ๊ณ ์น ๊ฐ๋ฐ์๊ฐ ๊ทธ๋ฌํ ๊ณต๊ฒฉ์ผ๋ก ์ธํ ์ํ์ ์ต์ํํ๋ ๊ธฐ์ ์ ์ฌ์ฉํ๋๋ก ์ฅ๋ คํ๊ธฐ ์ํด ํ๋กํ ํ์ ์ต์คํ๋ก์์ ๋ฐํํ์ต๋๋ค. ๋์์ Google์ ์ ์๋ ํ๋กํ ํ์ ์ ๋ํญ ์์ ํ์ง ์์ผ๋ฉด ์์ฐ๋ฟ๋ง ์๋๋ผ ๋๋ฆฌ ์ฌ์ฉํ ์ ์๋ ๋ฒ์ฉ ์ต์คํ๋ก์์ ๋ง๋๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๊ณ ๋ฏฟ์ต๋๋ค.
์ํ์ ์ค์ด๊ธฐ ์ํด ์ฌ์ดํธ ์์ ์๋ ์ต๊ทผ ๊ตฌํ๋ COOP(Cross-Origin Opener Policy), COEP(Cross-Origin Embedder Policy), CORP(Cross-Origin Resource Policy), ๋ฉํ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์์ฒญ, X-Frame-Options, X -Content-Type-Options ๋ฐ SameSite ์ฟ ํค. ์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ์ง์ ์ ์ผ๋ก ๋ณดํธํ์ง๋ ์์ง๋ง ๊ณต๊ฒฉ์์ JavaScript ์ฝ๋๊ฐ ์คํ๋ ์ ์๋ ํ๋ก์ธ์ค๋ก ์ฌ์ดํธ ๋ฐ์ดํฐ๊ฐ ๋์ถ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค(๋์ถ์ ๊ณต๊ฒฉ์์ ์ฝ๋ ์ธ์ ๋ฐ์ดํฐ๊ฐ ํ์ฌ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ํฉ๋๋ค). ๊ฐ์ ํญ์์ ์ด๋ฆฐ ๋ค๋ฅธ ์ฌ์ดํธ์์). ์ฃผ์ ์์ด๋์ด๋ ์ ๋ขฐํ ์ ์๋ ์์ค(์: iframe์ ํตํด ํฌํจ๋จ)์์ ์ป์ ์ XNUMX์ ์ฝ๋์ ์ฌ์ดํธ ์ฝ๋ ์คํ์ ์ฌ๋ฌ ํ๋ก์ธ์ค์์ ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
์ถ์ฒ : opennet.ru