SlideShare a Scribd company logo
Quentin Machu
@Quentin__M | quentin.machu@coreos.com
Clair
A Container Image Security Analyzer
We’re hiring in all departments! Email: careers@coreos.com Positions: coreos.com/ careers
90+ Projects on GitHub, 1,000+ Contributors
OPEN SOURCE
CoreOS.com - @coreoslinux - github/coreos
Secure solutions, support plans, training + more
ENTERPRISE
sales@coreos.com - tectonic.com - quay.io
CoreOS is Running the World’s Containers
Secure the Internet
MISSION
2
Clair, A Container Image Security Analyzer
Storytelling()
A traditional deployment
5
But … wait
6
A containerized deployment
7
A container in practice ...
8
Is that all ?
9
Clair, A Container Image Security Analyzer
CVE-2015-0235
aka
GHOST
“GHOST is a buffer overflow bug affecting the gethostbyname() and
gethostbyname2() function calls in the glibc library. This vulnerability
allows a remote attacker that is able to make an application call to either of
these functions to execute arbitrary code.”
11
CVE-2014-0160
aka
Heartbleed
“The TLS and DTLS implementations in OpenSSL do not properly handle
Heartbeat Extension packets, which allows remote attackers to obtain
sensitive information from process memory via crafted packets that trigger
a buffer over-read.”
12
76K
Vulnerabilities
13
How do we make this better for
developers?
Open source project for the static analysis of
vulnerabilities in appc and docker containers.
github.com/coreos/clair
15
Showtime()
- Static analysis
- Do the job only once
- Suggest & Notify
- Built as a framework
Clair in a few points
17
Static analysis
CONTEXT
Millions of container images
- Running these containers is expensive
- Running any untrusted container is unsafe
- “We need to go deeper”
- Secure solutions can become pretty complex
- Several dynamic analysis tools exist
- Requires human input and guidance
18
- Extract and store enough to inform about both known
and future vulnerabilities
- Reuse analysis data as much as possible
Do the job only once
CONTEXT
Millions of container images
Over 15 new vulnerabilities / day
What happens when new vulnerabilities are published ?
19
“I read your security report about my container, but …
what can I actually do?”
Here, look, here’s what you can easily fix.
“I feel confident about my container now. I’m lazy though and
don’t want to check the report again. Tell me as soon as
there’s something new that I should be concerned about”
Sure. Where can I contact you?
Suggest & Notify
20
Built as a framework
Open Source and Extensibility
are the heart and soul of Clair
v1.1.021
Built as a framework
- Detectors
type FeaturesDetector interface {
GetRequiredFiles() []string
Detect(map[string][]byte) ([]database.FeatureVersion, error)
}
v1.1.0
type NamespaceDetector interface {
GetRequiredFiles() []string
Detect(map[string][]byte) *database.Namespace
}
type DataDetector interface {
Supported(path string, format string) bool
Detect(layerReader io.ReadCloser, toExtract []string, maxFileSize int64) (data map[string][]byte, err error)
}
22
Built as a frameworktype Fetcher interface {
FetchUpdate(database.Datastore) (FetcherResponse, error)
Clean()
}
Built as a framework
- Vulnerability Updaters / Notifiers
type Notifier interface {
Configure(config.NotifierConfig) (bool, error)
Send(database.VulnerabilityNotification) error
}
v1.1.023
type Datastore interface {
ListNamespaces() ([]Namespace, error)
InsertLayer(Layer) error
FindLayer(name string, withFeatures, withVulnerabilities bool) (Layer, error)
DeleteLayer(name string) error
ListVulnerabilities(namespaceName string, limit int, page int) ([]Vulnerability, int, error)
InsertVulnerabilities(vulnerabilities []Vulnerability, createNotification bool) error
FindVulnerability(namespaceName, name string) (Vulnerability, error)
DeleteVulnerability(namespaceName, name string) error
InsertVulnerabilityFixes(vulnerabilityNamespace, vulnerabilityName string, fixes []FeatureVersion) error
DeleteVulnerabilityFix(vulnerabilityNamespace, vulnerabilityName, featureName string) error
GetAvailableNotification(renotifyInterval time.Duration) (VulnerabilityNotification, error)
GetNotification(name string, limit int, page PageNumber) (VulnerabilityNotification, PageNumber, error)
SetNotificationNotified(name string) error
DeleteNotification(name string) error
InsertKeyValue(key, value string) error
GetKeyValue(key string) (string, error)
Lock(name string, owner string, duration time.Duration, renew bool) (bool, time.Time)
Unlock(name, owner string)
FindLock(name string) (string, time.Time, error)
Ping() bool
Close()
}
Built as a framework
- Datastores
v1.1.024
- Image format: appc, Docker
- Operating systems: Debian, Ubuntu, CentOS
- Detection: package managers (dpkg, rpm)
- Vulnerability sources: Distribution-specific
- Database: PostgresSQL 9.4+
- Notification: Webhook
What does it currently support ?
v1.1.025
- Revisit database implementation
- MySQL Support (Huawei)
- Improve release distribution
- Embed migrations
- Address client UX
- Integrate a solid command-line tool (Wemanity)
- Expand detection capabilities
- Add Alpine Linux support (goo.gl/TSkCxM)
- Implement npm (Huawei), python, OWASP
- Anything you’d like to see!
What’s next?
v1.1.026
coreos.com/fest - @coreosfest
May 9 & 10, 2016 - Berlin, Germany
Thank you!
We’re hiring in all departments! Email: careers@coreos.com Positions: coreos.com/ careers
Quentin Machu
@Quentin__M | quentin.machu@coreos.com

