1. Secure SDLC
Secure SDLC
- SDLC에 보안 강화를 위한 프로세스를 포함한 것
- 소프트웨어 개발 생명주기(SDLC)
- 소프트웨어 개발 방법론의 바탕이 되는 것
- 소프트웨어 개발 생명주기(SDLC)
- Secure SDLC의 대표적인 방법론
- CLASP : SDLC의 초기 단계에서 보안을 강화하기 위해 개발된 방법론
- SDL : 마이크로소프트 사에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론
- SevenTouchpoints : 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론
SDLC 단계별 보안 활동
- 요구사항 분석 단계
- 설계 단계
- 구현 단계
- 테스트 단계
- 유지보수 단계
소프트웨어 개발 보안 요소
- 기밀성
- 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용된다.
- 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없다.
- 무결성 : 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있다.
- 가용성 : 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있다.
- 인증
- 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지 확인하는 모든 행위
- 패스워드, 인증용 카드, 지문검사
- 부인방지 : 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공한다.
* 기밀성, 무결성, 가용성을 보안의 3대 요소라 한다.
시큐어 코딩
- 보안 요소들을 고려하며 코딩하는 것
- 안정성과 신뢰성을 확보한다.
2. 세션 통제
세션 통제 관련 용어
- 세션 : 서버와 클라이언트의 연결
- 세션 통제
- 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것
- 요구사항 분석 및 설계 단계에서 진단해야 하는 보안 점검 내용
- 세션 ID :
- 서버가 클라이언트를 구분하기 위해 부여하는 키(key)
- 클라이언트가 서버에 요청을 보낼 때마다 세션 ID를 통해 인증이 수행된다.
- 스레드 : 프로세스 내 작업 단위, 시스템 자원 할당받아 실행하는 프로그램 단위
- 다중 스레드 : 두 개 이상 스레드가 생성되어 동시 처리되는 다중 작업
- URL Rewrite : 쿠키를 사용할 수 없는 환경에서 세션 ID 전달을 위해 URL에 세션 ID를 포함시키는 것
세션 통제의 보안 약점
- 불충분한 세션 관리 : 일정한 규칙이 존재하는 세션 ID가 발급되거나, 타임아웃이 너무 길게 설정되어 있는 경우 발생하는 보안 약점
- 잘못된 세션에 의한 정보 노출 : 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
세션 ID의 관리 방법
- 안전한 서버에 최소 128비트의 길이로 생성
- 난수 알고리즘을 적용
- URL Rewrite 기능을 사용하지 않는 방향으로 설계
- 로그인 시 로그인 전의 세션 ID를 삭제하고 재할당
- 장기간 접속 중이라면 주기적으로 재할당 되도록 설계
3. 입력 데이터 검증 및 표현
입력 데이터 검증 및 표현
- 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 점검해야 하는 보안 점검 항목들
입력 데이터 검증 및 표현의 보안 약점
- SQL 삽입(Injection)
- 웹 응용 프로그램에 SQL 삽입, DB의 데이터를 유출 및 변조, 관리자 인증을 우회하는 보안 약점
- 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않도록 필터링하여 방지
- 경로 조작 및 자원 삽입
- 데이터 입출력 경로를 조작하여 서버 자원을 수정, 삭제할 수 있는 보안약점
- 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용하여 방지 가능
- 크로스사이트 스크립팅(XSS)
- 웹페이지에 악의적인 스크립트 삽입, 방문자들의 정보 탈취, 비정상적인 기능 수행 유발하는 보안 약점
- 운영체제 명령어 삽입
- 위험한 형식 파일 업로드
- 신뢰되지 않는 URL 주소로 자동접속 연결
- 메모리 버퍼 오버플로
- 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점
입력 데이터 검증 및 표현 관련 용어
- 경로 순회 : 경로를 탐색할 때 사용하는 '/', '' , '..' 등의 기호를 악용해서 허가되지 않은 파일에 접근하는 방식
- 스크립트
- 소프트웨어 수행에 필요한 처리 절차가 기록된 텍스트
- 대표적인 스크립트 파일의 확장자에는 asp, jsp, php
4. 보안 기능
보안 기능
- 소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근 제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들
보안 기능의 보안 약점
- 적절한 인증 없이 중요 기능 허용
- 부적절한 인가
- 중요한 자원에 대한 잘못된 권한 설정
- 취약한 암호화 알고리즘 사용
- 중요 정보 평문 저장 및 전송
- 하드코드된 함호화 키
- 암호화된 키도 하드코드된 경우 유출 시 역계산 또는 무차별 대입 공격에 탈취당할 수 있다.
- 상수 형태의 암호키를 사용하지 않고, 암호화 키 생성 모듈 또는 보장된 외부 공간 이용해서 방지할 수 있다.
보안 기능 관련 용어
- HTTPS
- 웹브라우저와 서버 간의 안전한 통신을 위해 HTTP와 암호 통신 규약을 결합한 것
- SSL
- 데이터를 송수신하는 두 컴퓨터 사이에 위치하여 인증, 암호화, 무결성을 보장하는 업계 표준 프로토콜
- 하드코드
- 데이터를 코드 내부에 직접 입력하여 프로그래밍하는 방식
- 무차별 대입 공격
- 암호화된 문서의 암호키를 찾아내기 위해 적용 가능한 모든 값을 대입하여 공격하는 방식
5. 시간 및 상태
시간 및 상태
- 동시 수행을 지원하는 병렬 처리 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 시스템이 원활하게 동작되도록 하기 위한 보안 점검 항목들
시간 및 상태의 보안 약점
- TOCTOU 경쟁 조건
- 검사 시점(Time Of Check)과 사용 시점(Time Of Use)을 고려하지 않고 코딩하는 경우 발생하는 보안 약점
- 동기화 구문을 사용하여 방지할 수 있다.
- 종료되지 않는 반복문 또는 재귀함수
시간 및 상태 관련 용어
- 경쟁 조건 : 2개 이상의 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태를 의미
- 동기화 구문 : 공유 자원에 대해 둘 이상의 프로세스가 접근하는 것을 막는 구문
6. 에러 처리
에러 처리
- 소프트웨어 실행 중에 발생할 수 있는 오류들을 사전에 정의하여 오류로 인해 발생할 수 있는 문제들을 예방하기 위한 보안 점검 항목들
에러 처리의 보안 약점
- 오류 메시지를 통한 정보 노출
- 오류 상황 대응 부재
- 부적절한 예외 처리
7. 코드 오류
코드 오류
- 소프트웨어 구현 단계에서 개발자들이 코딩 중 실수하기 쉬운 형 변환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목들
코드 오류의 보안 약점
- 널 포인터 역참조
- 널 포인터가 가리키는 메모리의 위치 값을 저장할 때 발생하는 보안 약점
- 부적절한 자원 해제
- 해제된 자원 사용
- 초기화되지 않은 변수 사용
스택 가드
- 주소가 저장되는 스택에서 발생하는 보안약점을 막는 기술 중 하나
- 메모리상에서 프로그램 복귀 주소와 변수 사이에 특정 값을 저장한 후 그 값이 변경되었을 경우, 오버플로우 상태로 판단하고 프로그램 실행을 중단, 복귀주소의 호출을 막는다.
8. 캡슐화
캡슐화
- 정보 은닉이 필요한 중요한 데이터와 기능을 불완전하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목들
캡슐화의 보안 약점
- 잘못된 세션에 의한 정보 노출
- 제거되지 않고 남은 디버그 코드
- 시스템 데이터 정보 노출
- Public 메소드로부터 반환된 Private 배열
- Private 배열에 Public 데이터 할당
접근제어자
- 외부로부터 접근을 제한하기 위해 사용되는 예약어
- 접근 제어자의 종류
- Public : 전부 접근 가능
- Protected : 패키지 외부 접근 불가
- Default : 패키지외부, 하위클래스 접근 불가
- Private : 클래스 내부만 접근 가능
9. API 오용
API 오용
- 소프트웨어 구현 단계에서 API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 점검 항목들
API 오용의 보안 약점
- DNS Lookup에 의존한 보안결정
- 취약한 API 사용
10. 암호 알고리즘
암호 알고리즘
- 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법
암호 방식 분류
- 암호화 방식
- 양방향
- 개인키
- Stream 방식
- Block 방식
- 공개키
- 개인키
- 단방향
- Hash
- 양방향
개인키 암호화 기법(Private Key Encryption)
- 동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법
- 대칭 암호 기법 또는 단일키 암호화 기법이라고도 한다.
- 암호화 복화화 속도가 빠르다.
- 개인키 암호화 기법의 종류
- 스트림 암호화 방식
- 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화하는 방식
- 종류 : LSFR, RC4
- 블록 암호화 방식
- 한 번에 하나의 데이터 블록을 암호화하는 방식
- 종류 : DES, SEED, AES, ARIA
- 스트림 암호화 방식
공개키 암호화 기법(Public Key Encryption)
- 암호화할 때 사용하는 공개키는 사용자에게 공개하고, 복호화할 때의 비밀키는 관리자가 비밀리에 관리하는 암호화 기법
- 비대칭 암호 기법이라고도 한다.
- 암호화 / 복호화 속도가 느리다.
- 대표적으로 RSA가 있다.
양방향 알고리즘의 종류
- SEED
- 한국 인터넷 진흥원이 개발한 블록 암호화 알고리즘
- 블록크기는 128비트, 키 길이에 따라 128, 256으로 분류
- ARIA
- 국가 정보원, 산학연협회가 개발한 블록 암호화 알고리즘
- AES 암호화 알고리즘의 규격을 따른다.
- DES
- 미국 NBS에서 발표한 개인키 암호화 알고리즘
- 블록 크기는 64비트, 키 길이는 56비트, 16회의 라운드 수행
- DES를 3번 적용하여 보안을 더욱 강화한 3DES가 있다
- AES
- 미국 표준 기술 연구소에 발표한 개인키 암호화 알고리즘
- DES의 한계를 느낀 NIST에서 공모 후 발표
- 블록크기는 128비트, AES-128, AES-192, AES-256
- RSA
- 라이베스트, 샤미르, 애들먼에 의해 제안된 공개키 암호화 알고리즘
- 큰 수를 소인수 분해하기 어렵다는 것에 착안해서 제작
해시
- 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
- 해시 알고리즘을 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 부른다.
해시 함수의 종류
- SHA 시리즈
- 미국 국가안보국(NSA)이 설계, 미국 국립표준기술 연구소에 의해 발표
- MD5
- 암호화 해시 함수, 1991년 MD4를 개선한 알고리즘
- 블록 크기가 512비트, 키 길이는 128비트
- N-NASH
- 일본의 전신주식회사(NTT)가 발표한 암호화 해시함수
- 블록크기, 키 길이가 모두 128비트
- SNEFRU
- R.C.Merkle가 발표한 해시함수
- 32비트 프로세서에서 구현을 용이하게 할 목적으로 개발되었다.
11. 서비스 공격 유형
서비스 거부 공격(DoS : Denial of Service)
- 대량의 데이터를 한 곳의 서버에 집중적으로 전송하여 서버의 정상적인 기능을 방해하는 것
- 주요 서비스 거부 공격의 유형
- Ping of Death
- SMURFING
- SYN Flooding
- TearDrop
- Land Attack
- DDoS 공격
Ping of Death(죽음의 핑)
- 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크를 마비시키는 서비스 거부 공격 방법
SMURFING
- IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법
SYN Flooding
- 3-WAY-HANDSHAKE 과정을 의도적으로 중단시킴으로써 서버가 정상적인 서비스를 수행하지 못하게 하는 공격방법
TearDrop
- Offset 값을 변경시켜 수신 측에서 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법
LAND Attack
- 패킷을 전송할 때 송신 IP 주소와 수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 자신에 대해 무한히 응답하게 하는 공격방법
DDoS 공격
- 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 거부 공격을 수행하는 것
네트워크 침해 공격 관련 용어
- 스미싱
- 문자 메시지를 이용해 사용자의 개인 신용 정보를 빼내는 수법
- 스피어 피싱
- 특정 대상을 선중한 후 일반적인 이메일을 위장한 메일을 지속적으로 발송, 링크나 첨부 파일을 클릭하도록 유도해 개인정보를 탈취하는 수법
- APT
- 조직적으로 특정 기업이나 조직 네트워크에 침투해 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 공격
- 무작위 대입 공격
- 적용 가능한 모든 값을 대입하여 암호키를 찾아내려는 공격
- 큐싱
- QR코드를 통해 악성 앱 혹은 프로그램을 설치하도록 하는 금융사기 기법의 하나
- SQL Injection
- 데이터베이스 등의 데이터를 조작하는 일련의 공격 방식
- XSS
- 스크립트의 취약점을 악용한 해킹 기법
- 스니핑
- 네트워크 중간에서 남의 패킷 정보를 도청하는 해킹 유형, 수동적 공격 중 하나
추가적인 공격들
- 버퍼오버플로우
- 정해진 메모리의 범위를 넘치게 하여 원래의 리턴 주소를 변경시켜 임의의 프로그램이나 함수를 실행시키는 시스템 해킹 기법
- CSRF
- 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 기법
- 세션 하이재킹
- 상호 인증과정을 거친 후 접속해 있는 서버와 클라이언트 사이의 세션 정보를 가로채는 공격 기법
- ARP 스푸핑
- 자신의 물리적 주소(MAC)를 공격대상의 것으로 변조하여 데이터 패킷을 가로채거나 방해하는 방법
- ARP
- 호스의 IP 주소를 호스트와 연결된 네트워크의 접속 장치의 물리적 주소로 변환해 주는 프로토콜
- 워터링 홀
- 웹 사이트를 사전에 감염시켜, 사이트에 방문했을 때 악성코드에 감염되게 하는 웹 기반 공격
- 키로거 공격
- 컴퓨터 사용자의 키보드 움직임을 탐지해 정보를 몰래 빼가는 해킹 공격
- 랜섬웨어
- 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램
- 백도어
- 시스템 설계자가 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로, 컴퓨터 범죄에 악용되기도 한다.
- 백도어 탐지 방법
- 무결성 검사
- 열린 포트 확인
- 로그 분석
- SetUID 파일 검사
12. 서버 인증
보안 서버
- 개인정보를 암호화하여 송수신할 수 있는 기능을 갖춘 서버
- 보안 서버의 기능
- 서버에 SSL인증서를 설치하여 전송 정보를 암호화하여 송수신하는 기능
- 서버에 암호화 응용 프로그램을 설치하고 전송 정보를 암호화하여 송수신하는 기능
인증
- 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차
- 지식기반 인증(Something You Know)
- 사용자가 기억하고 있는 정보를 기반으로 인증을 수행하는 것
- 지식 기반 인증 유형
- 고정된 패스워드
- 패스 프레이즈
- 아이핀
- 소유 기반 인증(Something You Have)
- 사용자가 소유하고 있는 것을 기반으로 인증을 수행하는 것
- 소유 기반 인증 유형
- 신분증
- 메모리카드
- 스마트카드
- OTP
- 생체 기반 인증(Something You Are)
- 사용자의 고유한 생체 정보를 기반으로 인증을 수행하는 것
- 생체 인증 대상 : 지문, 홍채/망막, 얼굴, 음성, 정맥 등
- 위치 기반 인증(Somewhere You Are)
- 인증을 시도하는 위치의 적절성 확인
- GPS, IP, 콜백 등
- 행위 기반 인증(Something You Do)
- 사용자의 행동 정보를 이용해 인증 수행
- 서명, 동작 등
- 지식기반 인증(Something You Know)
13. 보안 아키텍처 / 보안 프레임워크
보안 아키텍처
- 보안 요소 및 보안 체계를 식별하고 이들 간의 관계를 정의한 구조
보안 프레임워크
- 안전한 시스템 환경을 유지하고 보안 수준을 향상시키기 위한 체계
- ISO 27001
- 정보보안 관리 국제 표준
- 일종의 보안 인증이자 가장 대표적인 보안 프레임워크
14. 로그 분석
로그
- 시스템 사용에 대한 모든 내역을 기록해 놓은 것
리눅스 로그
- 리눅스에서는 시스템의 모든 로그를 /var/log 디렉터리에서 기록하고 관리한다
- 로그 파일을 관리하는 syslogd 데몬은 /etc/syslog.conf 파일을 읽어 로그 관련 파일들의 위치를 파악한 후 로그 작업을 시작한다.
윈도우 로그
- 이벤트 로그 형식으로 시스템의 로그를 관리한다.
- 이벤트 뷰어를 이용하여 이벤트 로그를 확인할 수 있다.
15. 보안 솔루션
보안 솔루션
- 외부로부터의 불법적인 침입을 막는 기술 및 시스템
- 주요 보안 솔루션
- 방화벽
- 침입 탐지 시스템
- 침입 방지 시스템
- 데이터 유출 방지
- 웹 방화벽
- VPN
- NAC
- ESM
- 방화벽
- 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용, 거부, 수정하는 기능을 가진 침입 차단 시스템
- 침입 탐지 시스템(IDS)
- 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템
- 오용 탐지 : 미리 입력해 둔 공격패턴이 감지되면 이를 알려줌
- 이상 탐지 : 평균적인 시스템의 상태를 기준으로 비정상적인 행위나 자원의 사용이 감지되면 이를 알려줌
- 침입방지 시스템(IPS)
- 비정상적인 트래픽을 능동적으로 차단하고 격리하는 보안 솔루션
- 데이터 유출 방지(DLP)
- 내부 정보의 외부 유출을 방지하는 보안 솔루션
- 웹 방화벽
- 일반 방화벽이 탐지하지 못하는 SQL 삽입(Injection) 공격, Cross-Site Scripting(XSS) 등의
웹 기반 공격을 방어할 목적으로 만들어진 웹 서버에 특화된 방화벽
- 일반 방화벽이 탐지하지 못하는 SQL 삽입(Injection) 공격, Cross-Site Scripting(XSS) 등의
- VPN
- 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 이용하는 것처럼 해주는 보안 솔루션
- NAC
- 네트워크에 접속하는 내부 PC의 일관된 보안 관리 기능을 제공하는 보안 솔루션
- 내부 PC의 소프트웨어 사용 현황을 관리하여 불법적인 소프트웨어 설치를 방지
- ESM
- 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 실기 요약 정리 응용 SW 기초 기술 활용 (0) | 2023.07.21 |
---|---|
[정보처리기사] 실기 요약 정리 프로그래밍 언어 활용(추후에 포스팅) (0) | 2023.07.21 |
[정보처리기사] 실기 요약 정리 SQL 응용 (3) | 2023.07.20 |
[정보처리기사] 실기 요약 정리 애플리케이션 테스트 관리 (3) | 2023.07.20 |
[정보처리기사] 실기 요약 정리 화면 설계 (7) | 2023.07.19 |