프로그램분석 기술과 sw 보안 airac 의 예를통해서

30
프프프프프프 프프프 sw 프프 Airac 프 프프프프프 프프프 프프프프프 프프프 프프프 프프프프프프 3/28/2005 @ NSRI

Upload: lindsay

Post on 14-Jan-2016

57 views

Category:

Documents


0 download

DESCRIPTION

프로그램분석 기술과 sw 보안 Airac 의 예를통해서. 이광근 프로그래밍 연구실 서울대 컴퓨터공학부. 3/28/2005 @ NSRI. 차례. 프로그램 분석 기술 소개 Airac 소개 소프트웨어 보안 / 보증에의 응용 ( 안 ) Airac 시연. 프로그래밍 연구실 + 프로그램 분석 시스템 연구단. 1995-2003 KAIST, 2003-now SNU 1998-2003 과기부 창의적연구 진흥사업 지정 프로그램분석 시스템 연구단 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램분석 기술과 sw 보안Airac 의 예를통해서

이광근프로그래밍 연구실

서울대 컴퓨터공학부3/28/2005 @ NSRI

Page 2: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

차례1. 프로그램 분석 기술 소개2. Airac 소개3. 소프트웨어 보안 / 보증에의 응용 ( 안 )4. Airac 시연

Page 3: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그래밍 연구실 +

프로그램 분석 시스템 연구단

• 1995-2003 KAIST, 2003-now SNU• 1998-2003 과기부 창의적연구 진흥사업

지정 프로그램분석 시스템 연구단• 목표 : 무결점 소프트웨어를 만들고 확인할 수 있는

원천 기술 연구 “The Open Problem in Computer Science”

Page 4: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

원천 기술

프로그램 분석기술 static program analysis

실행전에 실행성질을 자동으로

안전하게 어림잡는 일반적인 방법

Page 5: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램 분석static program analysis

• “ 실행전” : 프로그램을 돌리기 전에• “ 실행성질” : 실행중의 프로그램 성질• “ 자동으로” : 프로그램이 프로그램을 분석• “ 안전하게” : 모든 실제상황을 포섭• “ 어림잡는” : 군더더기가없을 순 없다• “ 일반적인” : 대상 소스 언어와 실행성질이

무제한

Page 6: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램 분석기술의 쓰임새• 프로그램의 오류 자동 검증

– 실행중에 이러이러하면 안되는 데 , 혹시 ?– “ 오류”의 정의에 따라서 다양하게 : “ 보안 오

류”• 프로그램 최적화를 위한 정보제공

– 이 부분은 중복되는 일을 하는군– 이 부분은 자원을 필요이상으로 소모하는군

• 프로그램 이해 / 관리를 위한 정보제공– 이 변수와 관계되는 프로그램 부분들만– 프로그램이 어느 테이블을 건드리는지

Page 7: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램 분석 기술들• 프로그램 분석 (static program analysis)

– 요약해석 (abstract interpretation)– 타입시스템 (type system)– 자료흐름분석 (data flow analysis)– 자동증명 (theorem proving)– 모델검증 (model checking)

• 20-30 년 동안 학교에서 무르익은 기술• 위의 기술의 조합이 이제 비로소 실용적인

모습으로 현장으로 퍼지고 있슴

Page 8: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램분석 기술이 실제에 적용된 예

• Microsoft (2002 년 - 현재 )– device driver sw 검증에 적용– 안전한 , 오류없는 sw 개발에 집중 : 요즘 Bill Gates

연설의 기초• AirBus (2002 년 - 현재 )

– aviation controller 모듈 sw 검증에 적용– AirBus sw 개발 프로세스의 표준으로 프로그램분석 과정을

포함• 삼성전자 소프트웨어 센터 (2004 년 - 현재 )

– Airac: 다양한 sw 검증에 적용• 이기술에 특화된 회사들 등장 :

– AbsInt, Coverity, PolySpace technologies, Trusted Logic, GrammaTech, Esterel Technologies, etc.

Page 9: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램의 실행

time

Value = Int U Real U Addr U Tree U Exception

val(x)

val(*p)

val(p)

1 2 11 3 4 5 11 3 4 5 11 3 4 5 22 8 9 8 9 8 9 2 3 4 99 2 3 4 99 2 3 4

Page 10: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램의 분석 : 요약실행

pgm point

V = I U R U A U T U E

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

v(x)

v(*p)

v(p)

Page 11: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램의 실행

time

Value = Int U Real U Addr U Tree U List U Exception

v(x)

v(y)

1 2 11 3 4 5 11 3 4 5 11 3 4 5 22 8 9 8 9 8 9 2 3 4 99 2 3 4 99 2 3 4

Page 12: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램의 분석 : 오류 검증

pgm point

V = I U R U A U T U E

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

v(x)

v(*p)v(y)

Page 13: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램의 실행

time

Value = Int U Real U Addr U Tree U List U Exception

val(x)

val(y)

1 2 11 3 4 5 11 3 4 5 11 3 4 5 22 8 9 8 9 8 9 2 3 4 99 2 3 4 99 2 3 4

Page 14: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램의 분석 : 허위경보

pgm point1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

v(x)

v(y)

프로그램 분석의 정확도 문제

V = I U R U A U T U E

Page 15: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램의 실행

time

Value = Int U Real U Addr U Tree U List U Exception

val(x-y)

1 2 11 3 4 5 11 3 4 5 11 3 4 5 22 8 9 8 9 8 9 2 3 4 99 2 3 4 99 2 3 4

0

Page 16: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램의 분석 : 관계형분석

pgm point

V = I U R U A U T U E

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

0

v(x-y)

