본문 바로가기
Study/Software Security

[소프트웨어보안] SW 보안의 5 요소

by 8희 2022. 9. 28.

1. 소프트웨어보안 실무와 이론의 차이점

실무

- 안전하게 프로그래밍, 보안 이슈 진단

- 언어 사용의 실수, API 내 문제, 암호기술 및 통신 방법의 문제

- 매우 실무적이고 자세히 기술해야 하는 문제

 

이론

- 프로그램 실행 중단의 이유와 이의 해결 방법의 이해

- 자동화 도구를 포함한 최신 기술의 이해

- 개념과 방법론

 


2. 소프트웨어 보안의 일반적인 요소들

1) 위협 (Threats)

- 공격자가 원하고 할 수 있는 것

- 악성코드의 종류: malware, spyware, worm

- 어떻게 악성코드의 감염이 발생하나? (-> 접촉이 있어야 감염 발생!)

- 취약점과 약점(weaknesses)의 분류 필요 (CVE and CWEs)

 

2) 취약점 (Vulnerabilities)

- Overflows

  1) Stack overflow:

  공격자가 입력을 위해 준비된 공간보다 더 큰 데이터를 전송할 때 발생!

  입력은 인접한 데이터 및 리턴 주소를 수정 가능

  프로그램 스택에서 Return address는 데이터가 아닌 control info!

  control info는 프로그램의 실행 경로를 결정

 

  2) BDF

  CVE-2013-6462: BDF라는 폰트 파일에 정보가 잘못 들어가면 발생하는 취약점

  BDF = Bitmap Distribution Format = 어도비사의 현재 사용되지 않는 폰트 포맷

 

  3) advisory-desc

  libXfont sources를 "cppcheck" 프로그램을 사용하여 검증

  -> 프로그램을 실행하면 프로세스가 된다! 이 프로세스를 만드는 과정에서 개입해서 프로젝트의 소유를 갖는 게 USER

  X.org의 개발자 평가 결과, BDF 파일에 긴 문자열이 존재할 때 stack overflow가 발생!

  권한 상승 상태 발생 가능

  -> 모든 X 서버에서 libXfont 프로그램은 사용자 정의 폰트 파일을 읽을 경우가 있다.

  -> X.org 서버는 root 권한으로 실행되거나 setuid로 실행되어 있을 수 있다.

 

4) advisory-versions

5) advisory-fix

  

- Injections

- Race Conditions

- Information Leakage

 

3) 방어기법 (Defenses)

- 다양한 방어 기술의 적용

- 깊이 별 보안 (Defense in Depth)

 

4) 절차 (Processes)

- 안전한 디자인 원칙 준수

- 취약점을 찾기 위한 테스트와 검토

- 코드 보안을 위한 점검 및 측정

 

5) 최신 기술의 이해 (신기술의 적용)

- 소프트웨어 보안의 문제들을 찾기 위한 도구와 방법 (자동화된 버그 탐지)

- 안전이 보장되는 언어의 사용 

 


* 관련 문제 제작

Q1. Stack overflow는 언제 발생하는가?

A1. BDF 파일에 긴 문자열이 존재할 때 발생한다! (BDF 파일이란 어도비사의 현재 사용되지 않는 폰트 포맷 파일)

 

Q2. 프로그램을 실행하면 무엇이 되는가?

A2. 프로그램을 실행하면 프로세스가 된다!