1. 소프트웨어 개발 보안 설계
🔷 SW 개발 보안
소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설셰 및 구현하는 등 SW 개발 과정에서 지켜야 할 일련의 보안 활동
◼ 3대 요소 #기무가 ( CIA )
- 기밀성 ( Confidentiality ) : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단
- 무결성 ( Integrity ) : 정당한 방법을 따르지 않고서는 데이터 변경 불가, 데이터 정확성 및 완전성 보장
- 가용성 ( Availability ) : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속해서 사용할 수 있도록 보장
◼ 용어
- 자산 ( Assets ) : 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
- 위협 ( Threat ) : 자산에 악영향을 끼칠 수 있는 사전이나 행위
- 취약점 ( Vulnerability ) : 위협이 발생하기 위한 사전조건으로, 시스템의 정보 보증을 낮추는데 사용되는 약점
- 위험 ( Risk ) : 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성
🔷 SW 개발 보안을 위한 공격기법의 이해
참고자료
◼ DoS ( Denial of Service ) 공격
시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
💡 DoS : 1대의 공격자 컴퓨터에서 공격
DDoS : 완벽한 공격을 위해 공격자가 여러 대의 컴퓨터를 감염시켜 공격

- SYN 플러딩 ( SYN Flooding ) : TCP 프로토콜의 구조적 문제를 이용한 공격으로, SYN 패킷만을 보냄( ACK를 발송하지 X )
- UDP 플러딩 ( UDP Flooding ) : 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송
- 스머프 ( Smurf ) / 스머핑 ( Smurffing ) : 출발지 주소를 공격 대상의 IP로 설정하여, 네트워크 전체에 ICMP Echo 패킷을 직접 브로드캐스팅( Directed Broadcasting )하여 마비시키는 공격
- 죽음의 핑 ( PoD : Ping of Death ) : ICMP 패킷( 핑 )을 매우 크게 만들어 전송해 부하를 일으키는 공격
- 랜드 어택 ( Land Attack ) : 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보내, 수신자가 자기자신에게 응답
- 티어 드롭 ( Tear Drop ) : IP 패킷 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 문제를 발생시키는 공격
- 봉크 ( Bonk ) / 보잉크 ( Boink ) : 프로토콜의 오류 제어를 이용한 공격 기법으로, 시스템의 패킷 재전송과 재조립이 과부하를 유발
- 봉크 : 같은 시퀀스 번호를 계속 보냄
- 보잉크 : 일정한 간격으로 시퀀스 번호에 빈공간 생성
◼ DDoS 공격 ( Distributed DoS )
여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법

- 핸들러 ( Handler ) : 마스터 시스템의 역할 수행
- 에이전트 ( Agent ) : 공격 대상에게 직접 공격을 가하는 시스템
- 마스터 ( Master ) : 공격자에게서 직접 명령을 받는 시스템, 여러 대의 에이전트 관리
- 공격자 ( Attacker ) : 공격을 주도하는 해커의 컴퓨터
- 데몬 프로그램 ( Daemon ) : 에이전트 시스템의 역할을 수행하는 프로그램
◼ DRDoS ( Distributed Reflection DoS ) 공격
공격자는 출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송, 피해자는 반사 서버로부터 다량의 응답을 받아 서비스 거부(DoS)가 되는 공격