More Related Content

PPTX
Tectonic Summit 2016: The Origins of Kubernetes
PDF
Kube-AWS
PDF
KubeCon EU 2016: Killing containers to make weather beautiful
PDF
Introduction to CircleCI
PDF
Automatically Renew Certificated In Your Kubernetes Cluster
PDF
How to integrate Kubernetes in OpenStack: You need to know these project
PPTX
How to Achieve Canary Deployment on Kubernetes
PDF
Kubernetes Hands-On Guide
Tectonic Summit 2016: The Origins of Kubernetes
Kube-AWS
KubeCon EU 2016: Killing containers to make weather beautiful
Introduction to CircleCI
Automatically Renew Certificated In Your Kubernetes Cluster
How to integrate Kubernetes in OpenStack: You need to know these project
How to Achieve Canary Deployment on Kubernetes
Kubernetes Hands-On Guide

What's hot (20)

PPTX
GKE vs OpenStack Magnum
PDF
Microservices at scale with docker and kubernetes - AMS JUG 2017
PPTX
Monitoring, Logging and Tracing on Kubernetes
PDF
Cantainer CI/ CD with Kubernetes
PDF
Moby and Kubernetes entitlements
PPTX
Tectonic Summit 2016: Kubernetes 1.5 and Beyond
PDF
Docker Summit 2016 - Kubernetes: Sweets and Bitters
PDF
Demystfying container-networking
PDF
Integration kubernetes with docker private registry
PDF
AWS ECSを用いてbatchを動かそう
PPTX
Kubernetes Introduction
PDF
Kubernetes on aws
PDF
From dev to prod: Kubernetes on AWS (short ver.)
PDF
DockerCon EU 2015: Trading Bitcoin with Docker
PPTX
Introduction kubernetes 2017_12_24
PDF
It takes a Village to do the Impossible - Jeff Lindsay
PDF
Discovering Docker Volume Plugins and Apps using VirtualBox
PDF
CI / CD / CS - Continuous Security in Kubernetes
PDF
Rex gke-clustree
PDF
Docker for mere mortals
GKE vs OpenStack Magnum
Microservices at scale with docker and kubernetes - AMS JUG 2017
Monitoring, Logging and Tracing on Kubernetes
Cantainer CI/ CD with Kubernetes
Moby and Kubernetes entitlements
Tectonic Summit 2016: Kubernetes 1.5 and Beyond
Docker Summit 2016 - Kubernetes: Sweets and Bitters
Demystfying container-networking
Integration kubernetes with docker private registry
AWS ECSを用いてbatchを動かそう
Kubernetes Introduction
Kubernetes on aws
From dev to prod: Kubernetes on AWS (short ver.)
DockerCon EU 2015: Trading Bitcoin with Docker
Introduction kubernetes 2017_12_24
It takes a Village to do the Impossible - Jeff Lindsay
Discovering Docker Volume Plugins and Apps using VirtualBox
CI / CD / CS - Continuous Security in Kubernetes
Rex gke-clustree
Docker for mere mortals
Ad

Viewers also liked (20)

