IPAセキュアプログラミング講座 ブートアップセミナー(全6講義)

開発深知」からIPAセキュアプログラミング講座 ブートアップセミナーの講義動画を紹介します。動画をご覧になるには、開発深知の会員登録(無料)が必要です。

講義概要

IPAセキュア・プログラミング講座(Webアプリケーション編)ブートアップセミナーの講義動画です。講義は、動画と小テストの構成になっております。

Webアプリケーションの基本事項について概説し、Webアプリケーションのセキュリティについて解説している講義で、全6回構成となります。

第1回 Webアプリケーションの概念
第1回ではWebアプリケーションの基本事項について概説し、Webアプリケーションのセキュリティについて押さえていきます。
Webアプリケーションへの攻撃について解説し、HTTP通信の観察方法と実際にHTTP通信の観察で得られる情報(HTTPプロトコル、HTTPリクエスト、HTTPレスポンスなど)について紹介していきます。
第2回 SQL注入
第2回ではデータベースアクセスに使われるSQLを使った攻撃(SQL注入:SQL injection(SQLインジェクション))について解説していきます。
まずSQL注入の流れについて、攻撃者がどのようにして、外部からデータベースへ攻撃を行うのかについて紹介します。
SQL注入が行われると情報流出や情報の改ざん、データ破壊、サーバ乗っ取りが行われることがあり、運営しているサービスが停止などが起きる可能性があり、深刻なダメージを受けることがあります。講義では、SQL注入の具体的な攻撃のメカニズムにつても取り上げ、理解を深めていきます。
また、実際に攻撃者が利用する特殊記号について説明します。講義の後半では、具体的なSQL注入対策について解説を行います。具体的には、O/Rマッパについて概説し、O/Rマッパの例を紹介します。
第3回 スクリプト注入
第3回では、スクリプト注入(クロスサイトスクリプティング)の典型的な攻撃例や被害、攻撃のメカニズム、攻撃パターンについて紹介し、対策方法について解説していきます。
第4回 セッションの基礎とログインセッション
第4回では、複数のHTTPリクエストを見分けるためのセッションIDや文脈となるセッション、セッションIDを運ぶ手段(URLリライティング、POSTデータ、Cookie)、Set-CookieとCookie、ログインセッションについて解説していきます。
第5回 セッションへの干渉
第5回では、セッションに対して攻撃者が行う脅威について、セッションハイジャックとセッションフィクセーションを取り上げます。セッションハイジャックとセッションフィクセーションの攻撃の流れ、被害、対策について順番に解説をしていきます。
第6回 アクセス認可の失敗
第6回では、アクセス認可(Authorization)の代表的な失敗パターンやその対策、ポリシー執行ポイント(PEP:Policy Enforcement Point)について解説をしていきます。

スクリーンショット 2015-03-31 12.14.28

講義は、こちらから登録することができます。
IPAセキュアプログラミング講座 ブートアップセミナー | 開発深知

講師

技術本部 セキュリティセンター企画グループ

IPAセキュアプログラミング講座の講義ページ

開発深知で実際に講義を受ける際のページです。閲覧したい回を選択して、講義動画を視聴後、小テストを受けてください。
スクリーンショット 2015-04-16 10.46.44

小テストの例

本講義では、各講義動画と合わせて小テストを設定しております。小テストの解答については、IPAセキュアプログラミング講座 ブートアップセミナー | 開発深知 の講義でご確認ください。
スクリーンショット 2015-03-31 12.16.52

テスト結果

セキュアプログラミング講座の小テストを受けると、Progressのページでテストの結果を確認することができます。

スクリーンショット 2015-04-16 11.09.01

ご自身の理解度を測る物差しとしてご利用ください。

講義のご登録はこちらから。
IPAセキュアプログラミング講座 ブートアップセミナー | 開発深知

参考URI

・IPA セキュア・プログラミング講座
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/

・OWASP Zed Attack Proxy Project – OWASP(「OWASP ZAP」ローカルプロキシ)
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

・Ruby on Rails
http://rubyonrails.org/

・Ruby on Rails チュートリアル:実例を使って Rails を学ぼう
http://railstutorial.jp/

