CVE-2018-7160 と Chrome DevTools Protocol のメモ

機動戦士ガンダムユニコーン RE:0096を視聴したところ、感化されて Aimer を聴きながらユニコーンのガンプラを作って大変満足している。 Node.js の inspector モードで DNS Rebinding を利用した RCE (CVE-2018-7160) がどのようなものなのか手元で確認してみたのでメモ。 メモなのでかなり殴り書き。 Chrome DevTools Protocol CVE-2018-7160を理解する前に Chrome DevTools Protocol について知っておく必要があった。 Chrome DevTools Protocol を利用することで Blink ベースのブラウザのデバッグやら何やらが可能になる。 Headless Chrome での操作はすべて Chrome DevTools Protocol で制御され、その実体は WebSocket である。 ドキュメント を見ると分かるが、本当に色々なことができる。 VS Code や Node.js でデバッグを行うときは、この Chrome DevTools Protocol が使用され、Node.js アプリを --inspect オプションを指定して起動し、 chrome://inspect にアクセスすることで、デバッグすることができる。 このとき、 node のログには以下のようなメッセージが出現する。 Debugger listening on ws://127.0.0.1:9229/17d0639f-c36a-47da-9b95-9990b72bf8b7 For help, see: https://nodejs.org/en/docs/inspector ws://127.0.0.1:9229/17d0639f-c36a-47da-9b95-9990b72bf8b7 がデバッグを行う WebSocket のエンドポイントである。