공부/정보처리기사

2020년 정보처리기사 실기 정리 #9

셩잇님 2022. 11. 15. 12:25
반응형

SW 개발 보안

소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려해 기능을 설계 및 구현하는 등 SW 개발 과정에서 지켜야 할 일련의 보안 활동을 말한다.

 

SW 개발 보안의 3대 요소 (기무가)

기밀성
인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성


가용성
권한을 가진 사용자나 애플레케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성


무결성
정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성

 

SW 개발 보안 용어 (자위취위)

자산
조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상


위협
조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위


취약점
위협이 발생하기 위한 사전 조건에 따른 상황


위험
위협이 취약점을 이용해 조직의 자산 손실 피해를 가져올 가능성

 

DOS 공격

시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래의 의도된 용도로 사용하지 못하게 하는 공격

 

DOS 공격의 종류

지역 시스템 공격
실제 대상 시스템에 접근해 서버 하드웨어 직접 과부하를 주는 공격


원격 네트워크 공격
공격자가 목표시스템에 접근하지 않고 원격지에서 인터넷을 이용한 공격

 

DDOS 공격

Dos의 또 다른 형태로 여러 대의 공격자를 분산 배치하여 동시에 동작하게 함으로써 특정 사이트를 공격하는 기법

 

DDos 공격 구성요소 (하마드)

핸들러
마스터 시스템의 역할을 수행하는 프로그램


에이전트
공격 대상에게 직접 공격을 가하는 시스템


마스터
공격자에게 직접 명령을 받는 시스템


공격자
공격을 주도하는 해커의 컴퓨터


데몬 프로그램
에이전시 시스템의 역할을 수행하는 프로그램

 

자원 고갈 공격

서버 간 핸드셰이크를 통해 통신이 연결되는 정상 트래픽과 달리 Dos 공격은 정상 접속을 시도하는 오픈된 소켓에 트래픽을 집중시킨다.


SYN 플러링
TCP 프로토콜의 구조적인 문제를 이용한 공격
서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격
공격자는 ACK를 발송하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원 할당을 해지 않고 자워만 소비하여 자원이 고갈


UDP 플러링
대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답메시지를 생성하게 하여 지속해서 자원을 고갈시키는 능력


스머프
출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP ㄸ쵀 패킷을 직접 브로드캐스팅하여 마비시크는 공격


PoD
큰 사이즈의 패킷을 의도적으로 목표 시스템으로 발생시켜 시스템이 서비스할 수 없는 상태로 만드는 공격

 

애플리케이션 공격

HTTP GET 플러딩
HTTP 캐시 옵션을 조작하여 캐싱 서버가 아닌 웹서버가 직접 처리하도록 유도, 웹 서버 자원을 소진시키는 서비스 거부 공격


Slowloris
HTTP GET 메소드를 사용해 헤더의 최종 끝을 알리는 개행 문자열인 \r\n\r\n을 전송하지 않고 \r\n만 전송하여 대상 웹서버와 연결상태를 장시간 지속시키고 연결 자원을 모두 소진시키는 서비스 거부 공격


RUDY
요청 헤더의 Content-length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결 상태를 유지시키는 공격

 

취약점 공격

랜드 어택
출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격기법


봉크/보잉크
프토콜의 오류 제어를 이용한 공격기법으로서 시스템의 패킿 재전송과 재조립이 과부하를 유발


티어 드롭
IP 패킷의 재좋바 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 Dos 공격

 

암호 알고리즘

데이터의 무결성 및 기밀성 확보를 위해 정보를 쉽게 해독할 수 없는 형태로 변환하는 기법

 

대칭키 암호 방식
암호화와 복호와에 같은 암호키를 쓰는 알고리즘

블록 암호 방식 : 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화는 블록 암호 알고리즘을 반복하는 방법 DES, AES, SEED
스트림 암호 방식 : 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식 RC4

 

비대칭키 암호 방식
공개 키를 이용해 암호화하고 공개 키에 해당하는 개인 키를 이용해 복호화하는 암호 방식
비대칭 키 암호 방식에서는 공개 키와 개인 키가 존재하며 공개 키는 누구나 알 수 있지만 그에 대응하는 개인키는 키의 소유자만이 알 수 있어야 함
비밀 키는 키의 소유자만이 알 수 있어야 하며 공개 키는 보안 타협 없이 공개적으로 배포가 가능
비대칭 키 암호를 구성하는 알고리즘은 대칭 키 암호 방식과 비교하여 공개 키 암호 방식이라고 부름

