Search

Introduction

소프트웨어 보안이슈 핵심정리

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):
공개된 보안 취약점 표준 식별번호
전체적으로 소프트웨어 보안은 코딩 실수·설계상 실수, 시스템/웹/하드웨어 복합 취약점, 해킹 기술의 발전, 신기술 영역(인공지능, 블록체인 등)까지 포함하는 광범위한 개념이며,
버그와 취약점의 탐지·대응·방지가 필수적임.