1 / 30

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

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

lindsay
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 프로그램분석 기술과 sw보안Airac의 예를통해서 이광근 프로그래밍 연구실 서울대 컴퓨터공학부 3/28/2005 @ NSRI

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

  3. 프로그래밍 연구실 + 프로그램 분석 시스템 연구단 • 1995-2003 KAIST, 2003-now SNU • 1998-2003 과기부 창의적연구 진흥사업 지정 프로그램분석 시스템 연구단 • 목표: 무결점 소프트웨어를 만들고 확인할 수 있는 원천 기술 연구 “The Open Problem in Computer Science”

  4. 원천 기술 프로그램 분석기술 static program analysis 실행전에 실행성질을 자동으로 안전하게 어림잡는 일반적인 방법

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

  6. 프로그램 분석기술의 쓰임새 • 프로그램의 오류 자동 검증 • 실행중에 이러이러하면 안되는 데, 혹시? • “오류”의 정의에 따라서 다양하게: “보안 오류” • 프로그램 최적화를 위한 정보제공 • 이 부분은 중복되는 일을 하는군 • 이 부분은 자원을 필요이상으로 소모하는군 • 프로그램 이해/관리를 위한 정보제공 • 이 변수와 관계되는 프로그램 부분들만 • 프로그램이 어느 테이블을 건드리는지

  7. 프로그램 분석 기술들 • 프로그램 분석(static program analysis) • 요약해석(abstract interpretation) • 타입시스템(type system) • 자료흐름분석(data flow analysis) • 자동증명(theorem proving) • 모델검증(model checking) • 20-30년 동안 학교에서 무르익은 기술 • 위의 기술의 조합이 이제 비로소 실용적인 모습으로 현장으로 퍼지고 있슴

  8. 프로그램분석 기술이 실제에 적용된 예 • 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.

  9. 프로그램의 실행 Value = Int U Real U Addr U Tree U Exception val(x) val(*p) val(p) time 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

  10. 프로그램의 분석: 요약실행 V = I U R U A U T U E v(x) v(*p) v(p) 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 pgm point

  11. 프로그램의 실행 Value = Int U Real U Addr U Tree U List U Exception v(x) v(y) time 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

  12. 프로그램의 분석: 오류 검증 V = I U R U A U T U E v(x) v(*p) v(y) 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 pgm point

  13. 프로그램의 실행 Value = Int U Real U Addr U Tree U List U Exception val(x) val(y) time 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

  14. 프로그램의 분석: 허위경보 V = I U R U A U T U E v(x) v(y) 프로그램 분석의 정확도 문제 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 pgm point

  15. 프로그램의 실행 Value = Int U Real U Addr U Tree U List U Exception val(x-y) 0 time 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

  16. 프로그램의 분석: 관계형분석 V = I U R U A U T U E v(x-y) 0 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 pgm point

  17. 프로그램 분석의 3-스텝 입력: 프로그램 • step1: “연립방정식”을 세운다 • 모든것이 요약된 세계에서 (abstract domain) • 모든 프로그램의 상태가 어떻게 변화되 가는지 (abstract execution flow) • step2: 그 방정식을 푼다 • step3: 그 해를 가지고 결론을 내린다 • 있는가 없는가? 같은가 다른가?

  18. AiracStatic Analyzer for Automatic Verification of Array Index Ranges in C Programs

  19. 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; …}

  20. 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

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

  22. Airac: performance (2/3)

  23. Airac: performance (3/3)

  24. Airac: scalability

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

  26. Airac vs Swat(2/3) Airac Bugs Coverity

  27. Airac vs Swat (3/3)

  28. 소프트웨어 보안/보증에의 응용(1/2) NSRI 고유의 secret weapon 확보 • sw보안/보증 고도화 및 자동화 엔진 개발 • sw보안 오류 자동 검출기 라이브러리 개발 • 사용자(NSRI agents) 교육/컨설팅 • 효과 • sw보안 기술력 확장 • sw보증 공신력 신장

  29. 소프트웨어 보안/보증에의 응용 (2/2) sw보안/보증 고도화 및 도구 개발 • 보안 오류 인증 • “X family”개발: 보안 오류들의 자동 검출기 • 보안오류1: 알려진 해킹기법으로 뚤릴 수 있다 • 보안오류2: 실행 관련 정보가 외부로 유출될 수 있다 • 대상소스: Java, C, C++, C#, 웹소스 언어… • 논리 오류 검증에 기초 • “Airac family”개발: 논리 오류들의 자동 검출기 • 논리오류: buffer overrun, null dereference, … • 대상소스: C, C++, Java, C#, 웹소스 언어

  30. 감사합니다 ropas.snu.ac.kr/airac

More Related