소프트웨어 보안이슈 핵심정리
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: 공격에 특화, 악의적 동기
•
해킹의 목표:
◦
주어진 권한 이상을 취득
◦
정보의 탈취·변조(데이터, 사용자 정보, 비밀번호 등)
◦
금전적/정치적/사회적 이익
•
원리:
◦
시스템, 대상에 대한 깊은 기술적 이해
◦
보안 취약점 발견·악용
◦
exploit, shellcode 작성
◦
명령어 인젝션 등
5. 해킹의 종류
•
웹 해킹:
◦
웹 서버(예: Apache, Nginx), 웹 어플리케이션의 로직·보안 취약점 악용
◦
DB, 사용자 정보 탈취
•
시스템 해킹:
◦
운영체제, 응용프로그램의 입력 데이터 처리 오류 활용
◦
메모리 오류로 인한 악성코드 감염
•
기타:
◦
아이폰/안드로이드 탈옥, 공유기 해킹, 드론 해킹, CPU(사이드채널) 해킹 등
•
취약점 분류:
◦
논리적 오류, 메모리 오류 등
6. 시스템 해킹 용어 및 기술
•
BOF (Buffer Overflow):
◦
입력값이 메모리 경계를 넘어서 다른 메모리를 덮어쓰는 취약점
•
DEP/NX (Data Execution Prevention):
◦
데이터가 명령어로 실행되는 것을 방지(윈도우: DEP, 리눅스: NX)
•
Command Injection:
◦
데이터와 명령의 구분 실패로 명령어 삽입·실행(대표: SQL Injection)
•
Shellcode:
◦
DEP/NX를 우회해 공격자가 직접 작성한 임의 명령어 실행
•
ROP (Return Oriented Programming):
◦
쉘코드 사용이 불가할 때, 함수 반환구조를 이용해 코드를 실행
•
Fuzzing:
◦
프로그램에 무작위 데이터를 넣어 자동으로 버그/취약점 탐색
◦
보안 취약점 발견 시 CVE 번호 할당
7. 취약점 탐지·관리
•
CVE(Common Vulnerability Exposure):
◦
공개된 보안 취약점 표준 식별번호
전체적으로 소프트웨어 보안은 코딩 실수·설계상 실수, 시스템/웹/하드웨어 복합 취약점, 해킹 기술의 발전, 신기술 영역(인공지능, 블록체인 등)까지 포함하는 광범위한 개념이며,
버그와 취약점의 탐지·대응·방지가 필수적임.