◼ 애플리케이션 공격
DDoS 서비스( 애플리케이션 ) 마비 공격
- HTTP GET 플러딩 ( Flooding ) : 과도한 Get 메시지를 이용하여 웹 서버의 과부하를 유발하는 공격
- Slowloris ( Slow HTTP Header DoS ) : HTTP GET 메서드를 사용하여 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않고,
\r\n
만 전송하여 대상 웹 서버와 연결상태를 지속시키고 연결자원을 모두 소진시키는 공격
- RUDY ( Slow HTTP POST DoS ) : 요청 헤더의 Content-Length 크기를 비정상적으로 크게 설정하고, 바디 부분을 매우 소랭 전송
- Slow HTTP Read DoS : TCP 윈도 크기와 데이터 처리율을 감소시킨 상태에서 다수 HTTP 킷 지속 전송
- Hulk DoS : 공격자가 공격대상 URL을 지속적으로 변경하면서 다량의 GET 요청을 발생
- Hash DoS : 많은 수의 파라미터를 보내 해시 충돌을 일으키는 공격
◼ 네트워크 공격
- 스니핑 ( Sniffing ) : 공격대상에게 직접 공격하지 않고, 데이터만 몰래 들여다 보는 수동적 공격 기법
- 네트워크 스캐너 ( Scanner ), 스니퍼 ( Sniffer ) : 격자가 HW, SW 구성의 취약점 파악을 위해 탐색하는 도구
- 패스워드 크래킹 ( Password Cracking ) : 사전 크래킹, 무차별 크래킹, 패스워드 하이브리드, 레인보우 테이블 이용
- IP 스푸핑 ( IP Spoofing ) : 본인 패킷 헤더를 인증된 호스트의 IP 주소로 위조
- 사전 ( Dictionary ) 크래킹 : ID와 패스워드가 될 가능성이 있는 단어를 파일로 만들어 놓음
- 무차별 ( Brute Force ) 크래킹 : 패스워드로 사용도리 수 있는 모든 경우를 무작위로 대입해 알아내는 기법
- 패스워드 하이브리드 공격 : 사전공격과 무차별 대입을 결합
- 레인보우 테이블 공격 : 패스워크 별로 해시 값을 미리 생성해놓고, 크래킹하고자 하는 해시 값을 테이블에서 검색
- ARP 스푸핑 ( ARP Spoofing ) : 특정 호스으ㅢ MAC 주소를 자식의 MAC 주소로 위조한 APP Replay를 만들어 지속적으로 전송
- ICMP Redirect : 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알려 패킷 흐름 변화
- 트로이 목마 ( Torjan Horses ) : 겉보기에는 정상이지만, 악성 루틴이 숨어있어 실행 시 악성 코드 실행
◼ 시스템 보안 위협
❐ 버퍼 오버플로우 ( Buffer Overflow ) 공격
메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여, 프로세스의 흐름을 변경하여 악성코드를 실행
-
공격 유형
- 스택 버퍼 오버플로우 : 메모리 영역 중 Local Value나 Return Address가 저장되는 스택 영역에서 발생
- 힙 버퍼 오버플로우 : 동적으로 할당되는 힙 영역에 할당된 버퍼 크기를 초과하는 데이터 입력
-
대응 방안
- 스택가드 ( Stackguard ) 활용 : 카나리 값을 활용해 이 값이 변조될 경우 호출 X
- 스택쉴드 ( Stack Shield ) 활용 : 복귀 주고를 특수 스택에 따로 저장
- ASLR : 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화
- 안전한 함수 활용
- 실행 제한
❐ 백도어 ( Backdoor )
어떤 제품이나 컴퓨터 시스템, 암호시스템 등에서 정상적인 인증 절차를 우회하는 기법
- 주요 시스템 보안 공격기법
- 포맷 스트링 공격 ( Format String ) : 외부로부터 입력된 값을 검증하지 않고 포맷 스트링을 그대로 사용하는 경우
- 레이스 컨디션 공격 ( Race Condition ) : 툴 이상의 프로세스나 스레드가 공유 자원을 동시에 접근할 때 접근 순서에 따라 장애 발생
- 키로거 공격 ( Key Logger ) : 컴퓨터 사용자의 키보드 움직임을 탐지해 저장, 정보 탈취
- 루트킷 ( Rootkit ) : 시스템 침입 후 차후 침임을 위한 백도어, 트로이 목마 설치
◼ 보안 관련 용어
- 스피어피싱 ( Spear Phisinng ) : 사회 공학의 한 기법으로, 메일을 이용
- 스미싱 ( Smishing ) : SMS와 Phising의 합성어로, 문자를 이용
- 큐싱 ( Qshing ) : QR 코드를 이용한 공격 기법
- 봇넷 ( Botnet ) : 악성 프로그램에 감영된 다수의 컴퓨터들이 형성한 네트워크
- APT 공격 ( Advanced Persistent Threat ) : 특정 타깃을 목표로 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격
- 공급망 공역 ( Supply Chain Attack ) : 소프트웨어 개발사의 네트워크에 침투해 소스코드에 악의적인 코드 삽입
- 제로데이 공격 ( Zero Dat Attack ) : 보안 취약점이 발견되어 공표되기 전에 해당 취약점을 악용
- 웜 ( Worm ) : 스스로를 복제하여 네트워크 등의 연결을 통하여 전파하는 악성컴퓨터 프로그램
- 랜섬웨어 ( Ransomware ) : 감염된 시스템의 파일들을 암호화하여 복호화 할 수 없도록 하고 몸값 요구
- 이블 트윈 공격 ( Evil Twin ) : 무선 WiFi 피싱 기법, 합법적인 WiFi 제공자인 것처럼 생세해 정보 탈취
- 난독화 ( Obfuscation ) : 코드의 가독성을 낮춰 역공학에 대한 대비를 하기 위해 프로그램 코드 변경
🔷 서버 인증 및 접근 통제
◼ 서버 인증 기술
다중 사용자 시스템과 망 운영 시스템에서 접속자의 로그인 정보를 확인하는 보안 절차
❐ 서버 인증의 기능
- 스니핑 방지
- 피싱 방지
- 데이터 변조 방지
- 기업 신뢰도 향상
❐ 인증 기술의 유형
- 지식기반 인증 : 사용자가 기억하고 있는 지식 Ex. ID/PW
- 소지기반 인증 : 소지하고 있는 사용자 물품 Ex. 공인인증서, OTP
- 생체기반 인증 : 고유한 사용자의 생체 정보 Ex. 지문, 홍채, 정맥
- 특징기반 인증 : 사용자의 특징 활용 Ex. 서명, 발걸음, 몸짓
◼ 서버 접근 통제
사람 또는 프로세스가 서버 내 파일에 읽기/ 쓰기/ 실행 등의 접근 여부를 허가하거나 거부하는 기능
❐ 접근 통제 용어
- 주체 ( Subject ) : 객체나 객체 내의 데이터에 대한 접근을 요청하는 능동적인 개체 ( 행위자 )
- 객체 ( Object ) : 접근 대상이 수동적인 개체 혹은 행위가 일어나는 아이템 ( 제공자 )
- 접근 ( Access ) : 읽고, 만들고, 삭제하거나 수정하는 등의 행위를 하는 주체의 활동
❐ 접근 통제 기법
- 식별 ( Identification ) : 자신이 누구라고 신원을 밝히는 행위
- 인증 ( Authentication ) : 주체의 신원을 검증하기 위한 활동
- 인가 ( Authorization ) : 인증된 주체에게 접근을 허용하는 활동
- 책임추적성 ( Accountability ) : 주체의 접근을 추적하고 행동을 기록하는 활동
❐ 서버 접근 통제 유형
-
임의적 접근 통제 ( DAC ; Direct Access Control ) : 시스템에 대한 접근을 사용자/그룹의 신분 기반으로 제한
-
강제적 접근 통제 ( MAC ; Mandatory Access Control ) : 시스템에 대한 접근을 시스템 정보의 허용등급을 기준으로 제한
-
역할기반 접근 통제 ( RBAC ; Role Based Access Control ) : 시스템에 대한 접근을 조직 내 맡은 역할을 기반으로 제한
◼ 접근 통제 보호 모델
❐ 벨-라파듈라 ( BLP ; Bell-LaPadula Policy )
미 국방부 지원 보안 모델로 보안 요소 중 기밀성을 강조하여 강제적 정책에 의해 접근 통제하는 모델
속성 #RUWD
- No Read Up : 주체는 객체와 동일한 등급이나 낮은 등급일 때 읽음
- No Write Down : 주체는 객체와 동일한 등급이나 높은 등급일 때 기록 가능
❐ 비바 모델
벨-라파듈라 모델의 단점을 보완한 무결성을 보장하는 최초 모델
속성 #RDWU
- No Read Down : 주체는 객체와 동일한 등급이나 높은 등급일 때 읽음
- No Write Up : 주체는 객체와 동일한 등급이나 낮은 등급일 때 기록 가능
🔷 SW 개발 보안을 위한 암호화 알고리즘
◼ 암호화 알고리즘 ( Encryption Algorithm )
데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법