PPT
113 online suicide prevention: First two year results presented at the ESSSB1...
PDF
bw_proposal_hospitality
PDF
Instruction manual of ALK-88 ultra-mini optic fiber fusion splicer with speci...
PDF
Certificates
PDF
presentation
PPTX
Pies en polvorosa.
PDF
The value proposition of the IT unit of the future
PDF
MundoOfertas muestras gratis en Kallejeo.com: "Quiero ir a..." 020511
PDF
CR2O Flyer 2016
PPTX
Obert 24h els perills d´internet
PPTX
TpM2016: Sanfte Mobilität in Berggebieten: Erfolgreiche Beispiele
PPTX
Mobile web is dead heres why
PDF
Social media marketing: comunicare e creare relazioni all’epoca del web 2.0”...
PDF
Ejercicio escalas1 (1)
PDF
Conoce BMA
PDF
Revista Senior Class número 8
PPTX
Didáctica crítica
PDF
Manual de semillas forestales a producir en viveros forestales
PPSX
Jlmf22 presentacion 2013
PPS
Jamás Permitas.
113 online suicide prevention: First two year results presented at the ESSSB1...
bw_proposal_hospitality
Instruction manual of ALK-88 ultra-mini optic fiber fusion splicer with speci...
Certificates
presentation
Pies en polvorosa.
The value proposition of the IT unit of the future
MundoOfertas muestras gratis en Kallejeo.com: "Quiero ir a..." 020511
CR2O Flyer 2016
Obert 24h els perills d´internet
TpM2016: Sanfte Mobilität in Berggebieten: Erfolgreiche Beispiele
Mobile web is dead heres why
Social media marketing: comunicare e creare relazioni all’epoca del web 2.0”...
Ejercicio escalas1 (1)
Conoce BMA
Revista Senior Class número 8
Didáctica crítica
Manual de semillas forestales a producir en viveros forestales
Jlmf22 presentacion 2013
Jamás Permitas.
Ad

Similar to Clair, A Container Image Security Analyzer (20)

