My talk @ kernelvm 関西 #8
インサイド関西
View Slide
自己紹介● るくす● 神戸大学大学院● 興味● 専門分野 ローラー最近はチャージャーも勉強中
● 任天堂より 年 月 日に発売されたゲーム機● 初期は というコードネームで開発が進められていた● 本体の左右両側に を接続、分離して遊べる● ジャイロセンサーやタッチスクリーンも搭載● ドックを使うとテレビへの出力も
TypeCPU Cortex-A57Memory 4GBGPU 256-core MaxwellStorage Toshiba/Samsung 32GB eMMCWifi/BT Broadcom BCM4356XKUBG
● は の を した物。マイクロカーネル。○ ではないので注意 の情報は間違ってます● ブラウザは ベース に使用● 実行バイナリフォーマットも独自の を採用● アプリはロード後 と呼ばれるダイナミックリンカによってアドレス再配置、及び のような初期化処理を行う。
バイナリフォーマット● の独自実行バイナリフォーマット● ゲームやアプリはこのフォーマット.text section※各セクション本体は で圧縮されている パッキング
バイナリフォーマット● 独自の動的リンクライブラリフォーマット の 、 の● 署名された正規の のみロード可能 署名の検証は フォーマットを利用
バイナリフォーマット● や 内に埋め込まれているフォーマット● 動的リンクに必要な情報を管理する専用領域 Header(NRO).text.rodata.dataHeader(MOD)Module Objects....dynamicunwindNRO Binary
ソフトウェア● という海外のチームが アプリケーション開発用の簡単なライブラリとエミュレータを公開● をポーティング○ 個のシステムコールを実装しただけのプロトタイプ● エミュレータは をベースとした簡易な物○ のフック機能を使って、システムコール発行等のイベントをキャッチしてログに出力するだけ。どちらかというと解析用途。ReSwitched Team
解析ツール● 実行バイナリ解析、変換ツール○ 用の 実行バイナリを に変換するツール● 逆アセンブラ● 逆アセンブラNRO support by @pancake NSO support by @RKX1209
セキュリティ事情● チームが エクスプロイトを公開○ 元々 氏がデモしていた物を として更に発展● カーネルエクスプロイト○ 氏が 週間前に成功 技術的な詳細は不明○ デバッグ用のシステムコール発掘に成功し、デバッガの開発まで行っている● 任天堂の公式情報によると、 の を利用している○ 暗号化や署名検証等の な処理は で実行されている可能性
セキュリティ事情
エミュレータ● 現在 エミュレータ、 を開発中○ 現段階で公になっている エミュレータはまだ無い● 進捗状況 ローダー完成。 エミュレータ を開発中● 基本的なエミュレーション方式は エミュレータの を参考● バイナリから への 変換方式● 勿論、法的にグレーな怪しい機能は実装しない
今後の課題● エミュレーション方式の検討と実装○ フォワーディング フルエミュレーション パススルー?● その他周辺機器のエミュレーション● デバッガ等の開発環境の整備 これにはカーネルエクスプロイトによるハックが必要● をやめる