๊ตฌ๊ธ ํ๋ ์ด ์คํ ์ด์์ 200๊ฐ ์ด์์ Android ์ ํ๋ฆฌ์ผ์ด์ ์์ Facestealer ์ ์ฑ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ด ๊ด์ฐฐ๋์์ต๋๋ค. Facestealer๋ ์คํ์ด์จ์ด๋ก, Facebook ๋ก๊ทธ์ธ ์๊ฒฉ ์ฆ๋ช , ์ฟ ํค์ ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ํ์ทจํ๊ณ ํผํด์ ๊ณ์ ๊ณผ ๊ด๋ จ๋ ๊ฐ์ธ ์๋ณ ์ ๋ณด๋ฅผ ์์งํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
๋๋ถ๋ถ์ด VPN ์ํํธ์จ์ด(42๊ฐ), ์นด๋ฉ๋ผ(20๊ฐ), ์ฌ์ง ํธ์ง ํ๋ก๊ทธ๋จ(13๊ฐ)์ด๋ฉฐ ๊ฐ์ํํ์ ๊ด์ฌ์ด ์๋ ์ฌ์ฉ์๋ฅผ ํ๊ฒ์ผ๋ก ํ๋ ์ ์ฑ ๊ฐ์ํํ ์ฑ๊ตด ์ ํ๋ฆฌ์ผ์ด์ 40๊ฐ ์ด์์ ๋ฐ๊ฒฌํ๋ค๊ณ ํฉ๋๋ค. ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์๊ฐ ๊ด๊ณ ๋ฅผ ๋ณด๊ณ ์ ๋ฃ ๊ตฌ๋ ์๋น์ค๋ฅผ ๊ตฌ๋ ํ๋๋ก ์์ธ๋ค๊ณ ํด์. ๐ธ
์ ๋ฝ์ํ๋ ์ ๋ฝ์ฐํฉ(EU) ๋ด ๊ณต๊ณต ๋ฐ ๋ฏผ๊ฐ ๋ถ๋ฌธ ๊ธฐ๊ด์ ์ฌ์ด๋ฒ ๋ณด์๊ณผ ํ๋ณต๋ ฅ ํฅ์์ ๋ชฉํ๋ก ํ๋ ์์ ํ์ ์ ๋ฐํํ์ต๋๋ค. NIS2(network for information systems)๋ผ๋ ๊ฐ์ ์ง์นจ์ 2016๋ 7์์ ์ ์ ๋ ์ฌ์ด๋ฒ ๋ณด์์ ๊ดํ ๊ธฐ์กด ๋ฒ๋ฅ ์ ๋์ฒดํ ์์ ์ ๋๋ค. ์ ๋ฒ์์ ์กฐํญ์๋ ์ฌ์ด๋ฒ ๋ณด์ ์ฌ๊ณ ๋ฅผ 24์๊ฐ ์ด๋ด์ ๋น๊ตญ์ ์ ๊ณ ํ๊ณ , ์ํํธ์จ์ด ์ทจ์ฝ์ ์ ํจ์นํ๊ณ , ๋คํธ์ํฌ๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ์ํ ๊ด๋ฆฌ ์กฐ์น๋ฅผ ์ค๋นํ๊ณ ์์ผ๋ฉฐ, ์คํจํ ๊ฒฝ์ฐ ๋ฒ๊ธ์ด ๋ถ๊ณผ๋ ์ ์์ต๋๋ค.
์๋์ง, ์ด์ก, ๊ธ์ต ์์ฅ, ๊ฑด๊ฐ ๋ฐ ๋์งํธ ์ธํ๋ผ ๋ถ๋ฌธ์ ๊ธฐ์ ์ด ์ํ ๊ด๋ฆฌ ์กฐ์น ๋ฐ ๋ณด๊ณ ์๋ฌด๋ฅผ ์ค์ํ๋๋ก ์๊ตฌํ์ง๋ง, ๊ตญ๋ฐฉ, ๊ตญ๊ฐ ์๋ณด, ๊ณต๊ณต ๋ณด์, ๋ฒ ์งํ, ์ฌ๋ฒ๋ถ, ์ํ ๋ฐ ์ค์ ์ํ๊ณผ ๊ฐ์ ์กฐ์ง์๋ ์ ์ฉ๋์ง ์์ต๋๋ค.
๋ถํ์ Lazarus๊ทธ๋ฃน์ ๋ณด์ ํจ์น๊ฐ ์ ์ฉ๋์ง ์์ VMware Horizon ์ ํ์ Log4Shell ์ทจ์ฝ์ ์ ์ ์ฉํ์ฌ ํ๊ตญ์ NukeSped(์ผ๋ช Manuscrypt) ์ ์ฑ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ผ๋ก ๊ด์ฐฐ๋์์ต๋๋ค.
NukeSped ์ ์ฑ์ฝ๋๋ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ ์๊ฒฉ ๋๋ฉ์ธ์์ ์์ ํ ๋ช ๋ น์ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ํ ์ ์ฑ ํ๋์ ์ํํ ์ ์๋ ๋ฐฑ๋์ด์ ๋๋ค. ํค๋ก๊น , ์คํฌ๋ฆฐ์ท ์บก์ณ, ์น์บ ์ ์ ๊ทผํ๊ณ , ๋ํ ๊ตฌ๊ธ ํฌ๋กฌ, ๋ค์ด๋ฒ ์จ์ผ ๋ฑ์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋ ๊ณ์ ๊ณผ ๋น๋ฐ๋ฒํธ, ๋ฉ์ผ ๊ณ์ ์ ๋ณด, MS Office์ ํ์ปด์์ ์ต๊ทผ ์คํํ ํ์ผ๋ช ๋ฑ์ ๋นผ๋ด๋๋ก ์ค๊ณ๋์๋ค๊ณ ํด์. ๐ฑ
์ด ๊ธ์ unserialize๊ฐ ์ํํ ์ด์ ์ Property Oriented Programming ๊ธฐ๋ฒ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ด์ ์ ๋ง์ถฐ์ ์ฝ์ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค
๋ถ์ ๊ธ์ ์ ๋๊ฒ ์ด ํ ๋ค์ ์์ ๋คํธ์ํฌ๋ฅผ ๊ตฌ๊ฒฝํ๋๋ฐ ์ด๋ฐ ์ด์ผ๊ธฐ๋ฅผ ๋ณด๊ฒ ๋์์ต๋๋ค.
์ด CVE๊ฐ Laravel Framework ๋ด๋ถ unserialize ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ถ์์ ๋ฐ์ํ๋ ๊ฒ์ด ์๋ ์ฌ์ฉ์๊ฐ unserialize๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ํ๋ ๋ถ๋ถ์ด์๊ณ ์ด๋ CVE ๋ฒํธ๋ฅผ ํ ๋น๋ฐ์ผ๋ฉด ์ ๋๋ค๋ ์ฃผ์ฅ์ด์์ต๋๋ค.
ํ์๋ CVE ํ ๋น์ ๋ฌธ์ ๊ฐ ์์์ ๋๊ผ๋๋ฐ์. ์ด ์ทจ์ฝ์ ์ ๋ค๋ฅธ ๊ณต๊ฒฉ๊ธฐ๋ฒ์ผ๋ก ๋น์ ํ๋ฉด gets์ ๋ํด ROP Chain๊ฐ ํฐ์ง๋ค๊ณ ํ ๋น๋ฐ์ ๊ฒ์ธ๋ฐ ์ด๋ฐ CVE๋ ์๋ฐฑ ์์ฒ ๊ฐ๋ ๋์ฌ ์ ์์ง์.
ํ์ง๋ง ์ด ๊ธ์ ๊ณต๊ฒฉ๊ธฐ๋ฒ์ ๋ํ ์ค๋ช ์ด ์ฃผ๋ฅผ ์ด๋ฃจ๊ณ ์์ด์ ๋ ์๋ถ๋ค์๊ฒ ์ฌ์ ํ ๋์์ด ๋ ์ ์๋ค๊ณ ํ๋จํ์ฌ ๋ด๋ฆฌ์ง๋ ์๊ฒ ์ต๋๋ค.
Laravel 9.1.8 ๋ฒ์ ์์ ์ ์ ์ ๋ ฅ์ unserialize ๋ฉ์๋๋ฅผ ํตํด ์ญ์ง๋ ฌํ ํ ํ ์ฌ์ฉํ ๋ POP chain์ ํตํด RCE ํ ์ ์๋ ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค.
PHP๋ Magic Method๋ผ๊ณ ํ์ฌ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ช ์์ ์ผ๋ก ํธ์ถํ์ง ์์๋ ์๋์ผ๋ก ํธ์ถ๋๋ ๋ฉ์๋๋ค์ด ์์ต๋๋ค. ์ด Magic Method๋ฅผ ์ ์ ์ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฎ์ด์์ ์ผ์ข ์ gadget์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด gadget๋ค์ ํ์ฉํ์ฌ exploit chain์ ๊ตฌ์ฑํ ๊ฒ์ Property Oriented Programming Chain์ด๋ผ๊ณ ํฉ๋๋ค.
ํด๋น ์ทจ์ฝ์ ์์ ์ฌ์ฉํ๋ gadget์ PendingBroadcast.__destruct์ Dispatcher.dispatch($command) ์ ๋๋ค.
PendingBroadcast ์ธ์คํด์ค๊ฐ ์๋ฉธ๋ ๋ __destruct ๋ฉ์๋๊ฐ ์๋์ผ๋ก ํธ์ถ๋ฉ๋๋ค.
์ด ๋ฉ์๋๋ event dispatcher์ dispatch ๋ฉ์๋๋ฅผ ํธ์ถํด์ฃผ๊ธฐ ๋๋ฌธ์ dispatch ํธ์ถ์ด ํ์ํ ๋ gadget์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
Illuminate/Bus/Dispatcher๋ Illuminate\\Contracts\\Events\\Dispatcher์ ๊ตฌํ์ฒด์ ๋๋ค.
ํด๋น ๊ฐ์ฒด ๋ด dispatchToQueue ๋ฉ์๋๋ฅผ ํ์ธํด ๋ณด๋ฉด call_user_func ๋ฅผ ์ฌ์ฉํ์ฌ $connection์ ์ธ์๋ก ํ๋ queueResolver callback์ ํธ์ถํ๊ฒ ๋ฉ๋๋ค. queueResolver์ $connection์ ์ํ๋ ๊ฐ์ผ๋ก ์ง์ ํ ์ ์์ผ๋ฏ๋ก ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฐ์ ์ธ์๋ก ํ์ฌ ์ํ๋ ํจ์๋ฅผ ์คํํ ์ ์๋ ๊ฐ์ ฏ์ผ๋ก ์ธ ์ ์์ต๋๋ค.
์์ dispatch๋ฅผ ํธ์ถํ ์ ์๋ ๊ฐ์ ฏ์ ์ฐพ์ ์ํ์์ dispatchToQueue๋ฅผ ๊ฐ์ ฏ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ช ๊ฐ์ง ์กฐ๊ฑด์ด ํ์ํฉ๋๋ค.
์ด ์กฐ๊ฑด ๋ค์ ์๊ฐํ๋ฉด์ system(cmd) ํจ์๋ฅผ ์คํํ๋๋ก Property Oriented Programming์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ๋ง๋ ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํด์ฃผ๊ณ ์ธ์๋ก ๋ณด๋ด๋ฉด ๋ฉ๋๋ค.
์ ํ๋ก๊ทธ๋๋ฐ์ ์๋ ์ฝ๋์ฒ๋ผ ์งํํ๋ฉด ๋ฉ๋๋ค.