❐ 양방향 방식
❐ 일방향 방식 ( 해시 암호 방식 )
임의 길이의 정보를 받아, 고정된 길이의 암호문 ( 해시 값 ) 을 출력하는 암호 방식으로, 복호화 불가능
- MD5 : MD4를 개선한 알고리즘, 무결성 검사에 사용
- SHA-1 : NSA에서 미 정부 표주으로 지정, DSA에서 사용
- SHA-256, 384, 512 : SHA의 종류로서 256비트의 해시값 생성
- HAS-160 : 국내 표준 서명 알고리즘을 이해 개발
🔷 데이터 암호화 전송
◼ IPSec ( Internet Protocol Security )
IP계층( 3계층 )에서 무결성과 인증을 보장하는 인증 헤더( AH )와 기밀성을 보장하는 암호화를 이용한 IP 보안 프로토콜
-
기능
- 기밀성
- 비 연결형 무결성
- 인증
- 재전송 공격 방지
- 접근 제어
-
IPSec 동작 모드
- 전송 모드 ( Transport Mode ) : IP패킷의 페이로드 보호
- 터널 모드 ( Tunnel Mode ) : IP패킷 전체 보호
-
IPSec 프로토콜
- 인증 ( AH ) 프로토콜 : 메시지 인증 코드( MAC )와 암호화를 이용하여 인증과 송신처 인증 제공 ( 기밀성 제공하지 X )
( 무결성 / 인증 제공 )
- 암호화 ( ESP ) 프로토콜 : 메시지 인증 코드( MAC )와 암호화를 이용하여 인증과 송신처 인증과 기밀성 제공
( 기밀성 / 무결성 / 인증 제공 )
- 키 관리 ( IKE ) 프로토콜 : Key를 주고 받는 알고리즘
◼ SSL / TLS ( Secure Socket LAyer / Transport Layer Security )
전송계층과 응용걔층 사이에서 클라이언트와 서버 간의 웹데이터 암호화, 상호 인증 및 데이터 무결성을 보장하는 프로토콜
-
특징
- Netscape 사가 개발
- 다양한 암호 통신 방법 활용
- 특정 암호 기술에 의존하지 X
-
SSL/TLS 보안 기능
-
구조

