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. 프로그램을 실행하면 프로세스가 된다!
'Study > Software Security' 카테고리의 다른 글
[소프트웨어보안] 컴퓨터의 구조 및 소프트웨어 실행 원리, C언어와 어셈블리어의 이해 (0) | 2022.10.19 |
---|---|
[소프트웨어보안] 소프트웨어의 정적 분석 방법 (0) | 2022.10.12 |
[소프트웨어보안] Security advisories, CVE (0) | 2022.10.12 |
[소프트웨어보안] 소프트웨어의 개발 절차 및 보안관리, 취약점에 대한 Public Advisory (0) | 2022.10.05 |
[소프트웨어보안] Argc/Argv Programming, sscanf (0) | 2022.10.05 |