디피-헬만, RSA

 

해시 방식
단방향 알고리즘으로서 임의이 데이터를 고정된 길이의 데이터로 매핑하는 함수
해시 함수의 결과로 원본 데이터를 유추하기 어려운 것을 이용
SHA, MD5

 

법률적 검토(소프트웨어 개발 보안 활동 관련 법규 및 규정) *개망신

개인정보 보호법
개인정보 처리 과정상의 정보 주체와 개인 저옵 처리자의 권리, 의무 등을 규정

 

정보통신망 이용촉진 및 정보보호 등에 관한 법률
정보통신망을 통해 수집 처리 보관 이용되는 개인정보의 보호에 관한 규정

 

신용정보의 이용 및 보호에 관한 법률
개인 신용정보의 취급 단계별 보호조치 및 의무사항에 관한 규정

 

위치정보의 보호 및 이용 등에 관한 법률
개인 위치정보 수집 이용 제공 파기 및 정보 주체의 권리 등 규정

 

개인정보의 안전성 확보 조치 기준
개인정보 처리시스템으 보호 수준을 진단, 암호화에 사응하는 조치 필요 여부를 판단할 수 있는 기준을 규정

 

개인정보 보호법 검토

24조
고유 식별정보의 처리제한
고유 식별정보(주민등록번호, 여권번호, 운전면허번호, 외국인등록번호)를 처리하는 경우 (주여운외)

 

29조
안전조치 의무화
개인정보가 분실, 도난, 유출, 변조, 훼손되지 않도록 내부관리 계획 수립 (분도유변훼)

 

30조
개인정보 안전성 확보조치
개인정보를 안전하게 저장, 전송할 수 있는 암호화 기술의 적용 또는 이에 상응하는 조치 수행

 

정보통신망 이용촉진 및 정보보호 등에 관한 법률 검토

15조
개인정보의 보호조치
비밀번호 및 바이오 정보 일방향 암호화 저장
주민등록번호, 계좌번호, 금융정보를 암호화하여 저장


28조
개인정보 취급시 개인정보의 분실, 도난, 누출, 변조, 훼손 방지를 위해 기술적, 관리적 조치 수행

 

6조
개인정보의 암호화
비밀번호, 바이오 정보는 복호화되지 않도록 일방향 암호화여 저장

 

개인정보 등급 식별 (정보의 보안등급 예시)

1등급 (5)
그 자체로 개인을 식별할 수 있거나 민감한 개인정보
유출 시 범죄에 직접 이용 가능한 정보


2등급 (3)
조합되면 명확히 개인을 식별 가능한 정보
유출 시 법적 책임 부담 가능한 정보


3등급 (1)
개인정보와 결합하여 부가적인 정보 제공 가능한 정보
제한적인 분야에서 불법적 이용 가능한 정보

 

정보자산의 주요 용어 (자사소관)

자산
조직에서 보유한 가치 있는 모든 것

 

사용자
정보처리 기기 및 시스템을 활용해 자산을 사용하는 사람과 기관

 

유자
자산의 소유 권한 및 관리에 대한 최종 책임자
자산의 취득, 사용, 폐기 등 관리 권한 보유

 

관리자
자산의 소유자로부터 관리위임을 받은 자
자산의 보관 및 운영 책임을 짐

 

정보자산의 분류기준

SW
상용 또는 자체 개발된 소프트웨어 자산
애플리케이션, 개발도구, 유틸리티

 

HW
대외 서비스를 위해 사용되거나 개인이 사용하는 자산
서버, PC, 노트북, 라우터, 스위치

 

데이터
전자적 형태로 저장되는 데이터
DB, 데이터 파일

 

문서
종이매체로 된 정보 자산, 업무 목적 문서, 기록물
결재문서, 계약서, 합의서

 

시설
시스템 설치, 운영 장소 등 물리적 공간 및 시설
사무실, 전산실, 통신실

 

지원설비
정보시스템 운영을 지원하기 위한 설비
UPS, 항온항습기, 발전기

 

인력
시스템 운영 업무 수행중인 이력
내부직원, 협력업체

 

입력데이터 검증 및 표현

DBMS 조회, 결과 검증
SQL문 생성시 사용되는 입력값에 대한 검증 방법 설계


XML 조회, 결과 검증
디렉터리 서비스 조회시 사용되는 입력값에 대한 검증 방법 설계


웹 서비스 조회, 결과 검증
사용자 인증이 필요한 결제 등 웹 서비스 요청에 대한 유효성 검증 방법 설계


