他のシステムをハックするというのがどういうことかを知りたい人々のために、GoogleはJarlsbergという特別なラボを作成した。JarlsbergにはセキュリティホールでいっぱいのWebアプリケーションが含まれており、どんなものが脆弱性を持つ可能性があるか、悪意のあるユーザがどうやってそれらを利用するか、そのような弱点をどのように抑えるかをハンズオン形式で学びたいと思っている開発者が、そのアプリケーションを攻撃することができる。
ラボはセキュリティ上の脆弱性の違いによって体系づけられており、各々に脆弱性を探したり、それを悪用するタスクが用意されている。また、ラボは3つの主要な技術を利用している。
- ブラックボックス –アプリケーションのソースコードが公開されておらず、ユーザはどうやってセキュリティ上の脆弱性をつき、サーバをのっとるかを推測する必要がある。
- ホワイトボックス –ユーザは弱点を見つけるために、ソースコードを読むことができる。アプリケーションのソースコード(Python)は入手可能なオープンソースのアプリケーションに似たようなものである。
- グレーボックス –アプリケーションの全てのソースコードは公開せず、どうやってアプリケーションが書かれているかのヒントを提供する。
Jarlsbergは、アプリケーションの攻撃可能な箇所を増やすことを意図した機能を多数含んでいる。
- HTMLスニペット: ユーザはスニペットに制限されたHTMLサブセットを含めることができます。
- ファイルアップロード: ユーザはサーバにファイルをアップロードでき、例えばスニペットに画像を含めることができます。
- Web管理: システム管理者はWebインターフェースを使ってシステムを管理できます。
- 新規アカウント: ユーザは自分自身のアカウントを作ることができます。
- テンプレート言語: Jarlsbergテンプレート言語(JTL)は新しい言語で、テンプレートが直接データベースに接続するように、簡単にWebページを作成することができます。JTLのドキュメントは
jarlsberg/jtl.py
で見ることができます。- AJAX: Jarlsbergはホームやスニペットの更新の実装にAJAXを使用しています。AJAXにフォーカスした課題を除いて、AJAXの部分を気にする必要はありません。
Jarlsbergには以下のようなセキュリティ上の脆弱性が含まれている。
- クロスサイトスクリプティング(XSS)
- クロスサイトリクエストフォージェリ(XSRF)
- クロスサイトスクリプトインクルージョン(CSSI)
- クライアントステートマニピュレーション
- パストラバーサル
- サービス停止(DoS)
- コード実行
- 構成の脆弱性
- AJAXの脆弱性
このラボは学習プロセスを完全に制御するためにローカルで実行することができるし、Googleクラウド内のサンドボックス化されたインスタンスとして実行することもできる。ラボのほとんどはクリエイティブ・コモンズ 表示 3.0、一部はクリエイティブ・コモンズ 表示、改変禁止 3.0の下でリリースされており、学生たちにセキュリティ上の脆弱性からシステムを守ったり、脆弱性を理解させたいと思っている大学や、社員に対してそのような教育をしたい組織に適している。