Slide 1

Slide 1 text

一緒にプレイするだけで乗っ取り!? ~任天堂のバッファオーバーフロー脆弱性~ 小笠原 啓祐

Slide 2

Slide 2 text

目次 自己紹介 脆弱性の概要 デモ動画 バッファオーバーフローについて 脆弱性解説 補足

Slide 3

Slide 3 text

自己紹介 ・大学一年生 ・サークル「週末せっきゅ!」(2名)してます ・情報機器管理コンテスト出ます →インシデントレスポンス等 お話聞きたいです!!       週末せっきゅ!@yuluhack

Slide 4

Slide 4 text

3DS以降の任天堂ゲームの共通ネットワークコード(ENL)に存在する脆弱性    攻撃 者がオンラインゲームをしているだけで被害者のゲーム機で         リモートコード 実行可能(RCE)な脆弱性(修正済) 対象となったゲーム(画像は全て任天堂公式 HPより) ・マリオカート7,8 ・スプラトゥーン1,2,3 ・あつまれ どうぶつの森 etc,,, ENLBufferPwn(CVE-2022-47949)の概要

Slide 5

Slide 5 text

実際の動画 以下の動画でのハッキング、チーティング おそらくこの脆弱性によるものと考えられる https://www.youtube.com/watch?v=nVCPjUrkfPg&ab_channel=%E3%81%8F%E3 %82%89%E3%81%86%E3%81%A9 攻撃者側の概念実証デモ https://www.youtube.com/watch?v=PLAVmp5ky-k&ab_channel=PabloMK7

Slide 6

Slide 6 text

バッファオーバーフローとは? 許容量を超えるデータを送信し、システム機能を停止
 または悪意あるプログラムを実行する攻撃(画像はIPA)

Slide 7

Slide 7 text

ENL ENL・・・任天堂のゲームで(オンライン上で)用いられ るネットワークライブラリ。 peer to peerのプライベート通信フレームワーク。今回 の脆弱性の原因だった。 クラス、メソッドの実装→

Slide 8

Slide 8 text

setもaddも入力されたデータサイズが       バッファ サイズに収まるかをチェックしていない!

Slide 9

Slide 9 text

やや詳しく,,, ENLネットワークライブラリは、非同期であり、データ がバッファに充填される間、ゲームは他の操作を行う ことが可能なダブル・バッファ技術が使われており、 ネットワークバッファオブジェクトとそのコンテンツは 隣接している。 また、ダブルバッファからの両方の バッファは、メモリ上で隣接している。 バッファ割り当て後のメモリの配置は右図。

Slide 10

Slide 10 text

画像上部のバッファは Buffer0 として参照され下部 のバッファは Buffer1 として参照される。攻撃者は Buffer0 のバッファオーバーフローを起点に、 Buffer1 の dataptrメンバを含む属性を上書きする ことができる。3DSはアドレス空間配置のランダム 化( ASLR) を実装していないため(なんと!),被害 者のゲーム機内のすべてのメモリ配置を知ることが でき、dataptr は任意の場所を指定できる。ゲーム がバッファを交換すると、新しいデータは任意の場 所にコピーされる。 これを利用して,,,

Slide 11

Slide 11 text

1,被害者のゲーム機に  バッ ファオーバーフローを 引き起こ し、dataptrを上書きする用の データ     (ペイロード)を送 信する 2,Buffer1 の内容を任意の データで設定することで  被害 者のゲーム機のBuffer1の dataptrが指す任意のアドレス にコピーされる。 1,2を繰り返す。

Slide 12

Slide 12 text

クレジット 元のPoC(パブリックドメイン) PabloMK7/ENLBufferPwn: Information and PoC about the ENLBufferPwn vulnerability (github.com) 情報処理推進機構 安全なウェブサイトの作り方  https://www.ipa.go.jp/security/vuln/websecurity 任天堂公式HP https://www.nintendo.com

Slide 13

Slide 13 text

ありがとうございました!