Security & Programming Camp 2010

講義内容

セキュリティコースの主な内容

  • 講義中の演習は基本的にグループで行います。
  • 講義は、両コースの参加者全員が受講する「基本科目」、およびセキュリティコースの組ごとに特化された「組別専門科目」を設定しています。
    参加者は、基本科目を受講した後に、組別専門科目を受講していただきます。
  • セキュリティコース全員が参加する応用演習があり、グループで課題に取り組んでいただきます。
  • キャンプ期間中は、講義や演習以外に様々なイベントを企画しています。
  • セキュリティの実際の現場を体感できる企業見学会を行う予定です。
  • 最終日に各組で学習したことや、応用演習で学んだことなどを発表していただきます。

ソフトウェアセキュリティ組

概要

担当:愛甲講師、園田講師、竹迫講師、村上講師

ソフトウェアセキュリティ組では、ソフトウェアにおけるセキュリティ脆弱性について次のような内容を学ぶことを目的とします。なお、この組では、ソフトウェアとしてC/C++等により開発されたネイティブコードで動作するものを前提とします。

  1. ソフトウェアの脆弱性とは何ものか
  2. 脆弱性はどうして発生するのか
  3. 脆弱性の発見・解析をするためには、どのような方法があるのか

これらの点について、座学および演習により学習します。演習においては、実際に脆弱性を持つソフトウェアのソースコードを素材に自身の手で脆弱性の有無やその原因・影響等について確認を行っていただく予定です。また、OSや開発環境におけるセキュリティについても学習する予定です。

詳細

ソフトウェアセキュリティ組では、概要に述べた3点を追究するために、座学と演習を実施します。

  1. そもそも、ソフトウェアの脆弱性とは何なのか
    ソフトウェアの脆弱性は、そもそもどのようなメカニズムで「脆弱性」と呼ばれるようになるのかを学習します。また、脆弱性の種類や性質、そしてその引き起こす脅威について学習・検討し、脆弱性の実像を把握していただこうと思います。
  2. 脆弱性はなぜ発生するのか
    ソフトウェアの脆弱性はさまざまな要因で「発生」します。「発生」と表現すると、自然にわき起こってくるようなイメージを抱くかも知れませんが、どんなものにも原因はあり、その原因の多くは人間が関係しています。プログラムを書く、作る、デバッグするという過程で、なぜ「脆弱性」が作られてしまうのか、それは単にプログラマが無知なのか、それとも開発環境が洗練されていないからなのか、実際にソフトウェアのコードサンプルを見ながら、原因について考察します。
  3. 脆弱性を発見・解析するためには、どのような方法があるのか
    具体的にソフトウェアの脆弱性を探す方法を学習し、予め用意したコードサンプルやバイナリファイルを対象に、実際に脆弱性を発見し、デバッガ等を利用して脆弱性、および攻撃コードの分析を行います。それらを踏まえて脆弱性の深刻度について検討したり、その脆弱性をどのように取り扱うべきかについて検討します。

これらの学習を通じて、ソフトウェアにおける脆弱性について、

  • 脆弱性を作らないプログラムの書き方を理解する
  • 自らの手で脆弱性を発見できる
  • 発見した脆弱性の深刻度を正しく判断できる
  • 発見した脆弱性を正しく取り扱うことができる

といった点を身につけてもらうことを目指します。

Webセキュリティ組

概要

担当:上野講師、岡田講師、国分講師、田口講師、はせがわ講師、望月講師

Webセキュリティ組では、Webアプリケーションにおける脆弱性について、次のような内容を学ぶことを目的とします。

  1. そもそも、Webアプリケーションにおける脆弱性とは何なのか
  2. 脆弱性はどうして発生するのか
  3. 脆弱性を発見するためには、どのような方法があるのか

これらの点について、座学および演習により学習します。演習においては、実際に脆弱性を持つWebアプリケーションを対象に、自身の手で脆弱性の有無の調査や深刻度の判断をしてもらう予定です。また、脆弱性を発見したときに、その脆弱性をどのように取り扱うべきかについても学ぶ予定です。

詳細

