본문으로 바로가기

Secure SDLC

 - 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것을 의미

 - 요구사항 분석, 설계, 구현, 테스트, 유지 보수 등 SDLC 전체 단계에 걸쳐 수행되어야 할 보안 활동을 제시


요구사항 분석 단계에서의 보안 활동

 - 보안 항목에 해당하는 요구사항을 식별하는 작업을 수행

 - 전산화되는 정보가 가지고 있는 보안 수준을 보안 요소별로 등급을 구분하여 분류

 - 조직의 정보보호 관련 보안 정책을 참고하여 소프트웨어 개발에 적용할 수 있는 보안 정책 항목들의 출처, 요구 수준, 세부 내용 등을 문서화


설계 단계에서의 보안 활동

 - 식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고, 보안 설계서를 작성

 - 소프트웨어에서 발생할 수 있는 위협을 식별하여 보안대책, 소요예산, 사고 발생 시 영향 범위와 대응책 등을 수립


구현 단계에서의 보안 활동

 - 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하며 설계서에 따라 보안 요구사항들을 구현

 - 지속적인 단위 테스트를 통해 소프트웨어에 발생할 수 있는 보안 취약점을 최소화

 - 코드 점검 및 소스 코드 진단 작업을 통해 소스 코드의 안정성을 확보


테스트 단계에서의 보안 활동

 - 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검


유지보수 단계에서의 보안 활동

 - 이전 과정을 모두 수행하였음에도 발생할 수 있는 보안사고들을 식별하고, 사고 발생 시 이를 해결하고 보안 패치를 실시


보안요소

기밀성(Confidentiality) - 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용
- 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음
무결성(Integrity) - 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음
가용성(Availability) - 인가받은 사용자는 언제라도 사용할 수 있음
인증(Authentication) - 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위
- 대표적 방법으로는 패스워드, 인증용 카드, 지문 검사 등이 있음
부인 방지(Non-Repudiation) - 데이터를 송·수신한 자가 송·수신 사실을 부인할 수 없도록 ·수신 증거를 제공

입력 데이터 검증 및 표현

 - 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목


SQL 삽입(SQL Injection)

 - 입력란에 SQL을 삽입하여 무단으로 DB를 조회하거나 조작하는 보안 약점

 - 동적 쿼리에 사용되는 입력 데이터 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정하여 방지


경로 조작 및 자원 삽입

 - 데이터 입출력 경로를 조작하여 서버 자원을 수정·삭제할 수 있는 보안 약점

 - 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용하여 방지할 수 있음


크로스 사이트 스크립팅(XSS)

 - 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점

 - HTML 태그의 사용을 제한하거나 스크립트에 삽입되지 않도록 '<' , '>' , '&' 등의 문자를 다른 문자로 치환함으로써 방지할 수 있음


운영체제 명령어 삽입

 - 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점

 - 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로써 방지할 수 있음


위험한 형식 파일 업로드

 - 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점

 - 업로드 되는 파일의 확장자 제한, 파일명의 암호화, 웹사이트와 파일 서버의 경로 분리, 실행 속성을 제거하는 등의 방법으로 방지할 수 있음


신뢰되지 않는 URL 주소로 자동접속 연결

 - 입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안 약점

 - 연결되는 외부 사이트의 주소를 화이트 리스트로 관리함으로써 방지할 수 있음


암호 알고리즘

 - 패스워드, 주민번호, 은행계좌와 같은 중요정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법을 의미


개인키 암호화 기법

 - 동일한 키로 데이터를 암호화하고 복호화 함

 - 대칭 암호 기법 또는 단일키 암호화 기법이라고도 함

 - 블록 암호화 방식 : DES, SEED, AES, ARIA

 - 스트림 암호화 방식 : LFSR, RC4


공개키 암호화 기법

 - 데이터를 암호화할 때 사용하는 공개키는 데이터베이스 사용자에게 공개하고, 복호화할 때의 비밀키는 관리자가 비밀리에 관리

 - 비대칭 암호 기법이라고도 하며 대표적으로는 RSA 기법이 있음


해시

 - 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것을 의미

 - 해시 알고리즘을 해시 함수라고 부르며 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 부름

 - 해시 함수의 종류에는 SHA 시리즈, MD5, N-NASH, SNEFRU 등이 있음


서비스 거부(DoS, Denial of Service) 공격의 개념

 - 표적이 되는 서버의 자원을 고갈시킬 목적으로 다수의 공격자 또는 시스템에서 대량으 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 표적이 되는 서버의 정상적인 기능을 방해하는 것

 - Ping of Death, Smurf attack, SYN Flooding, TearDrop, Land attack, DDoS 등이 있음


Ping of Death

 - Ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 공격 대상의 네트워크를 마비시키는 서비스 거부 공격 방법


