소프트웨어 보안이슈 핵심정리
1. 소프트웨어 보안(Software Security)
- 정의: 소프트웨어 사용 과정에서 발생하는 해킹, 버그, 시스템/웹/암호 해킹, 악성코드 등 모든 보안문제의 집합.
- 대표 이슈:
- 해킹 공격(웹, 시스템, 암호 등)
- 소프트웨어 버그
- 악성코드 감염·유포
- 안전한 소프트웨어 제작 및 보호기법
- 소프트웨어 취약점 탐지
- 최신 보안 영역(인공지능, 블록체인, IoT, 무인이동체 등)
2. 버그(Bug)
- 개념: 개발자 실수로 인한 프로그램 오류.
- 보안 영향: 악성코드 유포·해킹 등 보안문제 유발.
- 예시:
- 메모리 오류(bug): buffer overflow, integer overflow, use-after-free, double free, uninitialized access
- 논리 오류(logic error): consistency error, authentication error
- 시스템 오류(system error): command injection, SQL injection
3. 프로그래밍 언어와 보안
- Safe Language: 메모리 오류 방지 기능을 갖춘 언어(예: Rust)
- Unsafe Language: 메모리 오류 발생 가능(C/C++)
- C/C++의 위험성:
- 메모리 관리 오류로 인한 치명적 버그
- buffer overflow, use-after-free 등은 C/C++에서만 가능
- Logic Error, System Error:
4. 해킹(Hacking)
- 정의: 시스템의 비표준적 방법(취약점, 버그 등)을 이용해 목표를 달성하거나 권한을 얻는 기술적 행위.
- 분류:
- White Hat: 합법적, 방어 목적, 시스템 소유자 동의
- Black Hat: 불법, 데이터 탈취/판매, 금전·사회적 목적
- Cracker: 공격에 특화, 악의적 동기
- 해킹의 목표:
- 주어진 권한 이상을 취득
- 정보의 탈취·변조(데이터, 사용자 정보, 비밀번호 등)
- 금전적/정치적/사회적 이익