Without a Break

SW보안의 5요소 본문

Software/소프트웨어보안

SW보안의 5요소

와븨 2022. 9. 26. 00:40

실무와 이론의 차이점

실무 - 안전하게 프로그래밍 하기, 보안 이슈 진단
- 언어사용의 실수, API 내의 문제, 암호기술 및 통신 방법
- 매우 실무적이고 자세히 기술해야 하는 문제
이론 - 프로그램 실행중단의 이유와 이의 해결 방법의 이해
- 자동화 도구를 포함한 최신 기술의 이해
- 개념과 방법론

 

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

  • 위협 (Threats)
  • 취약점 (Vulnerabilities)
  • 방어기법 (Defenses)
  • 절차 (Processes)
  • 최신 기술의 이해

 

위협

  • 공격자가 원하고 할 수 있는 것
  • 악성코드의 종류 : malware, spyware, worm
  • 어떻게 악성코드의 감염이 발생하나? : user가 무언가를 클릭하거나 무언가를 실행하려고 하면 발생
  • 취약점과 약점의 분류가 필요
취약점과 약점의 분류
CVE
(Common Vulnerabilities and Exposures)
취약점 리스트
- 취약점 : 해커가 시스템이나 네트워크에 액세스하기 위해 직접 사용할 수 있는 소프트웨어의 실수(=mistake)
CWE
(Common Weakness Enumeration)
보안약점 리스트
- 보안약점 : 소프트웨어 취약점으로 이어질 수 있는 오류(=error)

 

취약점

  • Overflows : 요소의 콘텐츠가 너무 커서 요소의 블록 서식 맥락에 맞출 수 없을 때의 처리법
  • Injections : 공격자가 신뢰할 수 없는 입력을 프로그램에 주입하도록 하는 공격
  • Race Conditions : 두 개 이상의 프로세스가 공통 자원을 병행적으로 접근하려고 할 때 경쟁하는 상태
  • Information Leakage : 정보의 누출

+) Stack Overflow

  • 공격자가 입력을 위해 준비된 공간보다 더 큰 데이터를 전송할 때 발생 => 지정한 스택 메모리 사이즈보다 더 많은 스택 메모리를 사용하게 되어 에러가 발생하는 상황
  • BDF 파일에 긴 문자열이 존재할 때 stack overflow가 발생

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

 

방어기법

  • 다양한 방어기술의 적용
  • 깊이 별 보안

 

절차

  • 안전한 디자인 원칙 준수
  • 취약점을 찾기 위한 테스트와 검토
  • 코드 보안을 위한 점검 및 측정

 

최신 기술의 이해

  • 소프트웨어 보안의 문제들을 찾기 위한 도구와 방법 => 자동화된 버그 탐지
  • 안전이 보장되는 언어의 사용 => C/C++ vs Java