◼ S-HTTP ( Secure Hypertext Transfer Protocol )
웹상에서 네트워크 트래픽을 암호화하는 주요 기법, 모든 메시지 암호화
- S-HTTP에서 메시지 보호는 HTTP를 사용한 애플리케이션에 대해서만 가능
2. 소프트웨어 개발 보안 구현
🔷 시큐어 코딩 가이드
소프트웨어의 보안 약점을 방지하기 위한 개발 기법
설계/구현 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하고, 외부 공격으로부터 안전한 SW를 개발하는 기법
- 입력데이터 검증 및 표현
- 보안 기능
- 시간 및 상태
- 에러 처리
- 코드 오류
- 캡슐화
- API 오용
◼ 입력 데이터 검증 및 표현
입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목
❐ 취약점
- XSS ( Cross Site Script ) : 검증되지 않은 외부 입력 데이터가 포함된 웹페이지를 사용자가 열람할 때 부적절한 스크립트가 실행되는 공격
- Stored XSS
- Reflected XSS
- DOM( Document Object Model ) XSS
- ( CSRF ; Cross-Sie Request Forgery ) : 사용자 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청
- SQL 삽입 ( SQL Injection ) : 악의적인 SQL 구문 삽입, 실행시켜 DB의 정보를 열람 및 탈취
- From SQL Injection
- Union SQL Injection
- Stored Procedure SQL Injection
- Mass SQL Injection
- Error-Based SQL Injection
- Blind SQL Injection
◼ 보안 기능
SW 개발 단계에서 인증, 접근제어, 기밀성, 암호화, 권한 관리 등을 적절하게 구현하기 위한 보안 점검 항목들
❐ 취약점
- 적절한 인증 없이 중요 기능 허용
- 부적절한 인가
- 취약한 암호화 알고리즘 사용
- 중요 정보 평문 저장 및 전송
- 하드 코드 된 비밀 번호
◼ 에러 처리
프로그램 실행 시 발생하는 에러를 예외 처리하지 못하거나, 에러 정보에 중요한 정보가 포함될 때 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들
❐ 취약점
- 취약한 패스워드 요구 조건
- 오류 메시지 통한 정보 노출
- 오류 상황 대응 부재
- 적절하지 않은 예외 처리
◼ 코드 오류
개발자가 흔하게 실수하는 프로그램 오류를 예방하기 위한 보안 점검 항목
❐ 취약점
- 널 포인터
- 정수를 문자로 변환
- 부적절한 자원 해제
- 초기화되지 않은 변수 사용
◼ 캡슐화
외부에 은닉이 필요한 중요 데이터와 필요한 기능성을 불충분하게 캡슐화했을 때 인가되지 않은 사용자에게 데이터 유출, 권한 문제 등 발생을 예방하기 위한 보안 검증 항목
❐ 취약점
- 잘못된 세션에 의한 데이터 정보 노출
- 제거되지 않고 남은 디버그 코드
- 민감한 데이터를 가진 내부 클래스 사용
- 시스템 데이터 정보 노출
◼ API 오용
서비스에서 제공되는 이용에 반하는 방법으로 API를 이용하거나 보안에 취약한 API를 오용하여 발생을 예방하기 위한 보안 검증 항목
❐ 취약점
- DNS Lookup에 의존한 보안 결정
- 위험하다고 알려진 함수 사용
- Null 매개변수 미검사
🔷 시스템 보안 구현
◼ 보안 솔루션
❐ 네트워크 보안 솔루션
- 방화벽 ( Firewall ) :
- 웹 방화벽 ( WAF ; Web application Firewall ) : 웹 어플리케이션 보안에 특화된 보안 장비
- 네트워크 접근 제어 ( NAC ; Network Access Control ) : 단말기가 내부 네트워크 접속을 시도할 때 이를 제어하고 통제
- 침입 탐지 시스템 ( IDS ; Intrusion Detection System ) : 네트워크에서 발생하는 이벤트 모니터링, 침입을 실시가능로 탐지
- 침입 방지 시스템 ( IPS ; Intrusion Prevention System ) : 네트워크에 대한 공겨깅나 침입을 실시간으로 차단
- 무선 침입 방지 시스템 ( WIPS ; Wireless Intrusion Prevention System ) : 인가되지 않은 무선 단말기의 접속을 자동 탐지 및 차단
- 통합 보안 시스템 ( UTM ; Unified Threat Management ) : 다양한 보안 장비의 기능을 하나로 통합
- 가설 사설망 ( VPN ; Virtual Private Network ) : 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 사용하여 마치 전용망을 사용하는 효과를 갖는 보안 솔루션
❐ 시스템 보안 솔루션
- 스팸 차단 솔루션 ( Anti-Spam Solution ) : 메일 서버 앞단에 위치하여 프록시( Proxy ) 메일 서버로 동작
- 보안 운영체제 ( Secure OS ) : 컴퓨터 운영체제의 커널에 보안 기능을 추가한 솔루션
❐ 콘텐츠 유출 방지 보안 솔루션
- 보안 USB : 정보 유출 방지 등의 보안 기능을 갖춘 USB
- 데이터 유출 방지 ( DLP ; Data Loss Prevention ) : 조직 내부의 중요 자료가 외부로 빠져나가는 것을 탐지하고 차단하는 솔루션
- 디지털 저작권 관리 ( DRM ; Digital Right Management ) : 디지털 저작물에 대한 보호화 관리를 위한 솔루션
🔷 SW 개발 보안 테스트와 결함 관리
◼ SW 개발 보안 테스트
SW 보안 요구사항이 반영되어 있음을 보증하고, 취약점을 발견하고 개선하여 안전한 SW를 개발하기 위한 활동
❐ 유형
❐ 절차
- 준비 단계
- 실행 단계
- 개선 단계
- 관리 단계
- 종료 단계
🔷 비즈니스 연속성 계획 ( BCP ; Business Continuity Plan )
각종 재해, 장애, 재난으로부터 위기관리를 기반으로 재해복구, 비상계획 등을 통해 비즈니스 연속성을 보장하는 계획
◼ 주요 용어
- BIA ( Business Impact Analysis ) : 장애나 재해로 운영상의 주요 손실을 볼 것을 가정하여 비즈니스 영향 분석
- RTO ( Recovery Time Objective ) : 업무중단 시점부터 업무가 복구되어 다시 가동될 때까지의 시간
- RPO ( Recovery Point Objective ) : 업무중단 시점부터 데이터가 복구되어 다시 정상 가동될 때 데이터의 손실 허용 시점
- DRP ( Disaster Recovery Plan ) : 재난으로 장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획
- DRS ( Disaster Recovery System ) : 재해 복구 센터
◼ DRS 유형
- Mirror Site : RTO가 0 ( 즉시 )
- Hot Site : RTO가 4시간 이내
- Warm Site : RTO가 수 일 ~ 수 주
- Cold Site : RTO가 수 주 ~ 수 개월
🔷 보안 중요 용어
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
- ( ) :
🔷
◼
❐
⭐ 📝