Webセキュリティ組では、概要に述べた3点を中心に、座学だけでなく実際に手を動かしての演習にも重点を置いて学習します。

  1. そもそも、Webアプリケーションにおける脆弱性とは何なのか
    脆弱性を調査するためには、そもそも脆弱性という言葉が何を指しているのか、またその脆弱性により具体的にどのような脅威を引き起こすのかを判断する能力が求められます。「脆弱性」という言葉の定義を考えることで、正しく脅威を判断できる能力を身につけてもらえればと思います。
  2. 脆弱性はどうして発生するのか。
    Webアプリケーションに関わる脆弱性には、単純にアプリケーション実装上のバグに起因するものだけでなく、仕様そのものに問題がある場合や、使われる言語によって生じる問題、特定ブラウザの挙動に依存して問題が発生する場合などがあります。このような、脆弱性が発生する原因、脆弱性の技術的詳細について深く学習します。
  3. 脆弱性を発見するためには、どのような方法があるのか
    具体的にWebアプリケーションの脆弱性を探す方法を学習し、予め用意したWebアプリケーションを対象に、実際に脆弱性を探してもらいます。また、発見した脆弱性の深刻度について検討したり、その脆弱性をどのように取り扱うべきかについて議論する予定です。

これらの学習を通じて、Webアプリケーションにおける脆弱性について、

  • 自らの手で脆弱性を発見できる
  • 発見した脆弱性の深刻度を正しく判断できる
  • 発見した脆弱性を正しく取り扱うことができる

といった点を身につけてもらうことを目指します。

なお、講義は、Webアプリケーションに関する基礎的な知識があることを前提に進めていきますので、以下のような内容については事前に(今からでも間に合います!)学習しておいて下さい。

  • HTTP
    GETやPOSTといったメソッドの違い、200や301といった応答、各種リクエストヘッダやレスポンスヘッダなど。
  • HTML
    完全なものでなくてもかまいませんので、テキストエディタでHTMLを作成できること
  • JavaScript
    事前の学習は必須ではありませんが、JavaScriptを深く知っておくことで新しい脆弱性を発見できることもよくありますので、できれば学習しておくことをお勧めします。

IPA「安全なウェブサイトの作り方」も参考になります。
http://www.ipa.go.jp/security/vuln/documents/website_security.pdf

最後に。
Webアプリケーションの重要性が年々増していることは周知のとおりです。つまりWebアプリケーションをセキュアにするということは、ITの世界でメインストリームとなる道を安全に通れるように整備していくことなのです!世界に通用する技術を身につけたい方の応募をお待ちしています!

ネットワークセキュリティ組

概要

担当:川口講師、国分講師、杉浦講師、濱本講師、宮本講師、吉田講師、渡辺講師

不正アクセスの多くは、ネットワーク通信の中で起こりうると言っても過言では無いでしょう。この組では、演習用ネットワークを用いて実際に生徒自身の手でネットワークに自作のパケットを送り、それらを解析し、IDSを用いて検出することで、ネットワーク通信の基礎、解析方法、IDSの動作原理などについて学習するとともに、セキュリティインシデントによる侵害を受けたサーバの内部を実際に調査することで、不正アクセスの影響についても学習してもらいます。

  1. 不正アクセスが起こるメカニズムはどんなものか
  2. 不正アクセスを検知するにはどうしたら良いか
  3. 不正アクセスによって侵害されてしまった後、どのような調査・解析を行えば良いのか

これらの点について、座学および演習により学習します。

詳細

ネットワークセキュリティ組では、概要に述べた3点を追究するために、座学と演習を実施します。

  1. 不正アクセスが起こるメカニズムはどんなものか
    ネットワークを用いたさまざまな不正アクセスの手段は、従来より多数用いられ、社会的に大きな事件を引き起こしています。これらの攻撃的なアクセスが、実際にどのようなメカニズムで起きているのか、なぜそれが起きてしまうのかなどを学習し、それらを防ぐ手段について考察します。
  2. 不正アクセスを検知するにはどうしたら良いか
    ネットワーク通信の中に潜む不正アクセスを「検知」する方法について学びます。怪しい通信を特定する手法や、実際の素材を用いて通信の中身そのものを解析する方法などを学習し、演習の中でそうしたさまざまな形での検知を実践します。
  3. 不正アクセスによって侵害されてしまった後、どのような調査・解析を行えば良いのか
    不正アクセスの「痕跡」はハードディスクのイメージやサーバ内部、ネットワーク通信のパケットデータなどに残されます。実データを使って実際に調査しながらこれを調査・解析する方法を学習し、さらにはより詳しいデータを採取するための仕組みについても学びます。

これらの学習を通じて、

  • ネットワークセキュリティの仕組みや方法論、そして現在の課題について知る
  • ネットワーク通信の解析を行える
  • 不正アクセスを検知できる
  • 不正アクセスの「痕跡」を調査・解析できる

といった能力を身につけてもらうことを目指します。