허용된 범위 내 메모리 접근 검증
허용된 범위의 메모리 버퍼에만 접근하여 버퍼 오버플로우가 발생하지 않도록 처리 방법 설계


보안 기능 입력값 검증
보인 기능 동작을 위해 사용되는 입력값 검증 방법 설계


업로드, 다운로드 파일 검증
업로드, 다운로드 파일의 무결성 실행 권한 등에 관한 유효성 검증 방법 설계

 

SW 개발 보안 적용 사례 (MS 7 CLA)

MS-SDL
MS는 안전한 SW를 개발하기 위해 자체 수립한 SDL 방법론 적용
적용 이후 이전보다 50% 이상 취약점 감소


Seven Touchpoint
SW 보안의 모범 사례를 SW 개발 라이프사이클에 통합
객관적인 위험 분석 및 테스트를 거쳐 안전한 SW를 만드는 방법을 정의


CLASP
SDLC 초기 단계에 보안 강화를 목적으로 하는 정형화된 프로세스
이미 운영중인 시스템에 적용하기가 용이

 

시큐어 코딩 가이드 (입보시 에코캡아)

설계 및 구현단계에서 해킹 등 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전에 제거하고, 외부 공격으로부터 안전한 SW를 개발하는 기법이다

 

입력데이터 검증 및 표현
프로그램 입력값에 대한 검증 누락, 부적절한검증, 잘못된 형식 지정
사용자 프로그램 입력데이터에 대한 유효성 검증체계를 수립하고 실패 시 처리 설계 및 구현

 

보안 기능
보안 기능의 부적절한 구현
인증, 접근 통제, 권한 관리 등 정책이 적절하게 반영되도록 설계 및 구현

 

시간 및 상태
동시에 수행 지원하는 병렬 시스템 또는 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리
공유 자원의 접근 직렬화, 병렬 실행 가능 프레임 워크 사용, 블록문 내에서만 재귀함수 호출

 

에러 처리
에러 미처리, 불충분한 처리 등 에러 메시지에 중요 정보 포함
에러 또는 오류 상황을 처리하지 않거나, 불충분하게 처리 되 중요 정보 유출 등 보안 약점이 발생하지 않게 시스템 설계 및 구현

 

코드 오류
개발자가 범하는 코딩 오류로 인해 유발
코딩 규칙 도출 후 검증 하능한 스크립트 구성과 경고 순위의 상향 조정 후 경고 메시지 코드 제거

 

캡슐화
기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 누출
디버그 코드 제거와 필수 정보 접근 외의 클래스 내 프라이빗 접근자 지정

 

API
의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API를 사용
개발 언어별 취약 API 확보 및 취약 API 검출 프로그램 사용

 

입력 데이터 검증 및 표현

SQL 삽입
사용자의 입력값 등 외부 입력값이 SQL 쿼리에 삽입되어 공격
preparedStatement 객체 등을 이용, DB에 컴파일된 쿼리문을 전달

 

XSS
검증되지 않은 외부 입력값에 의해 브라우저에서 악의적인 코드가 실행
입/출력 값에 문자열 치환 함수를 사용

 

경로 조작 및 자원 삽입
외부 입력된 값의 사전 검증이 없거나 잘못 처리될 경우
경로 순회 공격 위험이 있는 문자를 제거하는 필터 사용

 

운영체제 명령어 삽입
운영체제 명령어 입력값이 적절한 검증을 거치지 않고 사용될 때 공격자가 운영체제 명령어를 조작
웹 인터페이스를 통해 내부로 시스템 명령어를 전달하지 않도록 프로그램 구성

 

보안 기능 – 인증 관련 취약점의 유형

적절한 인증 없는 중요 기능 허용
적절한 은증과정 없이 중요정보 등을 열람, 변경 시 발생하는 보안 약점
업무상 중요정보 혹은 기능 제공 시에 인증 기능을 구현


반복된 인증시도 제한 기능 부재
인증시도 반복횟수 제한없이 사용하는 시스템 대상
인증시도 회수 제한, 인증횟수 초과 시 계정 잠금 혹은 추가 인증 요구

 

취약 패스워드 허용
보안성이 높지 않은 비밀번호 설정을 허용
숫자/영문 혼합시 최소 10자 이상
숫자/영문/특문 혼합시 최소 8자 이상

 

보안 기능 – 암호화 보안 약점

