
시스템 공격 네 가지는 원인이 다릅니다. 버퍼 오버플로는 메모리 경계, 포맷 스트링은 형식 문자열, 경쟁 조건과 TOCTOU는 실행 순서와 상태 변화, 백도어는 숨겨진 접근 기능이 핵심입니다.
취약한 코드만 고쳐도 끝나지 않습니다. 공격자가 계정을 얻었을 때 피해가 커지지 않도록 계정·세션·권한·로그를 함께 관리해야 합니다. 오늘은 공격 원인과 시스템 강화 대책을 한 표로 연결합니다.
오늘의 한 줄: 코드에서 취약점을 제거하고, 운영에서는 최소 권한과 세션 통제·로그 검토로 공격 사슬을 끊는다.
정보보호 전체 범위와 7일 순서는 독학사 3단계 정보보호 공부내용 총정리에서 확인할 수 있습니다.
시스템 공격 핵심 비교표
| 구분 | 핵심 약점 | 대표 영향 | 우선 대응 |
|---|---|---|---|
| 버퍼 오버플로 | 크기 확인 없이 버퍼 경계를 넘어 씀 | 충돌, 데이터 훼손, 실행 흐름 변경 | 경계검사, 안전한 API·언어, 컴파일러 보호 |
| 포맷 스트링 | 외부 입력이 형식 문자열을 제어 | 메모리 노출·변조, 비정상 종료 | 형식 문자열 상수화, 데이터 인수 분리 |
| 경쟁 조건 | 공유 자원의 순서·동기화 오류 | 중복처리, 상태 훼손, 권한 우회 | 잠금, 원자 연산, 공유 상태 최소화 |
| TOCTOU | 검사 뒤 사용 전 자원 상태가 바뀜 | 파일 바꿔치기, 검사 우회 | 검사·사용 원자화, 핸들 기반 접근 |
| 백도어 | 문서화되지 않은 기능·인증 우회 경로 | 비인가 접근, 지속성 확보 | 숨은 기능 제거, 코드·무결성·공급망 검증 |
1. 버퍼 오버플로: 경계를 넘는 쓰기
버퍼는 데이터를 임시로 담는 정해진 메모리 공간입니다. 입력 길이나 복사할 크기를 확인하지 않아 할당된 범위를 넘어 쓰면 주변 데이터, 제어정보, 다른 객체가 훼손될 수 있습니다.
MITRE의 CWE-120은 특히 입력 크기를 확인하지 않고 버퍼를 복사하는 ‘고전적 버퍼 오버플로’에 초점을 둡니다. 모든 메모리 경계 오류가 CWE-120인 것은 아니지만, 시험에서는 다음 방어층을 함께 정리하면 좋습니다.
| 방어층 | 예 | 역할 |
|---|---|---|
| 근본 예방 | 길이 검증, 안전한 API, 메모리 안전 언어 | 경계 밖 쓰기의 원인을 제거 |
| 빌드 보호 | 스택 카나리, 강화 옵션 | 훼손 탐지와 악용 난도 증가 |
| 실행환경 보호 | ASLR, DEP/NX | 주소 예측과 데이터 영역 코드 실행 제한 |
| 피해 제한 | 최소 권한, 격리, 샌드박스 | 악용 성공 뒤 영향 범위 축소 |
ASLR·DEP·카나리는 중요하지만 취약한 복사를 없애는 근본 대책은 아닙니다. 경계검사와 안전한 구현이 먼저이고 실행환경 보호는 심층방어입니다.
2. 포맷 스트링: 데이터가 형식 명령으로 해석될 때
형식화 출력 함수는 형식 문자열의 지시자에 따라 뒤따르는 값을 해석합니다. 외부 입력을 형식 문자열 그 자체로 사용하면 공격자가 의도하지 않은 메모리 읽기·쓰기나 비정상 동작을 유도할 수 있습니다.
개념적으로 printf(input)처럼 입력을 형식으로 쓰는 것과 printf("%s", input)처럼 고정된 형식에 입력을 데이터로 전달하는 것을 구분해야 합니다. 포맷 스트링은 단순히 문자열이 길어서 생기는 버퍼 오버플로와 원인이 다릅니다.
- 형식 문자열은 신뢰된 상수로 고정합니다.
- 외부 입력은 형식이 아니라 데이터 인수로 전달합니다.
- 컴파일러 경고와 정적 분석을 활성화합니다.
- 오류·로그 출력처럼 드물게 실행되는 경로도 점검합니다.
3. 경쟁 조건과 TOCTOU
경쟁 조건은 둘 이상의 실행 흐름이 공유 자원에 접근할 때 순서와 타이밍에 따라 결과가 달라지는 문제입니다. TOCTOU(Time Of Check To Time Of Use)는 그중에서도 자원의 상태를 검사한 뒤 실제 사용하기 전에 상태가 바뀌어 검사 결과가 무효가 되는 유형입니다.
- 프로그램이 파일의 소유자·권한을 검사합니다.
- 검사와 열기 사이에 공격자가 대상 경로나 링크를 바꿉니다.
- 프로그램은 검사한 대상이 아닌 다른 자원을 사용합니다.
대응의 핵심은 단순 재검사 횟수를 늘리는 것이 아니라 검사와 사용을 하나의 원자적 동작으로 만들거나, 검사한 동일 객체의 핸들을 계속 사용하는 것입니다. 공유가 필요하면 잠금 범위와 수명을 명확히 합니다.
4. 백도어·트로이목마·루트킷 구분
| 용어 | 분류의 핵심 | 예방·탐지 관점 |
|---|---|---|
| 백도어 | 문서화되지 않은 기능 또는 정상 인증 우회 경로 | 숨은 기능 제거, 코드·바이너리 무결성 검증 |
| 트로이목마 | 정상 프로그램처럼 보이게 위장한 악성 기능·전달 형태 | 출처 검증, 실행 제한, 사용자 교육 |
| 루트킷 | 악성 활동·파일·프로세스·지속성을 숨기는 기능 집합 | 신뢰된 외부 환경 점검, 무결성·행위 분석 |
셋은 동시에 나타날 수 있지만 같은 말은 아닙니다. 트로이목마로 악성코드가 들어오고, 백도어로 재접속하며, 루트킷으로 흔적을 숨길 수 있습니다.
5. 계정·세션·권한·로그로 시스템 강화
| 영역 | 핵심 통제 | 자주 하는 오해 |
|---|---|---|
| 계정 | 승인된 생성·변경·비활성화·삭제, 기본·휴면·공유 계정 통제 | 비밀번호 복잡성만 높이면 끝 |
| 세션 | 예측 곤란한 세션 비밀, 유휴·전체 제한, 재인증, 서버 측 종료 | 화면을 닫으면 서버 세션도 무조건 끝남 |
| 권한 | 최소 권한, 직무분리, 관리자 계정 분리, 임시 상승과 기록 | 최소 권한은 모든 권한을 없애는 것 |
| 로그 | 주체·시각·행위·대상·결과 기록, 시간 동기화, 무결성, 검토·경보 | 많이 저장하면 자동으로 침입이 방지됨 |
계정 수명주기
- 업무 필요와 승인에 따라 계정을 만듭니다.
- 직무 변경 때 권한을 재검토하고 불필요한 권한을 회수합니다.
- 휴면·퇴직·계약종료 계정은 신속히 비활성화합니다.
- 공유·기본·서비스 계정은 소유자와 사용 목적을 명확히 합니다.
세션 수명주기
인증 성공 뒤 세션을 발급하고, 중요 행위에는 재인증을 요구하며, 유휴 시간과 전체 수명을 제한합니다. 로그아웃·권한 회수·사고 대응 때는 클라이언트 표시만 지우지 말고 서버 측 세션도 무효화해야 합니다. 웹 쿠키 속성은 5일차에서 별도로 다룹니다.
최소 권한과 직무분리
최소 권한은 업무에 필요한 권한을 필요한 시간 동안만 주는 원칙입니다. 직무분리는 한 사람이 요청·승인·실행·감사를 모두 장악하지 않도록 역할을 나눕니다. 일반 작업은 일반 계정으로 하고 관리자 기능은 분리된 계정과 승인된 권한상승으로 수행합니다.
로그는 저장보다 검토까지
- 무엇: 로그인 실패, 권한 변경, 설정 변경, 중요 데이터 접근을 선정합니다.
- 내용: 주체, 시각, 행위, 대상, 성공·실패 결과를 남깁니다.
- 신뢰: 시간 동기화, 접근통제, 중앙 전송, 변경·삭제 방지를 적용합니다.
- 활용: 기준을 벗어난 사건을 경보하고 담당자가 실제로 검토·대응합니다.
6. 공격 사슬로 연결해 보기
- 공격자가 포맷 스트링이나 메모리 취약점을 악용합니다.
- 과도한 서비스 권한 때문에 시스템 권한으로 피해가 확대됩니다.
- 숨겨진 계정이나 기능을 만들어 백도어를 남깁니다.
- 로그를 지우거나 감시를 우회해 탐지를 늦춥니다.
따라서 대응도 안전한 코드 → 패치·강화 → 최소 권한 → 계정·세션 통제 → 보호된 로그와 경보의 여러 층으로 설계합니다.
객관식에서 자주 틀리는 5가지
- “포맷 스트링은 긴 입력으로만 생긴다” → 핵심 원인은 외부 입력이 형식 문자열을 제어하는 것입니다.
- “모든 메모리 오류가 CWE-120이다” → CWE-120은 특히 크기 확인 없는 버퍼 복사에 초점을 둡니다.
- “TOCTOU와 모든 경쟁 조건은 동의어다” → TOCTOU는 경쟁 조건의 대표적인 한 유형입니다.
- “ASLR·DEP가 취약한 코드를 고친다” → 악용을 어렵게 하는 보호층이며 근본 원인은 코드에서 제거해야 합니다.
- “로그를 저장하면 침입을 막는다” → 로그는 탐지·분석 근거이며 보호·검토·경보·대응이 연결되어야 합니다.
80자 내외 서술형 연습 답안
아래 문장은 기출문제가 아니라 공식 범위를 바탕으로 직접 만든 연습용 답안입니다.
- 버퍼 오버플로
입력 크기를 확인하지 않아 버퍼 경계를 넘어 쓰는 취약점이며, 길이검사·안전한 API·실행환경 보호로 완화한다. - 포맷 스트링
외부 입력이 형식 문자열로 해석되어 메모리 노출·변조를 일으키며, 형식 상수화와 인수 분리로 방지한다. - TOCTOU
자원을 검사한 뒤 사용하기 전에 상태가 바뀌어 검사 결과가 무효화되는 경쟁 조건으로, 원자 연산으로 줄인다. - 백도어
문서화되지 않은 기능이나 인증 우회 경로로 비인가 접근을 허용하며, 코드 검토와 무결성 검증으로 대응한다. - 최소 권한
사용자와 프로세스에 업무 수행에 필요한 권한만 필요한 시간 동안 주어 공격 성공 시 피해 범위를 줄이는 원칙이다. - 로그 관리
주체·시각·행위·대상·결과를 기록하고 시간을 동기화하며, 로그의 무결성을 보호해 중앙에서 검토·경보한다.
5분 셀프 테스트
- 버퍼 오버플로와 포맷 스트링의 원인을 한 단어씩 구분해 보세요.
- 경쟁 조건과 TOCTOU의 포함 관계는?
- ASLR·DEP와 경계검사 중 근본 예방에 가까운 것은?
- 최소 권한과 직무분리는 각각 무엇을 제한하는가?
- 보안 로그 한 건에 들어갈 핵심 다섯 요소를 적어 보세요.
정답 확인
1. 메모리 경계, 형식 문자열 2. TOCTOU는 경쟁 조건의 한 유형 3. 경계검사 4. 필요한 권한의 범위·시간, 한 사람에게 집중되는 상충 역할 5. 주체·시각·행위·대상·결과
오늘의 마무리 체크
- 다섯 공격의 원인·영향·대응을 표 없이 말할 수 있는가?
- 근본 예방과 심층방어를 구분하는가?
- 계정·세션·권한을 수명주기로 관리하는 이유를 아는가?
- 백도어·트로이목마·루트킷의 분류 축을 구분하는가?
- 로그의 생성·보호·검토·경보를 하나의 과정으로 설명할 수 있는가?
전체 범위로 돌아가려면 독학사 3단계 정보보호 공부내용 총정리를 확인하세요.
공식 자료
- 국가평생교육진흥원 독학학위제 과목별 평가영역
- MITRE CWE-120: Classic Buffer Overflow
- MITRE CWE-134: Externally-Controlled Format String
- MITRE CWE-362: Race Condition
- MITRE CWE-367: TOCTOU Race Condition
- MITRE CWE-912: Hidden Functionality
- NIST SP 800-53 Rev.5 Security and Privacy Controls
- NIST SP 800-63B-4 Authentication and Session Guidance
- NIST SP 800-92 Guide to Computer Security Log Management
이 글은 2026년 7월 10일 기준 학습용 정리입니다. CWE 4.20의 취약점 분류를 확인했고, NIST SP 800-92는 2006년 최종판이므로 로그 관리의 기본 원칙 근거로만 사용했습니다. 공격 재현 절차가 아니라 원인·영향·방어를 중심으로 구성했습니다.
'학위공부 > 독학사 요점정리' 카테고리의 다른 글
| [독학사 3단계/정보보호] 방화벽·IDS·IPS·VPN과 HTTP 세션 (5일차) (0) | 2026.07.11 |
|---|---|
| [독학사 3단계/정보보호] OSI·TCP/IP와 스니핑·스푸핑·DDoS (4일차) (0) | 2026.07.11 |
| [독학사 3단계/정보보호] 대칭키·비대칭키·해시·전자서명 정리 (2일차) (0) | 2026.07.11 |
| [독학사 3단계/정보보호] CIA·인증·인가·위험관리 정리 (1일차) (1) | 2026.07.11 |
| [독학사 3단계/컴퓨터공학] 정보보호 공부내용 총정리 (2026 평가영역) (0) | 2026.07.10 |