今年のセキュリティキャンプのセキュアなシステムを作ろうクラス・組込みゼミでは,テーマが10個提示されています.
が,タイトルだけでは何をやるのかわかりにくいかと思いますので,クラスの説明のほうに書いてあるゼミ説明を,ここに再掲します.

モノづくりが好きで好きでしょうがなく,昼も夜も寝ても醒めてもモノづくりのことばかり考えているというかた,アセンブラやコンピュータ・アーキテクチャなどの低レイヤーの学習を「面白そう」と思えるかたは,ぜひ応募を検討してほしいです.

アセンブラは事前学習で勉強するので,始めから知っている必要は無いです.ただ学習することに抵抗感が無いことが重要です.

各テーマでは,基本として開発ターゲット(OS,アーキテクチャなど)はしぼりません.自由に使えるものならば,基本,何でもOKです.

テーマは「組込み系テーマ」と「アーキテクチャ系テーマ」の2通りがあります.組込み系はマイコンボードをガシガシいじりたおす感じ,アーキテクチャ系はアセンブラとにらめっこしながらモノ作りする感じです.

■ 選択テーマ一覧

・テーマ#01「マイコンボードでの不正実行の検出機能を作ってみよう」(組込み)

マイコンボード上で脆弱性のあるソフトウェアが外部から攻撃された場合を想定して,
アプリケーション・プログラムの挙動を監視し,不正実行を判断して中断・ログ保存す
るようなセキュリティ機能をマイコンボードに実装します.

ログはマイコンボード上の制限されたメモリ内に保存することと,PC側にアップロー
ドできることが必要になります.

・テーマ#02「セキュリティソフトを作ってみよう」(アーキテクチャ)

UNIX系のシステムではptrace()のようなデバッガ向け機能を利用することで,アプリケ
ーションの挙動を高度に制御することができます.

デバッガ向け機能を利用してアプリケーションの挙動を能動的に監視しチェックするこ
とで,PC上で動作するセキュリティソフト「もどき」を作成してみましょう.

・テーマ#03「アプリケーションの挙動を見える化してみよう」(アーキテクチャ)

「セキュリティソフトを作ってみよう」の発展系です.

ptrace()のようなデバッグ機能によりアプリケーションの挙動を見張り,レジスタやス
タックの状態を動的に取得し変化をリアルタイム表示することで,動作を見える化して
みましょう.さらにバッファオーバーランの脆弱性の攻撃等を実験的に行い,視覚的に
見てみましょう.
なお本テーマはPCでの開発を想定していますが,マイコンボードをターゲットとした
開発でも構いません.(この場合はGDBによるリモートデバッグ機能が利用できます)

・テーマ#04「セキュアな組込みOSを自作してみよう」(組込み)

既存の組込みOSに独自に機能を追加することで,セキュアな組込みOSを自由なアイ
ディアのもとで開発してみます.

何らかのオープンソースな組込みOSが動く,マイコンボードをターゲットとします.

・テーマ#05「アーキテクチャの違いを検証してみよう」(アーキテクチャ)

バッファオーバーラン等による脆弱性の既存の攻撃方法を,様々なアーキテクチャにつ
いて検証し横断的に比較することで,スタックやレジスタの扱い,命令コードの特徴,
命令セットの違いなどによるアーキテクチャごとの脆弱性の特徴を検討します.シェル
コード挿入やROP,Exploitコード作成をエミュレータ環境により実験します.

想定するアーキテクチャはx86,ARM,MIPS,PowerPC,SH,H8,V850,AVR,RX,6502,
Z80,VAXなどですが,可能な限り多く扱い横並びにして比較することを目的とします.

・テーマ#06「エミュレータでの不正実行の検出機能を作ってみよう」(組込み)

エミュレータ上で組込みOSのカーネルやアプリケーション・プログラムを動作させ,
OSへのシステムコールや特権命令の実行,メモリ読み書きなどの詳細なトレースを採
取する機能をエミュレータに実装します.さらに実行中のプログラムの動作のチェック
を行うことを可能にします.

エミュレータでの開発がベースとなるため,マイコンボードは利用しません.

・テーマ#07「組込みシステムをセーフティに設計してみよう」(組込み)

組込みシステムでは「セキュリティ」(脅威対策)に対して「セーフティ」(機能安全)と
いう考え方も重要になります.

エレベータ制御や踏切制御等を題材として制御プログラムを作成し,シミュレーション
動作させ,ドアの開閉・ボタンの押下・人がドアにはさまれたことの検知などをして適
切に振舞うかどうか,検証してみましょう.なおシミュレータも自作することを前提と
します.シミュレータでの確認がベースとなるため,マイコンボードは利用しません.

・テーマ#08「プロセッサのセキュリティアシスト機能を設計してみよう」(組込み)

プログラムの不正実行や不正領域アクセスなどの検出を考えた場合,既存のプロセッサ
に対して専用のハードウェアアシスト機能を搭載しOS側から適切に利用することで,
高速かつ確実に検出できる可能性があります.

既存のプロセッサに追加する形でそのような専用機能や特殊命令を設計し,OSと協調
してセキュリティを確保する方法を検討します.さらにプロセッサのエミュレータ上で
特殊命令の実装を行い,命令の動作やOSからの利用などの動作検証を行ってみます.

エミュレータでの開発がベースとなるため,マイコンボードは利用しません.

・テーマ#09「セキュアなインターフェースを設計してみよう」(アーキテクチャ)

既存のアーキテクチャでもABI(Application Binary Interface)を工夫することで既出の
攻撃手法を無意味にしセキュリティを高めることができる可能性があります.

セキュアなABIを定義し,アセンブラベースでプログラミングすることで効果を確認しま
す.可能ならばコンパイラやリンカを改造し,そのようなABIでコード生成してみます.

アーキテクチャは一つに絞らず,x86,ARM,MIPS,SH といった様々なものを扱います.

・テーマ#10「低レイヤー学習のための教材を作ってみよう」(アーキテクチャ)

セキュリティ理解のための低レイヤー学習の促進を目的として,2013年には「アセンブ
ラ短歌」や「バイナリかるた」「アセンブラ・クロスワード」といった新しいコンテス
トや競技,ゲームが考案され,実施されています.

勉強会で実施できるような題材として,そのような新しい教材を考案し,開発してみま
しょう.アイディア出しだけではなく,自身で実装し普及させることを前提とします.

AD