취약 암호화 알고리즘 사용
비표준 알고리즘을 사용할 경우
컴퓨터 연산 능력 향상으로 해독 가능한 알고리즘 사용
표준화된 알고리즘 사용

 

충분하지 않은 키 길이 사용
키 길이가 불충분한 경우 공격자가 짧은 시간 안에 키 발견 가능
충분한 키 길이 확보 (RSA : 2048 비트 이상, 대칭 암호화 : 128 비트 이상)

 

하드코딩된 비밀번호
코드 내부 하드코딩된 패스워드 사용
패스워드는 별도로 파일에 암호화 저장

 

부적절한 난수 사용
예측 가능한 나수를 사용할 경우
난수를 발생시큰 시드 값의 고정값 대신 변경 값 저용

 

솔트 없는 일방향 해시 함수 사용
솔트 없는 해시 처리 시 레인보우 테이블을 이용해 비밀번호를 쉽게 찾을 수 있는 취약점
패스워드 저장 시 패스워드와 솔트 결합

 

보안 기능 – 중요정보 처리 시 보안 약점

중요정보 평문 저장
중요정보를 처리하는 과정에서 평문 저장
정보보호 관점에서 중요 정보 저장시 반드시 암호화 처리


중요정보 평문 전송
중요정보를 평문으로 송수신할 경우 발생
통신 채널을 스니핑해 민감 데이터 노출
내외부 통신시 SSL 인증서 기반 정송구간 암호화 적용

 

시간 및 상태

경쟁조건
동일 자원에 대한 검사 시점과 사용 시점이 상이
동기화 오류, 교착 상태를 유발하는 보안 약점
동기화구문(Synchronized), Mutex 사용
한 번에 하나의 프로세스만 접근 가능하도록 함


종료되지 않은 반복문 또는 재귀함수
종료 조건이 없는 재귀함수나 종료되지 않은 반복문 사용
무한루프에 빠져 자원 고갈 유발 보안 약점
재귀함수 : 종료 조건 정의
반복문 : 흐름 검증 수행

 

에러 처리

오류 메시지 정보 노출
응용 프로그램의 민감 정보가 오류 메시지를 통해 노출되는 보안 약점
오류 메시지는 정해진 사용자에게 유용한 정보만 포함


오류 상황 대응 부재
오류 발생 부분에 예외 처리 미구현
c/c++ : if, switch문 사용
java : try-catch문 사용


부적절한 예외 처리
프로그램 수행 중 발생한 예외 조건을 적절하게 검사하지 않아 문제 야기
함수결괏값의 적정성 검증
구체적인 예외 처리 수행

 

코드 오류

널 포인터 역참조
널 값을 고려하지 않은 코드에서 발생하는 보안 약점
값을 참조하기 전에 널 값인지를 검사


부적절한 자원 해제
자원 고갈로 인한 시스템 오류 유발 보안 약점
자원 획득 사용 후 반드시 자원 해제


해제된 자원 사용
메모리를 참조해 의도치 않은 코드를 실행하는 보안약점
메모리 할당 해제 후 포인터에 널 값 저장


초기화되지 않은 변수 사용
C언어 함수 내 지역변수를 초기화하지 않고 사용할 시 발생하는 보안 약점
모든 변수는 사용하기 전 초깃값 할당

 

캡슐화

잘못된 세션에 의한 정보 노출
멀티 스레드 환경에서 서로 다른 세션 간 데이터가 공유될 수 있는 보안 약점
싱글톤 패턴 사용 시 변수 적용 범위 주의


제거되지 않은 디버그 코드
의도하지 않은 민감 정보가 노출될 수 있는 보안 약점
SW 배포 전 디버그 코드 확인 및 제거


시스템 정보 노출
시스템 내부 데이터가 노출되 공격의 실마리가 되는 보안 약점
예외 상황 발생 시 시스템 내부 정보의 화면 노출이 없도록 개발

 

API 오용

DNS에 의존한 보안 결정
공격자가 DNS 정보를 변조해 보안 결정을 위회 가능한 보안 약점
DNS로 확인된 정보 대신 IP 주소 사용


취약한 API 사용
금지되거나 안전하지 않은 AIP 함수를 사용하는 보안 약점
안전한 함수 사용

 

SW 개발 보안 테스트의 유형

정적 분석
SW를 실행하지 않고 보안 약점을 분석
SW 개발 단계에서 주로 사용
취약점 초기 발견으로 수정비용 절감


동적 분석
SW 실행환경에서 보안 약점 분석
SW 시험 단계에서 주로 사용
소스코드 필요 없음

반응형