• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Mr201206 no sql_security
 

Mr201206 no sql_security

on

  • 227 views

 

Statistics

Views

Total Views
227
Views on SlideShare
227
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Mr201206 no sql_security Mr201206 no sql_security Presentation Transcript

    • Fourteenforty Research Institute, Inc. 1 Fourteenforty Research Institute, Inc. NoSQLとセキュリティ Fourteenforty Research Institute, Inc. 株式会社 フォティーンフォティ技術研究所 http://www.fourteenforty.jp Ver 2.00.01
    • Fourteenforty Research Institute, Inc. • インターネット環境が充実し、ウェブサービスなどの利用が一般化 • FacebookやTwitterなど大量のデータを扱うサービスが増加 • 既存のリレーショナルデータベースでは処理速度、スケーラビリティの面で 十分に対応しきれなくなった • それらのRDBMS以外のデータベース利用が注目される 2 NoSQLとは RDBMS NoSQL • MySQL • PostgreSQL • ORACLE • MongoDB • Cassandra • HBase
    • Fourteenforty Research Institute, Inc. • 既存のリレーショナルデータベースとは利用方法が異なる • いままでにないセキュリティ上の新たな問題はあるのか? 3 NoSQLのセキュリティは? SQL Injection ? RDBMS NoSQL • MongoDB • Cassandra • HBase • MySQL • PostgreSQL • ORACLE
    • Fourteenforty Research Institute, Inc. • NoSQLには多種多様なものが含まれる(カッコ内は代表例) – Key-Value Store型 ( Amazon Dynamo ) – 列指向型 ( Cassandra ) – ドキュメント指向型 ( MongoDB ) – グラフ指向型 ( Neo4j ) 4 NoSQLとその種類 利用方法がバラバラなため、それぞれにセキュリティの問題を考える必要がある
    • Fourteenforty Research Institute, Inc. • ドキュメント指向型データベース • Naver Japan, SourceForgeなどで利用されている • JavaScriptを用いたクエリが可能 MongoDB 5 JavaScript Injection?
    • Fourteenforty Research Institute, Inc. MongoDB 特有のJavaScriptを用いたクエリ 6 JavaScriptを用いて条件を指定 この場合”James”のドキュメントが取得される db.foo.save ( { name:”James”, age:35 } ); db.foo.save ( { name:”Mary”, age:28 } ); db.foo.find( { $where : “this.age > 30” } ); JavaScriptを用いる場合の 特別なキーワード (変数などではない) • データベースの“foo”コレクションに2つのドキュメント(名前と年齢の組)を保存 • 条件(JavaScript)を指定して検索
    • Fourteenforty Research Institute, Inc. <?php $age = $_GET[‘age’]; $m = new Mongo(); $db = $m->selectDB(‘test'); $collection = new MongoCollection($db, ‘foo'); $collection->insert( array( "name" => "James", "age" => 35) ); $collection->insert( array( "name" => “Mary", "age" => 28) ); $js = "function() { return this.age > $age; }"; $cursor = $collection->find(array('$where' => $js)); // ... 取得したドキュメントを処理 ?> MongoDB 脆弱となる可能性 7 Injectionの可能性 $age が “1000 || true” という文字列であると 必ずtrueとなり、すべてのドキュメントが取得される • PHPからMongoDBを用いたWebページ
    • Fourteenforty Research Institute, Inc. • 他にもセキュリティ上の問題点がある可能性がある • それぞれのNoSQL DB固有のセキュリティ対策が必要 • 一般化できないため、それぞれの製品でセキュリティ対策のノウハウをた める必要がある 今後の課題 8
    • Fourteenforty Research Institute, Inc. • NoSQLにもセキュリティ上の問題は存在する • それぞれに異なる視点や対策が必要になる • まだ知られていない問題点が今後出てくる可能性も十分にある まとめ 9 SQL Injection JavaScript Injection ... ? RDBMS NoSQL • MongoDB • Cassandra • HBase • MySQL • PostgreSQL • ORACLE