スケジュール | ||
---|---|---|
開催日 | タイトル | |
2010-8-5 | part1<文字列> | 終了 |
2010-9-15 | part2<整数> | 終了 |
2010-10-13 | part3<CERT C セキュアコーディングスタンダード> | 終了 |
2010-11-10 | part4<動的メモリ管理> | 終了 |
2010-12-15 | part5<書式指定文字列> | 終了 |
2011-2-24 | part6<ROSE> | 終了 |
2011-3-3 | part6<ROSE> | 終了 |
プログラム | |
---|---|
part1 <文字列> | |
13:30 - | 受付開始 |
14:00 - 16:00 | 文字列 |
16:15 - 18:15 | 演習(文字列) |
part2 <整数> | |
13:00 - | 受付開始 |
13:30 - 16:00 | 整数 |
16:15 - 18:15 | 演習(整数) |
part3 <CERT C セキュアコーディングスタンダード> | |
13:30 - | 受付開始 |
14:00 - 14:45 | CERT C セキュアコーディングスタンダード概論 |
15:00 - 16:30 | CERT C セキュアコーディングスタンダード各論 |
16:45 - 17:15 | CERT C セキュアコーディングスタンダード活用 |
part4 <動的メモリ管理> | |
13:00 - | 受付開始 |
13:30 - 16:00 | 動的メモリ管理-講義 |
16:00 - 18:15 | 動的メモリ管理-演習 |
part5 <書式指定文字列> | |
13:00 - | 受付開始 |
13:30 - 16:00 | 書式指定文字列-講義 |
16:00 - 18:15 | 書式指定文字列-演習 |
part6 <ROSE> | |
13:00 - | 受付開始 |
13:30 - 16:00 | ROSE紹介, デモセッション |
16:15 - 18:15 | ハンズオン |
part1<文字列>
ユーザとソフトウエア間に発生するデータのやりとりの大部分は文字列によって行われます。
また、プログラム間でのデータ交換も文字列形式で行われるようになり、その結果、文字列表現や文字列管理、文字列操作における弱点がソフトウエア脆弱性を生み出しています。
C/C++ 言語における文字列操作、一般的なセキュリティ上の欠陥と、その結果発生する脆弱性と対処方法について解説します。
- C/C++ における文字列の特性
- 犯しやすい文字列操作の間違い
- 文字列の脆弱性
- プロセスのメモリ構成
- スタック破壊の仕組み
- コードインジェクション、アークインジェクションの仕組み
- 脅威の緩和方法 など
part2<整数>
C/C++ 言語において整数型の取扱いに起因する脆弱性はこれまであまり重要視されていませんでしたが、その数は確実に増加しています。
攻撃者は、プログラムが本来想定する入力範囲に関わらず、異常動作を引き起こす入力値を見つけ出すことで脆弱性を利用しようとします。C/C++ 言語における整数型の取扱いに関する仕様と、そこから引き起こされるセキュリティ上の問題について体系的に解説します。
- 整数型の取り扱いについて
- 整数型の変換について(格上げ、整数変換順位、通常の算術型変換)
- 整数のエラー条件
- 脆弱性につながる整数演算
- 脆弱性(整数オーバーフロー、符号エラー、切り捨てエラー) など
part3<CERT C セキュアコーディングスタンダード>
セキュアコーディングを実践するためには、どのようなコーディングが良くてどのようなコーディングがいけないのか、分かりやすく明確に判断できることが望まれます。そのようなガイドラインをまとめたものが「CERT C セキュアコーディングスタンダード」です。これは、信頼性の高い安全なプログラムをつくるために、全てのC言語プログラマが知っておくべきガイドライン集です。
本セミナでは CERT C セキュアコーディングスタンダードをめぐる状況を説明するとともに、個々のルール等の解説、セキュアコーディングスタンダードの活用方法などをご紹介します。
- CERT C セキュアコーディングスタンダード概論 - 目的、開発体制、言語規格との関係
- CERT C セキュアコーディングスタンダード各論 - スタンダードの構成、各ガイドラインの読みかた
- 活用方法の提案
part4<動的メモリ管理>
C/C++ ではプログラムが必要とするメモリを動的に取得・使用することが可能です。大量のデータを扱うアプリケーションやリソースが限られている組み込み機器など、動的メモリ管理機能を使いこなさなければならない場面は多くあります。動的メモリ管理に関する脆弱性が存在する場合、DoS 攻撃や任意のコード実行に使われる危険があります。 C/C++ が提供している動的メモリ管理の仕組みを正しく理解し、異常な状態に正しく対処できるようなコードを作ることが求められているのです。
動的メモリ管理では、 おもに UNIX 環境を対象として、C/C++ における動的メモリ管理の仕組みとすでに知られている脆弱性の例、また安全なコードを書くための手法について解説します。
- C/C++ における動的メモリ管理
- 動的メモリ管理に関する脆弱性
- Doug Lea メモリアロケータ
- 動的メモリ管理とバッファオーバフロー
- 動的メモリ管理に関する脆弱性を防ぐ など
part5<書式指定文字列>
C99 では、printf() や sprintf() に代表される可変個の引数を受け付ける書式付き入出力関数を定義しています。これらの関数で使われる書式指定の仕組みは、プログラマーがその危険性を理解して正しくコーディングしないと、攻撃者による任意のコード実行につながる危険性があります。
part5 <書式指定文字列>では、書式付き出力関数に対する攻撃の手法を解説し、その脅威を緩和する方法を紹介します。
- 書式付き出力関数の脆弱性とは
- 書式付き出力関数とフォーマットの詳細
- 脅威の緩和方法
- 書式指定出力関数に対する攻撃手法
- 代表的な脆弱性 など
part6<ROSE>
オープンソースのソースコード解析プラットフォームであるROSEを使って開発された CERT C セキュアコーディングルールのチェッカーを紹介し、簡単なデモンストレーションを交えながらツールの使い方を解説します。
また、必要なツールをインストールした Linux イメージを使い、実際にチェッカの使用やチェッカルールの開発を体験していただきます。
※本セミナでは、実機を使ったハンズオンをおこないます。参加者は VMware あるいは Virtualbox をインストールしたノートPCをご持参下さい。実習で使用する作業環境をイメージファイルで提供します。
PC の貸与等は致しませんのでご了承ください。