・The Grails Framework
https://grails.org/

・CakePHP: 高速開発 php フレームワーク

Home http://cakephp.jp/

・Spring Framework
http://projects.spring.io/spring-framework/

講義スライド

IPAセキュアプログラミング講座 ブートアップセミナーの講義スライドをピックアップして紹介します。

Webアプリケーションとは(第1回)

01_Webアプリケーションとは

Webアプリケーションへの攻撃は通信から入ってくる(第1回)

02_Webアプリケーションへの攻撃は通信から入ってくる

O/Rマッパの例(第2回)

スクリーンショット 2015-04-16 10.27.39

フレームワーク O/Rマッパ
Ruby on Rails ActiveRecord(付属)
Grails GORM(付属)
CakePHP Modelクラス階層(付属)
Spring 別製品:
・Hibernate
・S2JDBC 等

SQL注入対策(第2回)

スクリーンショット 2015-04-16 10.26.17

SQL文の発行を半自動化してくれる道具を使う
よい道具
O/Rマッパ
言語に統合されたクエリ(LINQ、PL/SQL)
プリペアド・ステートメント
次善の策
特殊記号をエスケープしてくれるAPI(quote等)

スクリプト注入の典型的な攻撃例(XSS)(第3回)

01_スクリプト注入の典型的な攻撃例(XSS)

対策1:攻撃者由来のscriptタグを無害化(第3回)

05_対策1:攻撃者由来のscriptタグを無害化

無害化ー「サニタイズ」とも
HTMLページの中に書き出したデータが、タグやスクリプトとして機能しないようにする
方法:特殊記号の置き換え(HTMLエンコード)
< →  &lt;
> → &gt;
" → &quot;
' → &#39;
& → &amp;

ログインセッション(第4回)

03_ログインセッション

ログイン状態を維持するセッション
ユーザ認証(Authentication)との組み合わせ
セッションIDに「ユーザ認証済み」の意味をもたせる
アプリケーションにおいて実装する必要性
処理系は自動的には面倒をみてくれない
セッションハイジャックの脅威
セッションIDが攻撃の標的になる

セッションハイジャック対策(第5回)

04_セッションハイジャック対策
◆「推測」への対抗
 ・予測困難なランダム値を使う
 ・ログイン(ユーザ認証)成功のたびに異なる値を使う
◆「奪取」への対抗
 ・TLSを使用する
 ・Cookieにsecure属性をつける
 ・Cookieの「寿命」を短めにする
 ・ログイン成功時にセッションIDを発行し直す

講義は下記ページからご登録いただけます。
IPAセキュアプログラミング講座 ブートアップセミナー | 開発深知
また、動画をご覧になる場合には、開発深知の会員登録(無料)が必要です。
開発深知登録方法について | 開発深知ブログ

アクセス認可(Authorization)の失敗パターン(第6回)

01_アクセス認可(Authorization)の失敗パターン
1.メニューに無いページへアクセスできる
 ・ページへのリンクをメニュー画面から隠すのみ
2.他者が所有するデータにアクセスできる
 ・各ユーザの所有する情報が連番のキーでアクセスできる
  ・GET/mydata?id=104
◆失敗のバリエーション
 ・入力パラメータでユーザを識別する
 ・hidden項目によって権限フラグを受け渡す
 ・Referrer:ヘッダを見て直前のページの妥当性を判断する

関連講義

IPAセキュアプログラミング講座 ブートアップセミナーの関連講義について紹介します。

形式仕様記述(セキュリティ編)
本講座では、定理証明、モデル検査と段階的詳細化というシステム検証における三つの主要技術に基づいた、セキュリティ・ポリシの検証問題について解説していきます。
Hadoop体験型研修コンテンツを用いたデモ研修
大量データの処理分野における応用が広がりつつあるHadoopの特徴を生かしたデータ処理手法を、具体的なアプリケーションのプログラミング体験を通して学ぶことができます。

参考リンク

トップエスイー | サイエンスによる知的ものづくり教育プログラム
NPO法人トップエスイー教育センター
IPA 独立行政法人 情報処理推進機構

ソフトウェア開発者のための学習サイト「開発深知」については、開発深知とはをご覧ください。