Smurf attack

 - IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법

 - 공격자는 송신 주소를 공격 대상지의 IP 주소로 위장하고 해당 네트워크 라우터의 브로드캐스트 주소를 수신지로 하여 패킷을 전송하면 라우터의 브로드캐스트 주소로 수신된 패킷은 해당 네트워크 내의 모든 컴퓨터로 전송 됨

 - 해당 네트워크 내의 모든 컴퓨터는 수신된 패킷에 대한 응답 메시지를 송신 주소인 공격 대상지로 집중적으로 전송하게 되는데 이로 인해 공격 대상지는 네트워크 과부하로 인해 정상적인 서비스를 수행할 수 없게 됨

 - Smurf attack을 대비하는 방법 중 하나는 각 네트워크 라우터에서 브로드캐스트 주소를 사용할 수 없게 설정


SYN Flooding

 - TCP는 신뢰성 있는 전송을 위해 3way-handshake를 거친 후에 데이터를 전송하게 되는데 SYN Flooding은 공격자가 가상의 클라이언트로 위장하여 3way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상지인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법

 - SYN Flooding을 대비하는 방법은 백로그 큐 늘리기, syncookies 기능 활성화 등이 있음


TearDrop

 - 데이터의 송·수신 과정에서 패킷의 크기가 커 여러 개로 분할되어 전송될 때 분할 순서를 알 수 있도록 Fragment Offset 값을 함께 전송하는데 TearDrop은 이 Offset 값을 변경시켜 수신 측에서 패킷을 재조립할때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법

 - TearDrop을 대비하는 방법은 Fragment Offset이 잘못된 경우 해단 패킷을 폐기하도록 설정


Land attack

 - 패킷을 전송할때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 공격 대상에게 전송하는 것으로 이 패킷을 받은 공격 대상은 송신 IP 주소가 자신이므로 자신에게 응답을 수행하게 되는데 이러한 패킷이 계속해서 전송될 경우 자신에 대해 무한히 응답하게 하는 공격

 - Land attack을 대비하는 방법은 송신 IP 주소와 수신 IP 주소의 적절성을 검사해야 함


DDoS

 - 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을 수행하는 것으로 네트워크에서 취약점이 있는 호스트들을 탐색한 후 이들 호스트들에 분산 서비스 공격용 툴을 설치하여 에이전트로 만든 후 DDoS 공격에 이용


네트워크 침해 공격 관련 용어


스미싱

 - 문자 메시지를 이용해 사용자의 개인 신용 정보를 빼내는 수법


스피어 피싱

 - 사회 공학의 한 기법으로 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도해 사용자의 개인 정보를 탈취


APT

 - 다양한 IT 기술과 방식들을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격


Brute Force

 - 암호화된 문서의 암호키를 찾아내기 위해 적용 가능한 모든 값을 대입하여 공격하는 방식


큐싱

 - QR코드를 통해 악성 앱의 다운로드를 유도하거나 악성 프로그램을 설치하도록 하는 금융사기 기법의 하나로 QR코드와 개인정보 및 금융정보를 낚는다는 의미의 합성 신조어


SQL Injection

 - 전문 스캐너 프로그램 혹은 봇넷 등을 이용해 웹사이트를 무차별적으로 공격하는 과정에서 취약한 사이트가 발견되면 데이터베이스 등의 데이터를 조작하는 일련의 공격 방식


XSS

 - 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점

 

 


정보 보안 침해 공격 관련 용어


좀비 PC

 - 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터로 C&C 서버의 제어를 받아 주로 DDoS 공격 등에 이용


C&C 서버

 - 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도올 사용하는 서버


봇넷

 - 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태를 말함


 - 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임으로써 결국 시스템을 다운시키는 바이러스의 일종으로 분산 서비스 거부 공격, 버퍼 오버플로우 공격, 슬래머 등이 웜 공격의 한 형태


제로 데이 공격

 - 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통하여 이루어지는 보안 공격으로 공격의 신속성을 의미


키로거 공격

 - 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드, 계좌번호, 카드번호 등과 같은 개인의 중요한 정보를 몰래 빼가는 해킹 공격


랜섬웨어

 - 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일등을 암호화해 사용자가 열지 못하게 하는 프로그램으로 암호 해독용 프로그램의 전달을 조건으로 사용자에게 돈을 요구하기도 함


백도어

 - 시스템 설계자가 서비스 기술자나 유지 보수 프로그램 작성자의 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로로 컴퓨터 범죄에 악용되기도 함


트로이 목마

 - 정상적인 기능을 하는 프로그램으로 위장하여 프로그램 내에 숨어 있다가 해당 프로그램이 동작할 때 활성화되어 부작용을 일으키는 것으로 자기 복제 능력은 없음