PDF
Serial Killer - Silently Pwning your Java Endpoints // OWASP BeNeLux Day 2016
PDF
The art of messaging tune (Joker 2015 edition)
PDF
Docker, Linux Containers, and Security: Does It Add Up?
PDF
Docker, Linux Containers (LXC), and security
PDF
[Wroclaw #7] Why So Serial?
PDF
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
PPTX
Presentation of Python, Django, DockerStack
PPT
JavaSecure
PDF
Better Code through Lint and Checkstyle
PPT
AntiRE en Masse
PDF
2 Roads to Redemption - Thoughts on XSS and SQLIA
PDF
Codetainer: a Docker-based browser code 'sandbox'
PDF
PVS-Studio vs Chromium
PDF
PVS-Studio vs Chromium
PPTX
Protect Your Payloads: Modern Keying Techniques
PPTX
Docker practical solutions
PPTX
Software Bertillonage: Finding the Provenance of an Entity
PDF
Online Meetup: Why should container system / platform builders care about con...
PDF
The Future of Web Attacks - CONFidence 2010
PDF
Common primitives in Docker environments
Serial Killer - Silently Pwning your Java Endpoints // OWASP BeNeLux Day 2016
The art of messaging tune (Joker 2015 edition)
Docker, Linux Containers, and Security: Does It Add Up?
Docker, Linux Containers (LXC), and security
[Wroclaw #7] Why So Serial?
Containers, docker, and security: state of the union (Bay Area Infracoders Me...
Presentation of Python, Django, DockerStack
JavaSecure
Better Code through Lint and Checkstyle
AntiRE en Masse
2 Roads to Redemption - Thoughts on XSS and SQLIA
Codetainer: a Docker-based browser code 'sandbox'
PVS-Studio vs Chromium
PVS-Studio vs Chromium
Protect Your Payloads: Modern Keying Techniques
Docker practical solutions
Software Bertillonage: Finding the Provenance of an Entity
Online Meetup: Why should container system / platform builders care about con...
The Future of Web Attacks - CONFidence 2010
Common primitives in Docker environments

More from CoreOS (14)

PDF
Tectonic Summit 2016: Managing 6 PB of Earth Imagery with Kubernetes
PPTX
Tectonic Summit 2016: It's Go Time
PPTX
Tectonic Summit 2016: Betting on Kubernetes
PPTX
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for Unknowns
PPTX
Tectonic Summit 2016: Networking for Kubernetes
PPTX
Tectonic Summit 2016: Multitenant Data Architectures with Kubernetes
PPTX
Tectonic Summit 2016: Brandon Philips, CTO of CoreOS, Keynote
PPTX
Tectonic Summit 2016: Ticketmaster's Public Cloud & Kubernetes Strategy
PPTX
Tectonic Summit 2016: Alex Polvi, CEO of CoreOS, Keynote
PPTX
Tectonic Summit 2016: CoreOS Tectonic on AWS
PPTX
Tectonic Summit 2016: Preparing for Cloud Native
PDF
Etcd- Mission Critical Key-Value Store
PDF
Tectonic Summit 2015: Containers Across the Cloud and Data Center
PPTX
CoreOS in a Nutshell
Tectonic Summit 2016: Managing 6 PB of Earth Imagery with Kubernetes
Tectonic Summit 2016: It's Go Time
Tectonic Summit 2016: Betting on Kubernetes
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for Unknowns
Tectonic Summit 2016: Networking for Kubernetes
Tectonic Summit 2016: Multitenant Data Architectures with Kubernetes
Tectonic Summit 2016: Brandon Philips, CTO of CoreOS, Keynote
Tectonic Summit 2016: Ticketmaster's Public Cloud & Kubernetes Strategy
Tectonic Summit 2016: Alex Polvi, CEO of CoreOS, Keynote
Tectonic Summit 2016: CoreOS Tectonic on AWS
Tectonic Summit 2016: Preparing for Cloud Native
Etcd- Mission Critical Key-Value Store
Tectonic Summit 2015: Containers Across the Cloud and Data Center
CoreOS in a Nutshell

Recently uploaded (20)

PDF
Advanced Soft Computing BINUS July 2025.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPT
Teaching material agriculture food technology
PDF
Advanced IT Governance
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Approach and Philosophy of On baking technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
Advanced Soft Computing BINUS July 2025.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Understanding_Digital_Forensics_Presentation.pptx
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
Reach Out and Touch Someone: Haptics and Empathic Computing
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Chapter 3 Spatial Domain Image Processing.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Teaching material agriculture food technology
Advanced IT Governance
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Unlocking AI with Model Context Protocol (MCP)
Per capita expenditure prediction using model stacking based on satellite ima...
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Approach and Philosophy of On baking technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf

Clair, A Container Image Security Analyzer

  • 1. Quentin Machu @Quentin__M | quentin.machu@coreos.com Clair A Container Image Security Analyzer
  • 2. We’re hiring in all departments! Email: careers@coreos.com Positions: coreos.com/ careers 90+ Projects on GitHub, 1,000+ Contributors OPEN SOURCE CoreOS.com - @coreoslinux - github/coreos Secure solutions, support plans, training + more ENTERPRISE sales@coreos.com - tectonic.com - quay.io CoreOS is Running the World’s Containers Secure the Internet MISSION 2
  • 8. A container in practice ... 8
  • 11. CVE-2015-0235 aka GHOST “GHOST is a buffer overflow bug affecting the gethostbyname() and gethostbyname2() function calls in the glibc library. This vulnerability allows a remote attacker that is able to make an application call to either of these functions to execute arbitrary code.” 11
  • 12. CVE-2014-0160 aka Heartbleed “The TLS and DTLS implementations in OpenSSL do not properly handle Heartbeat Extension packets, which allows remote attackers to obtain sensitive information from process memory via crafted packets that trigger a buffer over-read.” 12
  • 14. How do we make this better for developers?
  • 15. Open source project for the static analysis of vulnerabilities in appc and docker containers. github.com/coreos/clair 15
  • 17. - Static analysis - Do the job only once - Suggest & Notify - Built as a framework Clair in a few points 17
  • 18. Static analysis CONTEXT Millions of container images - Running these containers is expensive - Running any untrusted container is unsafe - “We need to go deeper” - Secure solutions can become pretty complex - Several dynamic analysis tools exist - Requires human input and guidance 18
  • 19. - Extract and store enough to inform about both known and future vulnerabilities - Reuse analysis data as much as possible Do the job only once CONTEXT Millions of container images Over 15 new vulnerabilities / day What happens when new vulnerabilities are published ? 19
  • 20. “I read your security report about my container, but … what can I actually do?” Here, look, here’s what you can easily fix. “I feel confident about my container now. I’m lazy though and don’t want to check the report again. Tell me as soon as there’s something new that I should be concerned about” Sure. Where can I contact you? Suggest & Notify 20
  • 21. Built as a framework Open Source and Extensibility are the heart and soul of Clair v1.1.021
  • 22. Built as a framework - Detectors type FeaturesDetector interface { GetRequiredFiles() []string Detect(map[string][]byte) ([]database.FeatureVersion, error) } v1.1.0 type NamespaceDetector interface { GetRequiredFiles() []string Detect(map[string][]byte) *database.Namespace } type DataDetector interface { Supported(path string, format string) bool Detect(layerReader io.ReadCloser, toExtract []string, maxFileSize int64) (data map[string][]byte, err error) } 22
  • 23. Built as a frameworktype Fetcher interface { FetchUpdate(database.Datastore) (FetcherResponse, error) Clean() } Built as a framework - Vulnerability Updaters / Notifiers type Notifier interface { Configure(config.NotifierConfig) (bool, error) Send(database.VulnerabilityNotification) error } v1.1.023
  • 24. type Datastore interface { ListNamespaces() ([]Namespace, error) InsertLayer(Layer) error FindLayer(name string, withFeatures, withVulnerabilities bool) (Layer, error) DeleteLayer(name string) error ListVulnerabilities(namespaceName string, limit int, page int) ([]Vulnerability, int, error) InsertVulnerabilities(vulnerabilities []Vulnerability, createNotification bool) error FindVulnerability(namespaceName, name string) (Vulnerability, error) DeleteVulnerability(namespaceName, name string) error InsertVulnerabilityFixes(vulnerabilityNamespace, vulnerabilityName string, fixes []FeatureVersion) error DeleteVulnerabilityFix(vulnerabilityNamespace, vulnerabilityName, featureName string) error GetAvailableNotification(renotifyInterval time.Duration) (VulnerabilityNotification, error) GetNotification(name string, limit int, page PageNumber) (VulnerabilityNotification, PageNumber, error) SetNotificationNotified(name string) error DeleteNotification(name string) error InsertKeyValue(key, value string) error GetKeyValue(key string) (string, error) Lock(name string, owner string, duration time.Duration, renew bool) (bool, time.Time) Unlock(name, owner string) FindLock(name string) (string, time.Time, error) Ping() bool Close() } Built as a framework - Datastores v1.1.024
  • 25. - Image format: appc, Docker - Operating systems: Debian, Ubuntu, CentOS - Detection: package managers (dpkg, rpm) - Vulnerability sources: Distribution-specific - Database: PostgresSQL 9.4+ - Notification: Webhook What does it currently support ? v1.1.025
  • 26. - Revisit database implementation - MySQL Support (Huawei) - Improve release distribution - Embed migrations - Address client UX - Integrate a solid command-line tool (Wemanity) - Expand detection capabilities - Add Alpine Linux support (goo.gl/TSkCxM) - Implement npm (Huawei), python, OWASP - Anything you’d like to see! What’s next? v1.1.026
  • 27. coreos.com/fest - @coreosfest May 9 & 10, 2016 - Berlin, Germany
  • 28. Thank you! We’re hiring in all departments! Email: careers@coreos.com Positions: coreos.com/ careers Quentin Machu @Quentin__M | quentin.machu@coreos.com

Editor's Notes

  • #14: And that’s not all, NVD Some of these vulns became so important that … In one hand, we have fast-paced developers deploying all sort of containers, and in the other hand, we have thousands of vulnerabilities awaiting to be exploited and lead to critical data leak / loss.
  • #15: With containerized applications and the rise of cluster managers, the way security assessment is realized changed. Dependency management shifted away from the op teams to the developers - and that bring them a new set of responsabilities. To help developers identifying the vulnerabilities that may threaten their containers, we recently built Clair.
  • #17: Before explaining how it works, I would like to show you what insights Clair can provide through the demo of its integration with Quay, our secure container image registry.
  • #18: I’ll describe Clair with 4 points
  • #20: Basically it stores everything it can detect using the static analysis. And because of the immutable nature of container images, that knowledge can be crossmatched with vulnerability databases, now and in the future in order to determine the vulnerabilities that may affect these images. Additionally, Clair does this for every layer that compose an image, which means that it could re-use analysis data across multiple images that may share the same layers.
  • #21: … Clair also recognizes that people are lazy.