14
Detecting vulnerabilities in highly concurrent software Alastair F. Donaldson Multicore Programming Group

Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Detecting vulnerabilities in

highly concurrent software

Alastair F. Donaldson

Multicore Programming Group

Page 2: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Analysis, Verification and Testing at

Imperial (INVEST)

Philippa Cristian Ally

Practical techniques

for improving SW

reliability and security

Reasoning about

web and concurrent

programs

Automated program

analysis for multi-/

many-core software

Part of Programming

Languages and Systems

at Imperial

More broadly: part of buzzing

“London-Cambridge-Oxford”

Programming Languages community

Page 3: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Multicore Programming Group

GPU software

verification

Systematic

Concurrency Testing

Programming language

and memory models

Many-core

compiler validation

Nathan DanJeroen

EthelPaul

Andrei Chris

Adam

PantazisJohn

Page 4: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Many PEs

Processing

element (PE)

Private memory

Organised

into groupsLocal memory

Local memory

Local memory

PEs in same

group share

memory

All PEs share

global memory

Glo

bal m

em

ory

Many-core processors: GPUs

Page 5: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Memory safety errors in parallel programs

Intra-group

data race

Inter-group

data race

Errors can be security critical as GPUs are widely deployed

Out of

bounds!

WebCL and RenderScript – emerging standards for GPUs

in web and embedded programs

Page 6: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

GPUVerify: static verification for GPU

kernels

Leverages dramatic advances in static verification to:

- Find defects

- Prove absence of defects

in many-core software

Industrial support from:

Industrial impact: Mali Graphics debugger

3rd party showcase

Identified software defects

Page 8: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Community recognition for tech transfer

Page 9: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Community recognition for tech transfer

Page 10: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Systematic concurrency testing

Intercept OS scheduler

Explore schedule space

Apply state-space reduction and

schedule prioritization to find bugs

Page 12: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Compiler vulnerability analysis

Random differential

testing

24

We are lifting this idea to

many-core compilers

Random.c

gcc clangMicrosoft

compiler

Intel

compiler

24 2442

Discovered defects so far in GPU compilers from all major

vendors

Pioneered by Csmith, University of Utah

Page 13: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Many-core memory models

Not enough time to talk about it!

We have discovered issues with:

OpenCL 2.0 memory model

Compilers from main vendors

Published code examples

GPU chips

All could lead to security vulnerabilities

Builds on pioneering C/C++11 work by

various authors including Mark Batty

and Peter Sewell

(Cambridge)

With:

- Jade Alglave (UCL)

- Mark Batty (Cambridge)

- Ganesh Gopalakrishnan

(Utah)

- Jeroen Ketema

(Imperial)

- Daniel Poetzl (Oxford)

- Tyler Sorensen (UCL)

- John Wickerson

(Imperial)

Interacting with

Page 14: Detecting vulnerabilities in highly concurrent softwareverificationinstitute.org/wp-content/uploads/sites/28/2014/05/Alastair... · WebCL and RenderScript –emerging standards for

Want to know more? Get in touch!

[email protected]

Funding support

Industrial Collaborators

Ethel Bardsley, Adam Betts, Nathan Chong, Pantazis Deligiannis,

Jeroen Ketema, Andrei Lascu, Chris Lidbury, Dan Liew, Paul

Thomson, John Wickerson,

Multicore Programming Group @ Imperial

Academic CollaboratorsJade Alglave (UCL), Mark Batty (Cambridge), Albert Cohen (INRIA),

Ganesh Gopalakrishnan (Utah), Daniel Kroening (Oxford), Daniel

Poetzl (Oxford), Tyler Sorensen (UCL)

AMD, ARM, Codeplay, Facebook, Imagination, Intel,

Microsoft Research, NVIDIA, Realeyes, Rightware