Top Banner
Do Containers Enhance Application Level Security? Benjy Portnoy, CISA, CISSP
53

Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim [email protected] > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Apr 25, 2018

Download

Documents

vanliem
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Do Containers Enhance Application Level

Security?

Benjy Portnoy, CISA, CISSP

Page 2: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

# whoami

BlueCoat->Symantec

Director,DevSecOps@AquaSecTeam

Page 3: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

I know, I’ll use Ruby on Rails!*[email protected]

Page 4: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> gem install rails

Page 5: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> gem install railsFetching: i18n-0.7.0.gem (100%)Fetching: json-1.8.3.gem (100%)Building native extensions. This could take a while...ERROR: Error installing rails:ERROR: Failed to build gem native extension.

/usr/bin/ruby1.9.1 extconf.rbcreating Makefile

makesh: 1: make: not found

Page 6: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Ah, I just need to install make

Page 7: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> sudo apt-get install make...Success!

Page 8: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> gem install rails

Page 9: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> gem install railsFetching: nokogiri-1.6.7.2.gem (100%)Building native extensions. This could take a while...ERROR: Error installing rails:ERROR: Failed to build gem native extension.

/usr/bin/ruby1.9.1 extconf.rbchecking if the C compiler accepts ... yesBuilding nokogiri using packaged libraries.Using mini_portile version 2.0.0.rc2checking for gzdopen() in -lz... nozlib is missing; necessary for building libxml2*** extconf.rb failed ***

Page 10: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Hmm. Time to visit StackOverflow.

Page 11: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> sudo apt-get install zlib1g-dev...Success!

Page 12: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> gem install rails

Page 13: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> gem install railsBuilding native extensions. This could take a while...ERROR: Error installing rails:ERROR: Failed to build gem native extension.

/usr/bin/ruby1.9.1 extconf.rbchecking if the C compiler accepts ... yesBuilding nokogiri using packaged libraries.Using mini_portile version 2.0.0.rc2checking for gzdopen() in -lz... yeschecking for iconv... yes

Extracting libxml2-2.9.2.tar.gz into tmp/x86_64-pc-linux-gnu/ports/libxml2/2.9.2... OK*** extconf.rb failed ***

Page 14: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Nokogiri, why do you never install correctly?

Page 15: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> gem install rails...Success!

Page 16: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> rails new my-project> cd my-project> rails start

Page 17: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Finally It Works!

Page 18: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem
Page 19: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

You use the AWS Console to deploy an EC2 instance

Page 20: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> ssh [email protected]

__| __|_ )_| ( / Amazon Linux AMI

___|\___|___|

[ec2-user@ip-172-31-61-204 ~]$ gem install railsERROR: Error installing rails:ERROR: Failed to build gem native extension.

/usr/bin/ruby1.9.1 extconf.rb

Page 21: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem
Page 22: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Spend 2 hours trying weird & random suggestions

Replicate your dev environment in AMI

Page 23: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem
Page 24: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Now you urgently have to update all your Rails installations

Page 25: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> bundle update rails

Page 26: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

> bundle update railsBuilding native extensions. This could take a while...ERROR: Error installing rails:ERROR: Failed to build gem native extension.

/usr/bin/ruby1.9.1 extconf.rbchecking if the C compiler accepts ... yesBuilding nokogiri using packaged libraries.Using mini_portile version 2.0.0.rc2checking for gzdopen() in -lz... yeschecking for iconv... yes

Extracting libxml2-2.9.2.tar.gz into tmp/x86_64-pc-linux-gnu/ports/libxml2/2.9.2... OK*** extconf.rb failed ***

Page 27: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem
Page 28: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

WhatAreContainers

Form of application deployment.

Making a process think that it has the

complete operating system &

Dependencies for itself.

Container[kuhn-TAY-ner] , noun

Containers to the rescue?

Page 29: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

WhyShouldyoucare?

Source:Datadog usagestats

DockerHosts

Page 30: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Runs AnywhereUp in Seconds Massive Scale

Page 31: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Howtocreateacontainerizedapplication?

</>

.NET

Page 32: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

SECURING CONTAINERS ON THE HOST

Control Groups

Namespaces

Capabilities

CPU

Page 33: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Lets deploy our Ruby application as a container

Page 34: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem
Page 35: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Dockerfile Example

</>

Page 36: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

August16th 2017

Page 37: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

• ExploitedApacheStrutsVulnerability• 143Millioncustomers impacted• AttackoccurredfrommidMaytoJulypriortodetection• Equifaxhackshaved$4B,orabout25%ofthecompanymarket

cap

September7th 2017

Page 38: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

1) Apache Struts framework for dynamic web content

2) Arbitrary RCE if REST communication plugin enabled

3) The weakness is caused by how Xstream deserializes

untrusted data represented as XML

CVE-2017-9805/5638inanutshell

Page 39: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

OWASP#1

Injection is #1 application attack vector

Page 40: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

DemoScenarioWithContainersVictim Container

• Apache Struts server using vulnerable struts-2.3.24

Attacker Container

• exploit CVE-2017-9805 using the victim as target

• Python based exploit

• Uploads a simple web shell as a web application to the

victim

Page 41: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem
Page 42: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

Demo

Page 43: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

WhatifEquifaxwereusingcontainers?

Attack Success Criteria

1. Compromise server

2. Remain persistent

3. Access additional internal resources

4. Exfiltration of sensitive (PII) data

Page 44: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

• Container Compromised and Not Host

• Container breakout = kernel exploit

• Less persistent (Average container life 6 hours!)

• Minimal lateral network movement

• Micro Service = Reduced Attack Surface

Page 45: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem
Page 46: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

FileUse

LearnandApplyLeastPrivileges

Secrets

ResourceUseUserPrivileges

ImageIntegrity

Volumes

NetworkUse

Executables

BusinessFunction

ShrinkWrappingContainer

• EachMicro-servicesshoulddoverylittle• Learnnormalbehaviorandblockanythingelse(Shell.war)• Segmentnetworkingon,andbetween containersonsamehost

Page 47: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

So...

Do Containers Enhance Security?

Page 48: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem
Page 49: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

</>

.NET

Docker Image Docker Host

Read Only

Page 50: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem
Page 51: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

ContainerSecurityConcerns

• DeveloperControlsFullStack

• Unauthorizedimages

• OpenSourcevulnerabilities

• EastToWestTraffic

• Privilegeescalation(Dirtyc0w?)

• Hostresourceimpact:(){ :|:& };:• SecretsManagement

Attacker

Host1 Host2

Application

Application

AuthenticatedUser

Page 52: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

CallToAction

Page 53: Do Containers EnhanceApplicationLevel Security?€¦ · * Thanks To Jim Brickman@gruntwork.io > gem install rails > gem install rails Fetching: i18n-0.7.0.gem (100%) Fetching: json-1.8.3.gem

[email protected]

Thank You!