소프트웨어 개발 보안 구축
1. 소프트웨어 개발 보안 설계
(1) SW 개발 보안
- 소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동
- SW 개발 보안 생명주기: 요구사항 명세, 설계, 구현, 테스트, 유지보수 (요설구테유)
- SW 개발 보안 3요소: 기밀성, 무결성, 가용성 (기무가)
- SW 개발 보안 용어: 자산, 위협, 취약점, 위험 (자위취위)
- 위험(Risk): 위협(Threat)이 취약점(Vulnerabilty)을 이용하여 조직의 자산(Asset) 손실 피해를 가져올 가능성(위험=위협×취약점×자산)
기밀성 (Confidentiality) | 인가된 사용자에 대해서만 자원 접근이 가능해야 하는 특성 |
무결성 (Integrity) | 인가된 사용자에 대해서만 자원 수정이 가능하며 전송 중인 정보는 수정되지 않아야 하는 특성 |
가용성 (Availability) | 인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 자원 접근이 가능해야 하는 특성 |
(2) SW 공격 기법
- DoS(Denial of Service) 공격
- 시스템을 악의적으로 공격해서 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
- 공격 기법: SYN 플러딩, UDP 플러딩, 스머프, 죽음의 핑, 랜드어택, 티어 드롭, 봉크, 보잉크
SYN 플러딩 | 공격자가 ACK를 발송하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원만 소비하여 고갈 |
UDP 플러딩 | 대량의 UDP 패킷을 만들어 임의 포트 번호로 전송하여 응답 메시지(ICMP)를 지속 생성하여 자원 고갈 |
스머프/스머핑 | 출발지 주소를 공격 대상의 IP로 하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시키는 공격 |
죽음의 핑 (PoD) | ICMP 패킷(Ping)을 아주 크게 만들어 전송하여 IP 단편화 발생하고, 수신측에서 패킷을 재조합하는 과정에서 부하 발생 |
랜드 어택 | 패킷 전송시 출발지와 목적지 주소를 동일하게 함으로써 공격 대상 시스템의 가용성 침해 |
티어 드롭 | 공격자가 IP Fragment Offset 값을 서로 중첩되도록 조작하여 전송하고, 수신측에서 재조합하는 과정에서 오류 발생 |
봉크 | 패킷을 분할하여 보낼 때 처음 패킷을 1번으로 보낸 후 다음 패킷을 보낼 때도 순서번호를 모두 1번으로 조작하여 전송 |
보잉크 | 패킷을 보낼 때 순서번호를 비정상적인 상태로 보내서 부하 발생 |
- DDoS(Distributed DoS) 공격
- 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격
- 공격 구성요소: 핸들러(Handler), 에이전트(Agent), 마스터(Master), 공격자(Attacker), 데몬 프로그램(Daemon) (HAMAD)
- 공격 도구: Trinoo, Tribe Flood Network(TFN), Stacheldraht
- 공격 기법: DoS 공격 기법 포함, 대역폭 소진 공격(3, 4계층), 서비스/애플리케이션 마비 공격(7계층)
- 대응 방안: 차단 정책 업데이트, 좀비PC IP 확보, 보안 솔루션 운영, 홈페이지 보안 관리, 시스템 취약점 패치
- DRDoS(Distributed Reflection DoS) 공격
- 출발지 IP를 공격 대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송, 공격 대상은 반사 서버로부터 다량의 응답을 받아 서비스 거부되는 공격
- 공격 절차: 출발지 IP 변조, 공격 대상 서버로 SYN/ACK 전송, 서비스 거부
- 세션 하이재킹(Session Hijacking)
- TCP Sequence Number의 보안상 취약점을 이용한 공격
- 애플리케이션 공격
- 공격 기법: HTTP GET 플러딩, Slowloris, RUDY Attack, Slow Read Attack, Hulk DoS
HTTP GET 플러딩 | HTTP 캐시 옵션을 조작하여 캐싱 서버가 아닌 웹 서버가 직접 처리하도록 유도하여 웹 서버의 과부하 유발 |
Slowloris | HTTP GET 메서드를 사용 시 헤더의 개행 문자열을 오전송하여 웹 서버 연결상태를 장시간 지속하여 자원 소진 |
RUDY Attack | 요청 헤더의 Content-Length를 비정상적으로 크게 설정 이후 매우 소량으로 전송하여 연결 유지 |
Slow Read Attack | TCP 윈도 크기를 낮게 설정하여 서버로 전달하고 통신하면서 연결을 유지하게 만들어 서버의 연결 자원 고갈 |
Hulk DoS | 공격자가 공격대상 웹 사이트 주소(URL)를 지속적으로 변경하면서 다량으로 GET 요청 발생 시키는 공격 |
- 네트워크 공격
- 공격 기법: 스니핑, 네트워크 스캐너(스니퍼), 패스워크 크래킹, IP 스푸핑, ARP 스푸핑, ICMP Redirect 공격, 트로이 목마
스니핑 | 공격대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법 | |
네트워크 스캐너, 스니퍼 | 네트워크 하드웨어 및 소프트웨어 구성의 취약점 파악을 위해 공격자가 취약점을 탐색하는 공격 도구 | |
패스워드 트래킹 | 사전 크래킹 | ID와 패스워드가 될 가능성이 있는 단어를 파일로 만들어 놓고 대입하여 공격 |
무차별 크래킹 | 패스워드로 사용될 수 있는 문자 등을 무작위로 대입하여 공격 | |
패스워드 하이브리드 공격 | 사전 크래킹과 무차별 크래킹을 결합하여 공격 | |
레인보우 테이블 공격 | 크래킹 하고자 하는 해시 값을 테이블에서 검색해서 역으로 패스워드를 찾는 공격 | |
IP 스푸핑 | 공격자의 패킷 헤더를 인증된 호스트의 IP 주소로 위조하여 타깃에 전송하고 시스템의 정보를 빼내는 공격 | |
ARP 스푸핑 | 특정 호스트 MAC 주소를 공격자 MAC 주소로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 빼내는 공격 | |
ICMP Redirect 공격 | ICMP Redirect 메시지를 공격자가 원하는 형태로 만들어서 특정 목적지로 가는 패킷을 스니핑하는 공격 | |
트로이 목마 | 정상적인 프로그램으로 보이지만 악성 루틴이 숨어 있는 프로그램으로 실행 시 악성 코드를 실행 |
- 시스템 보안 위협
- 공격 기법: 버퍼 오버플로우, 백도어, 주요 시스템 보안 공격 기법
- 버퍼 오버플로우: 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 이로 인해 프로세스의 흐름을 변경시켜서 악성 코드를 실행
- 유형: 스택 버퍼 오버플로우 공격, 힙 버퍼 오버플로우 공격
- 대응 방안: 스택 가드, 스택 쉴드, ASLR(Address Space Layout Randomization), 안전한 함수 활용
스택가드 | 버퍼 오버플로우 발생시 카나리(Canary) 값을 체크, 변할 경우 복귀 주소를 호출하지 않는 방식으로 대응 | |
스택쉴드 | 함수 시작 시 복귀 주소를 스택에 저장해 두고, 함수 종료 시 다를 경우 오버 플로으로 간주하고 프로그램 중단 | |
ASLR | 주소 공간 배치 난수화, 실행 시마다 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정 주소 호출 차단 | |
안전한 함수 | 버퍼 오버플로우 취약 함수 | strcat(), strcpy(), gets(), scanf(), sprintf() |
버퍼 오버플로우 안전 함수 | strncat(), strncpy(), fgets(), fscanf(), snprintf() |
- 백도어: 제품, 시스템, 암호시스템 혹은 알고리즘에서 정상적인 인증 절차를 우회하는 기법
- 주요 시스템 보안 공격기법: 포맷 스트링 공격, 레이스 컨디션 공격, 키로거 공격, 루트킷
포맷 스트링 공격 | 외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링을 사용하는 경우 발생하는 취약점 공격 |
레이스 컨디션 공격 | 실행되는 프로세스가 임시파일을 만드는 경우 악의적인 프로그램으로 실행중에 끼어들어 공격 |
키로거 공격 | 컴퓨터 사용자의 키보드 움직임을 탐지해서 저장하고, 개인 정보를 빼내는 해킹 공격 |
루트킷 | 차후의 침입을 위한 백도어, 트로이 목마 설치, 원격 접근, 흔적 삭제, 관리자 권환 획등 등 해킹 프로그램 모음 |
- 보안 관련 용어
스피어피싱 | 일반적인 이메일로 위장한 메일을 지속적으로 발송, 링크나 첨부파일 클릭하도록 유도하여 개인정보 탈취 |
스미싱 | 문자메시지(SMS)를 이용한 피싱(Phising) 공격 |
큐싱 | 큐알 코드(Quick Response Code)를 통해 악성 앱을 내려받도록 유도하여 정보를 빼내는 피싱 공격 |
봇넷 | 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태 |
APT 공격 | 특정 타깃을 목표로 하여 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격 |
공급망 공격 | 개발사 네트워크에 침투하여 코드 수정하거나 배포 서버에 접근하여 파일 변경하여 사용자 PC에 설치 시 감염 |
제로데이 공격 | 보안 취약점이 발견되어 대응책이 공표되기 전에 해당 취약점을 악용하여 이루어지는 공격 |
웜 | 독자적으로 실행되며, 스스로를 복제하여 네트워크 등의 연결을 통하여 전파하는 악성 소프트웨어 |
악성 봇 | 독자적으로 실행되지 못하고, 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 (좀비 PC) |
사이버 킬체인 | 지능적, 지속적 사이버 공격에 대해 7단계 프로세스별 공격분석 및 대응을 체계화한 APT 공격 방어 분석 모델 |
랜섬웨어 | 감염된 시스템의 파일들을 암호화하여 복호화할 수 없도록 하고, 암호화된 파일을 인질로 잡고 몸값 요구 |
이블 트윈 | 합법적 Wifi 제공자 행세하며 노트북이나 핫스팟에 연결한 무선 사용자의 정보를 탈취하는 무선 네트워크 공격 |
사회 공학 | 사람들의 심리와 행동 양식을 교묘하게 이용해서 원하는 정보 얻는 공격 |
트러스트존 | 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 하드웨어 기반의 보안 기술 |
타이포스쿼팅 | 사이트 접속 시 주소를 오입력 실수를 이용하기 위해, 유사한 유명 도메인을 미리 등록 (URL 하이재킹) |
다크 데이터 | 정보를 수집한 후, 저장만 하고 분석에 활용되지 않는 다량의 데이터 |
(3) 서버 인증 및 접근 통제
- 서버 인증: 다중 사용자 시스템과 망 운영 시스템에서 접속자의 로그인 정보를 확인하는 보안 절차로 전송된 메시지 무결성 및 송신자 검증하는 과정
- 서버 인증 기능(SSL 인증서): 스니핑 방지, 피싱 방지, 데이터 변조 방지, 기업 신뢰도 향상
- 인증 기술 유형: 지식기반, 소유기반, 생체기반, 특징(행위)기반 인증 (지소생특)
- 서버 접근 통제: 사람 또는 프로세스가 서버 내 파일에 읽기, 쓰기, 실행 등의 접근 여부를 허가하거나 거부하는 기능
- 목적: 비인가자로부터 객체의 기밀성, 무결성, 가용성 보장
- 용어: 주체(행위자), 객체(제공자), 접근(주체의 활동)
- 서버 접근 통제 유형: 임의적 접근 통제(DAC), 강제적 접근 통제(MAC), 역할 기반 접근 통제(RBAC)
임의적 접근 통제 (DAC) | 주체의 신분(신원)에 근거하여 객체에 대한 접근을 제한 |
강제적 접근 통제 (MAC) | 객체에 포함된 정보의 허용등급과 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한 |
역할 기반 접근 통제 (RBAC) | 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한 |
- 3A: 인증(Authentication), 권한 부여(Authorization), 계정 관리(Accouting)
- 인증: 주체의 신원을 객체가 인정해 주는 행위
- 권한 부여: 인증된 주체에게 접근을 허용하는 활동
- 계정 관리: 주체의 접근을 추적하고 행동을 기록하는 활동
- 식별(Identification): 자신이 누구라고 시스템에 밝히는 행위로 객체에게 주체가 자신의 정보를 제공하는 활동
- 인증 관련 기술: SSO, 커버로스
- SSO(Single Sign On): 커버로스에서 사용되는 기술로 한 번의 인증 과정으로 여러 컴퓨터상의 자원을 이용할 수 있도록 해주는 인증 기술
- 커버로스: MIT Athena 프로젝트 일환으로 개발되었으며 클라이언트/서버 모델에서 동작하고 대칭 키 암호기법에 바탕을 둔 티켓 기반의 프로토콜
- 접근 통제 보호 모델 (벨기비무)
- 벨-라파듈라 모델(BLP): 보안 요소 중 기밀성을 강조 (No Read Up, No Write Down)
- 비바 모델: 벨-라파듈라 모델의 단점을 보완한 무결성을 보장 (No Read Down, No Write Up)
(4) SW 개발 보안을 위한 암호화 알고리즘
- 암호 알고리즘(Encryption Algorithm): 데이터의 기밀성 및 무결성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법
- 용어: 평문, 암호문, 암호화, 복호화, 키, 치환 암호(대치 암호), 전치 암호(자리 바꿈)
암호 알고리즘 | 양방향 (암호화/복호화) | 대칭 키 (암호화=복호화) | DES, 3DES, AES |
비대칭 키 (암호화 ≠ 복호화) | RSA | ||
일방향 (암호화) | 해시 함수 | MAC, MDC |
- 대칭 키 암호 방식: 암호화와 복호화에 같은 암호키를 쓰는 알고리즘
- 종류: 블록 암호 방식(DES, AES, SEED), 스트림 암호 방식(RC4)
- 비대칭 키 암호 방식(=공개키 암호 방식): 공개키(암호화)는 누구나 알 수 있고, 그에 대응하는 개인키(복호화)는 소유자만이 알 수 있는 알고리즘
- 종류: RSA
대칭 키 암호 방식 | 비밀키 | n(n-1)/2 |
비대칭 키 암호 방식 | 공개키, 개인키 | 2n |
- 해시 암호 방식: 임의 길이의 정보를 입력받아, 고정된 길이의 암호문(해시값)을 출력하는 암호 방식
- 종류: MAC(메시지 인증 코드), MDC(변경 감지 코드)
- 대칭 키 암호화 알고리즘
- 종류: DES, 3DES, SEED, AES, ARIA, IDEA, LFSR, Skipjack
DES | IBM에서 개발한 대칭 키 기반 블록 암호화 알고리즘, 블록 크기는 64bit, 키 길이 56bit인 페이스텔 구조, 16라운드 |
SEED | 국내 한국인터넷진흥원(KISA) 개발한 블록 암호화 알고리즘 |
AES | 미국 표준 기술 연구소(NIST)에서 발표현 블록 암호화 알고리즘으로 DES 전사적 공격 가능해지고, 3DES 성능문제 극복 |
ARIA | 학계(Academy), 연구기관(Research Institute), 정부(Agency)의 영문 앞글자로 구성된 블록 암호화 알고리즘 |
IDEA | DES 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 암호화 알고리즘 |
LFSR | 선형 되먹임 시프트 레지스터 |
Skipjack | 미 국가안보국(NSA)에서 개발한 Clipper 칩에 내장된 블록 알고리즘 |
- 비대칭 키 암호화 알고리즘
- 종류: 디피 헬만, RSA, ECC, ELGamal
디피 헬만 | 이산대수의 계산이 어려운 문제를 기본 원리로 한 최초의 공개키 알고리즘 |
RSA | 3명의 MIT 수학 교수가 고안한 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘 이용하는 공개키 암호화 알고리즘 |
ECC | RSA 암호 방식 대안으로 타원 곡선 암호(ECC)는 타원곡선 군에서의 이산대수의 문제에 기초한 공개키 암호화 알고리즘 |
ELGamal | 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있으며, RSA와 유사하게 전자서명과 데이터 암/복호화에 사용 |
- 해시(Hash) 암호화 알고리즘
- 종류: MD5, SHA-1, SHA-256/384/512, HAS-160, HAVAL
MD5 | MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용하는 해시 알고리즘 |
SHA-1 | NSA에서 미 정부 표준으로 지정되었고, DSA에서 사용하는 160비트의 해시 알고리즘 |
SHA-256 | SHA(Secure Hash Algorithm)의 한 종류로 256비트의 해시 알고리즘 |
HAS-160 | 국내 표준 서명 알고리즘 KCDSA(Korea certificate-based Digital Signature Algorithm)을 위해 개발된 해시 알고리즘 |
HAVAL | 메시지를 1024비트 블록으로 나누고 128, 160, 192, 224, 256 비트인 메시지 다이제스트를 출력하는 해시 알고리즘 |
(5) 데이터 암호화 전송
- 민감한 정보를 통신 채널을 통하여 전송 시 암/복호화 과정을 거쳐야 하고, IPSec, SSL/TLS, S-HTTP 등 보안 채널을 활용하여 전송
- IPSec: IP계층(3계층)에서 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용한 IP 보안 프로토콜
- IPSec 동작 모드: 전송 모드, 터널 모드
- IPSec 프로토콜: 인증(AH) 프로토콜, 암호화(ESP) 프로토콜, 키 관리(IKE) 프로토콜
- SSL/TLS: 전송계층(4계층)과 응용계층(7계층) 사이 클라이언트와 서버 간 데이터 암호화(기밀성), 인증과 전송시 데이터 무결성 보장하는 보안 프로토콜
- SSL/TLS 보안 기능: 기밀성, 상호인증, 메시지 무결성
- S-HTTP: 웹상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로 클라이언트와 서버 간 전송되는 모든 메시지를 각각 암호화하여 전송하는 기술
- VPN(Virtual Private Network): 여러 공중 인터넷망을 하나의 사설망처럼 사용할 수 있는 보안 기술
(7) 자산에 대한 보안 항목식별
- 정보자산 주요 용어: 자산, 사용자, 소유자, 관리자
- 정보자산 분류: 소프트웨어, 하드웨어, 데이터, 문서, 시설, 지원설비, 인력
- 자산 목록표: 자산번호, 자산명, OS, 위치, 담당자(관리자)
(8) SW 개발 보안 적용
- 사례: BSIMM, Open SAMM, Seven TouchPoints, MS-SDL, OWASP CLASP
- OWASP: 오픈 소스 웹 애플리케이션 보안 프로젝트로 주로 웹을 통한 정보 유출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는 기관
BSIMM | 보안 활동의 성숙도 수준을 영역별로 측정하여 SW 개발에 필요한 보안 능력 향상을 목표로 하는 개발 프레임워크 |
Open SAMM | OWASP에서 개발하여 개방을 원칙으로 소규모, 중규모, 대규모로 점진적인 확대가 가능한 융통성 있는 프레임워크 |
Seven ToochPoints | SW 보안의 모범 사례를 SDLC에 통합한 소프트웨에 개발 보안 생명주기 방법론 |
MS SDL | MS 자사 소프트웨어 개발에 의무 적용하도록 한 보안 프레임워크로 동일 제품에 대해 pre-SDL/post-SDL 테스트 |
OWASP CLASP | 프로그램 설계나 코딩 오류를 찾아내어 개선하기 위해 개발팀에 취약점 목록 제공, 운영중인 시스템에 적용 용이 |
2. 소프트웨어 개발 보안 구현
(1) 시큐어 코딩 가이드
- 설계 및 구현 단계에서 해킹 등의 공격을 유발할 가능성이 있는 보안 취약점을 사전에 제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법
- 7가지 적용 대상: 입력데이터 검증 및 표현, 보안 기능, 시간 및 상태, 에러 처리, 코드 오류, 캡슐화, API 오용 (입보시 에코캡아)
입력데이터 검증 및 표현 | 입력값에 대한 검증 누락, 부적절한 검증, 잘못된 형식 지정 | 입력데이터에 대한 유효성 검증체제 수립 |
보안 기능 | 보안 기능의 부적절한 구현 | 인증, 접근 제어, 비밀번호 정책 설계 및 구현 |
시간 및 상태 | 병렬, 다중 프로세스 동작시 시간 및 상태의 부적절한 관리 | 공유 자원 접근 직렬화, 병렬 실행 프레임워크 |
에러 처리 | 에러 미처리, 불충분한 처리로 에러 메시지에 중요정보가 포함 | 충분한 에러 처리 |
코드 오류 | 개발자가 범할 수 있는 코딩 오류로 인해 유발 | 코딩 규칙 도출하여 검증 가능한 스크립트 |
캡슐화 | 불충분한 캡슐화로 인해 미인가 사용자에게 데이터 누출 | 디버그 코드 제거, 클래스 내 Private 접근자 |
API 오용 | 의도된 사용에 반하거나, 보안에 취약한 API 사용 | 개발 언어별 취약 API 확보 및 검출 프로그램 |
- 입력 데이터 검증 및 표현: XSS(Cross Site Scripting), 사이트 간 요청 위조(CSRF; Cross-Site Request Forgery), SQL 삽입(Injection)
- XSS: 검증되지 않은 외부 입력 데이터가 포함된 웹페이자 전송되어, 사용자가 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격
- CSRF: 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 되는 공격
- SQL 삽입: 응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시키고 데이터베이스(DB)에 접근하여 정보를 탈취, 조작하는 공격
XSS | Stored XSS | 악성 스크립트 포함된 페이지를 읽음과 동시에 브라우저에서 실행되면서 감염 |
Reflected XSS | 공격용 악성 URL 포함된 이메일 클릭시 공격 스크립트가 피해자로 반사되어 정보 탈취 | |
DOM XSS | DOM 기반 XSS 취약 브라우저를 대상으로 조작된 URL 포함된 이메일 클릭시 공격 | |
SQL 삽입 |
From SQL Injection | HTML From 인증 취약한 경우 사용자 인증을 위한 쿼리 문을 조작하여 인증 우회 |
Union SQL Injection | UNION 연산자를 이용한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격 | |
Stored Procedure SQL Injection | 저장 프로시저를 이용하여 공격 | |
Mass SQL Injection | 한 번의 공격으로 대량의 DB 값이 변조되어 홈페이지에 치명적인 영향을 미치는 공격 | |
Error-Based SQL Injection | DB 쿼리에 대한 에러값을 기반으로 점진적으로 DB 정보를 획득하는 공격 | |
Blind SQL Injection | 쿼리 결과의 참과 거짓을 통해 의도하지 않은 SQL 문을 실행하여 공격 |
- 보안 기능: 인증 없이 기능 허용, 부적절한 인가, 취약한 암호화 알고리즘 사용, 중요 정보 평문 저장 및 전송, 하드 코드 비밀번호, 취약한 패스워드 조건
- 에러 처리: 오류 상황 대응 부재, 적절하지 않은 예외 처리, 오류 메시지 통한 정보 노출
- 세션 통제: 불충분한 세션 관리
- 코드 오류: 널 포인터 역참조, 정수를 문자로 변환, 부적절한 자원 해제, 초기화되지 않은 변수 사용
- 캡슐화: 잘못된 세션에 의한 데이터 정보 노출, 제거되지 않고 남은 디버그 코드, 민감한 데이터를 가진 내부 클래스 사용, 시스템 데이터 정보 노출
- API 오용: DNS Lookup에 의존한 보안 결정, 위험하다고 알려진 함수 사용, 널(Null) 매개변수 미검사
(2) 시스템 보안 구현
- 유닉스/리눅스 주요 로그 파일
wtmp/wtmpx | 사용자 로그인/로그아웃 정보 | last |
utmp/utmpx | 현재 시스템에 로그인한 사용자 정보 | who, w, users, finger |
btmp, btmpx | 로그인에 실패한 정보 | lastb |
lastlog | 사용자별 최근 로그인에 대한 정보 | lastlog |
sulog | su(Switc user) 명령어 실행 성공/실패 결과 정보 | 명령어 없음 |
messages | 운영에 대한 전반적인 메시지 저장 | |
secure | 사용자 인증 등 보안과 관련된 주요 로그 |
- 네트워크 보안 솔루션: 방화벽, WAF, NAC, IDS, IPS, WIPS, UTM, VPN, SIEM, ESM
방화벽 | 기업 내부, 외부 간 트래픽을 모니터링 하여 시스템의 접근을 허용하거나 차단하는 시스템 |
웹 방화벽 (WAF) | 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안 장비 |
네트워크 접근 제어 (NAC) | 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션 |
침입 탐지 시스템 (IDS) | 비인가 사용자에 의한 자원 접근과 보안정책 위반 행위(침입)을 실시간으로 탐지하는 시스템 |
침입 방지 시스템 (IPS) | 네트워크 공격이나 침입을 실시간으로 차단하고, 유해 트래픽에 대한 조치를 능동적으로 처리하는 시스템 |
무선 침입 방지 시스템 (WIPS) | 미인가 무선 단말기의 접속을 자동으로 탐지/차단하고 보안에 취약한 무선 공유기를 탐지하는 시스템 |
통합 보안 시스템 (UTM) | 방화벽, IDS, IPS, VPN 등 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템 |
가상사설망 (VPN) | 여러 공중 인터넷망을 하나의 사설망처럼 사용할 수 있는 보안 기술 |
SIEM | 다양한 보안 장비와 이벤트 정보를 수집, 분석하여 위협 상황 시 신속하게 대응하는 보안 관제 솔루션 |
ESM | 여러 보안 시스템으로부터 발생한 이벤트 및 로그를 통합해서 관리, 분석, 대응하는 보안 관리 시스템 |
- 시스템 보안 솔루션: 스팸 차단 솔루션(Anti-Spam Solution), 보안 운영체제(Secure OS)
- 콘텐츠 유출 방지 보안 솔루션: 보안 USB, 데이터 유출 방지(DLP; Data Loss Prevention), 디지털 저작권 관리(DRM; Digital Right Management)
- 취약점 분석: 자산이 가지고 있는 보안상의 결점 또는 취약한 속성을 파악하여 위험을 낮추는 활동
- 대상: 환경 및 시설, 하드웨어, 소프트웨어
- 취약점 분석 절차: 자산 조사 및 분석, 진단 대상 선정, 제약사항 확인, 진단 수행, 결과 분석/보고서 작성 (자진 제진결보)
- SW 개발 보안 테스트와 결함 관리: 소프트웨어 보안 요구사항이 반영돼 있음을 보증하고, 취약점을 개선하여 안전한 소프트웨어를 개발하기 위한 활동
- 유형: 정적 분석, 동적 분석
(3) 비즈니스 연속성 계획(BCP; Business Continuity Plan)
- 각종 재해, 장애, 재난으로부터 위기관리를 기반으로 비상계획, 복구 및 재개 등을 통해 비즈니스 연속성을 보장하는 체계
BIA | 장애나 재해로 인한 운영상 손실을 시간에 따른 영향도 및 손실 평가를 조사하는 BCP를 구축하기 위한 비즈니스 영향 분석 | |
RTO | 업무중단 시점부터 업무가 복구되어 다시 가동될 때까지의 시간으로 재해 시 복구 목표 시간 선정에 활용 | |
RPO | 업무중단 시점부터 데이터가 복구되어 다시 가동될 때 데이터의 손실 허용 시점으로 재해 시 복구 목표 지점 선정에 활용 | |
DRP | 재난으로 장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난복구계획 | |
DRS | 재해복구계획의 원활한 수행을 지원하기 위하여 인적/물적 자원을 확보하고 지속적인 관리체계가 통합된 재해복구센터 | |
Mirror Site | 주 센터와 데이터복구센터 모두 실시간 동시 서비스가 가능 (RTO 0) | |
Hot Site | 주 센터와 동일한 수준의 자원을 원격지에 보유하며 데이터의 최신 상태 유지 (RTO 4시간 이내) | |
Warm Site | 중요성이 높은 자원만 부분적으로 재해복구센터에 보유 (RTO 수일~수주) | |
Cold Site | 데이터만 원격지에 보관, 재해 시 데이터를 근간으로 필요 자원을 조달하여 복구 (수주~수개월) |
(4) 보안 용어
- 보안 공격
부 채널 공격 | 암호화 알고리즘의 실행 시기의 전력 소비, 전자기파 방사 등의 물리적 특성을 측정하여 정보를 획득하는 공격 |
드라이브 바이 다운로드 | 웹서버와 웹페이지에 악성 스크립트를 설치, 사용자 접속 시 실행되어 의도된 서버로 연결하여 감염시키는 공격 |
워터링홀 | 특정인 표적 공격으로 자주 방문하는 웹사이트에 악성코드 심거나 배포하는 URL로 유인하여 감염시키는 공격 |
비즈니스 스캠 | 기업 이메일 계정 도용하여 무역 거래 대금 가로채는 사이버 범죄 |
하트 블리드 | 하트비트 확장 모듈에서 클라이언트 요청 메시지 처리 시 데이터 길이 미검증 취약점을 이용하여 데이터 탈취 |
크라임웨어 | 금융정보 또는 인증정보 탈취하거나 유출을 유도하여 금전적인 이익 등의 범죄행위를 목적으로 하는 악성코드 |
토르 네트워크 | 네트워크 경로를 알 수 없도록 암호화 하여 데이터를 전송하며, 익명으로 인터넷을 사용할 수 있는 가상 네트워크 |
MITM 공격 | 네트워크 통신을 조작하여 통신 내용을 도청/조작하는 중간자(Man in the Middle) 공격 |
DNS 스푸핑 공격 | DNS 응답, DNS 서버 캐시 정보를 조작하여 공격대상이 의도하지 않은 주소로 접속하게 하는 공격 |
포트 스캐닝 | 공격자가 침입 전 대상 호스트에 어떤 포트가 활성되어 있는지 확인하는 기법으로 사전 취약점을 분석 작업 |
디렉토리 리스팅 | WAS의 미흡한 설정으로 인덱싱 활성화된 경우, 강제 브라우징으로 디렉토리 및 파일 목록을 볼 수 있는 취약점 |
리버스 쉘 공격 | 타깃 서버가 클라이언트(공격자)로 접속해서 클라이언트가 타깃 서버의 쉘을 획득해서 공격 |
익스플로잇 | 소프트웨어나 하드웨어의 버그/취약점을 이용하여 공격자가 의도한 명령을 실행하도록 하는 코드 또는 행위 |
스턱스넷 공격 | 원자력, 전기, 철강, 반도체, 화학 등 산업 기반 시설의 제어 시스템에 침투해서 오작동 일으키는 악성코드 공격 |
크리덴셜 스터핑 | 다른 곳에서 유출된 아이디와 비밀번호 등의 로그인 정보를 다른 곳에 무작위로 대입해 로그인 되면 정보 유출 |
- 보안 공격 대응
허니팟 | 비정상 접근을 탐지하기 위해 의도적으로 허술하게 만들어 노출하는 유인시스템 |
OWASP Top 10 | 보안상 큰 영향을 줄 수 있는 10가지 취약점에 대한 대응방안 제공하는 웹 보안 기술 가이드 |
핑거프린팅 | 콘텐츠 저작권 정보와 구매한 사용자 정보를 삽입하여 불법 배포자에 대한 위치 추적 가능 |
워터마킹 | 콘텐츠 저작권자 정보를 삽입하여, 불법 복제 시 원소유자 증명하는 콘텐츠 보호 기술 |
이상금융거래탐지시스템 (FDS) | 전자금융거래 정보를 종합 분석하여 의심 거래를 탐지하고, 이상 거래를 차단하는 시스템 |
CC (Common Criteria) | 정보기술 보안 기능과 보증에 대한 국제 평가 기준 |
사이버 위협정보 분석 공유시스템 (C-TAS) | 사이버 위협정보를 수립해서 인터넷진흥원(KISA) 주관으로 공유하는 침해 예방 대응 시스템 |
장착형 인증 모듈 (PAM) | 리눅스 시스템 내에서 각종 애플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러리 |
CVE | 소프트웨어의 보안취약점을 표준화한 식별자 목록 |
CWE | 소프트웨어에서 공통적으로 발생하는 약점을 체계적으로 분류한 목록 |
ISMS/ISMS-P | 정보보호 절차와 과정을 수립하여, 지속적으로 관리하기 위한 체계 |
PIMS | 개인정보보호 체계를 구축했는지 평가하여, 기업에게 부여하는 인증제도 |
PIA | 개인정보활용 시스템 도입이나 기존 시스템 변경 시 프라이버시에 미치는 영향 도출하는 체계 |
TKIP | 임시 키 무결성 프로토콜 |