Page 17: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

프로그램 분석의 3- 스텝입력 : 프로그램• step1: “ 연립방정식”을 세운다

– 모든것이 요약된 세계에서 (abstract domain)– 모든 프로그램의 상태가 어떻게 변화되 가는지

(abstract execution flow)

• step2: 그 방정식을 푼다• step3: 그 해를 가지고 결론을 내린다

– 있는가 없는가 ? 같은가 다른가 ?

Page 18: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

AiracStatic Analyzer for Automatic

Verification of Array Index Ranges in C Programs

Page 19: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

Airac

• C 프로그램의 메모리접근 오류 자동 검출 int *c = (int *)malloc(sizeof(int)*10);

c[i] = 1; c[i + f()] = 1; c[*k + (*g)()] = 1; x = c; x[1] = 1; y = c + f(); y[*(y+1)] = 1; z->a = c; (z->a)[i] = 1; foo(c+2); int foo(int *d) {… d[i] = 1; …}

Page 20: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

Airac keywords

• C: analyzes ANSI C + (GNU) program– pointers(array, procedure)– controls(procedure, return, break, goto)– intra- and inter-procedural

• statically: no test runs• all: complete, no un-noticed bug• automatic: a software • always stops: for infinite-loop programs• modular: for large programs• correct: solid theoretical foundation

Page 21: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

Airac: performance (1/3)(commercial softwares)

X Softwares AlarmsReal

ErrorsLOC

Time(min)

검증용 Code 46 34 4,688 306

UPnP 18 9 280,379 8

MobileDRM 196 56 3,584,664 789

TFS4 78 15 119,211 82

EsWin 435 7 806,829 112

SecureMMC 197 112 517,314 8

Page 22: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

Airac: performance (2/3)Linux kernel

2.6.4Alarms

RealErrors

LOCTime(sec)

vmax302.c 1 1 246 0.28

xfrm_user.c 2 1 1,201 45.07

usb-midi.c 10 4 2,206 91.32

atkbd.c 2 2 811 1.99

keyboard.c 2 1 1,256 3.36

af_inet.c 1 1 1,273 1.17

eata_pio.c 3 1 984 7.50

cdc_acm.c 3 3 849 3.98

ip6_output.c 0 0 1,110 1.53

mptbase.c 1 1 6,158 0.79

aty128fb.c 1 1 2,466 0.32

Page 23: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

Airac: performance (3/3)

GNU Softwares

AlarmsReal

ErrorsLOC

Time(sec)

tar-1.13 66 1 20,258 577

bison-1.875 50 0 15,907 809

sed-4.0.8 29 0 6,053 1154

gzip-1.2.4a 17 0 7,327 794

grep-2.5.1 2 0 9,297 604

Page 24: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

Airac: scalability

Page 25: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

Airac vs Swat (1/3)( 국제경쟁력 )

Linux kernel 2.6.4 SWAT (Stanford)

AIRAC ( 서울대 )

Found Errors

Found Errors

/drivers/mtd/maps/vmax301.c 1 1

/net/xfrm/xfrm_user.c 1 1

/drivers/usb/class/usb-midi.c 2 2

/drivers/input/keyboard/atkbd.c 2 2

/drivers/char/keyboard.c 1 1

/net/ipv4/af_inet.c 1 1

/drivers/scsi/eata_pio.c 1 1

/drivers/usb/class/cdc-acm.c (*) 1 3

/net/ipv6/ip6_output.c (**) 1 0

/drivers/message/fusion/mptbase.c 1 1

/drivers/video/aty/aty128fb.c 1 1

Page 26: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

Airac vs Swat (2/3)

Bugs

Airac

Coverity

Page 27: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

Airac vs Swat (3/3)구분 SWAT (Coverity 社 ) AIRAC ( 서울대 )

에러 검출력 62% detect 율 (8/13) 100% detect 율 (13/13)

TFS4 적용결과

#Alarms: 19 buffers#Real Errors: 2 buffers#False Alarms: 17 buffersTime: 7 min

#Alarms: 78#Real Errors: 15 access (5 buffers)#False Alarms: 63 access (18 buffers)Time: 82 min

UPnP 적용결과

#Alarms: 2 buffers#Real Errors: 2 buffers#False Alarms: 0 buffersTime: 4 min

#Alarms: 18#Real Errors: 9 access (2 buffers)#False Alarms: 9 access (6 buffers)Time: 8 min

Page 28: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

소프트웨어 보안 / 보증에의 응용 (1/2)

• sw 보안 / 보증 고도화 및 자동화 엔진 개발– sw 보안 오류 자동 검출기 라이브러리 개발– 사용자 (NSRI agents) 교육 / 컨설팅

• 효과– sw 보안 기술력 확장 – sw 보증 공신력 신장

NSRI 고유의 secret weapon 확보

Page 29: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

소프트웨어 보안 / 보증에의 응용 (2/2)

• 보안 오류 인증– “X family” 개발 : 보안 오류들의 자동 검출기– 보안오류 1: 알려진 해킹기법으로 뚤릴 수 있다– 보안오류 2: 실행 관련 정보가 외부로 유출될 수 있다 – 대상소스 : Java, C, C++, C#, 웹소스 언어…

• 논리 오류 검증에 기초– “Airac family” 개발 : 논리 오류들의 자동 검출기– 논리오류 : buffer overrun, null dereference, …– 대상소스 : C, C++, Java, C#, 웹소스 언어

sw 보안 / 보증 고도화 및 도구 개발

Page 30: 프로그램분석 기술과  sw 보안 Airac 의 예를통해서

감사합니다

ropas.snu.ac.kr/airac