본문 바로가기
자격증/정보처리기사

2021년 8월 17일 - 정보처리기사 실기 9장 소프트웨어 개발 보안 구축

by 철제백조 2021. 8. 17.

● 본 기록은 '코딩하는 핑가님'의 허락을 받고 블로그에 정리된 글을 그대로 필사했음을 밝힙니다.

 https://ss-o.tistory.com/110?category=1013699

 

정보처리기사 실기 목차 - 정리, 예상문제, 문제 복원 수록

1. 정리 ( 수제비 교재 기준 ) 과목 내용 1과목 1과목 요구사항 확인 2과목 2과목 데이터 입출력 구현 3과목 3과목 통합구현 4과목 4과목 서버 프로그램 구현 5과목 5과목 인터페이스 구현 6과목 6과

ss-o.tistory.com

 


 

1. 소프트웨어 개발 보안 구축

 

1) 소프트웨어 개발 보안

* 보안의 3대 요소 (단답형)  기무가

- 기밀성(Confidentiality)

: 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용되며, 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음

 

- 무결성(Integrity)

: 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음 + 완전성, 일관성, 데이터 훼손 및 파손 X

 

- 가용성(Availability)

: 인가받은 사용자는 언제라도 사용할 수 있음

 

 

* 인증(Authentication) : 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위

* 부인 방지(NonRepudiation) : 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공함

* 보안 용어 : 자산, 위협, 취약점, 위험

 

 

2) 서비스 공격 유형 (키워드 중심)

* DOS 공격

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

- 지역 시스템 공격/ 원격 네트워크 공격

 

* DDOS 공격

- 공격자를 분산 배치하여 동시에 특정 시스템을 공격하는 기법

- 구성요소 : 핸들러, 에이전트, 마스터, 공격자, 데몬 프로그램  HAMAD

- 공격 대응 방안 : 보안 솔루션 운영, 차단 정책 업데이트, 시스템 패치

 

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

- 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우, 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격

 

* SQL 삽입(SQL Injection)

- 공격자가 입력한 데이터에 대한 유효성을 점검하지 않아, DB쿼리 로직이 변경되어 정보 유출 또는 DB의 변경을 가하는 공격

 

* CSRF(사이트 간 요청 위조)

- 사용자가 자신의 의지와는 무관하게, 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격

 

 

[자원 고갈 공격]

* SYN 플러딩

- 3-hand-shaking 과정에서

 

* UDP 플러딩

- 대량의 UDP 패킷 생성하여 자원을 고갈시키는 공격

 

* 스머프 또는 스머핑

- 출발지 주소를 공격 대상의 IP로 설정하여, 네트워크 전체에 ICMP Echo 패킷을 브로드 캐스팅하여 마비시키는 공격으로, 제3의 사이트를 이용해 공격하는 공격 기법

 

* PoD(Ping of Death)

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

 

 

[애플리케이션 공격]

* HTTP GET 플러딩

- Chache Control Attack → Chaching 서버 유도

 

* Slowloris

- HTTP GET 메서드, 개행

 

* 루디(RUDY)

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

 

 

[네트워크 서비스 공격]

* 네트워크 스캐너, 스니퍼

- 보안 취약점 파악 → 공격 도구

 

* 패스워드 크래킹

- 사전 크래킹과 무차별 크래킹 사용

 

* IP 스푸핑

- IP Address 위조

 

* 트로이 목마

정상적인 기능을 하는 프로그램인 척 위장하여 해당 프로그램 동작시 부작용을 일으키는 공격 기법

 

 

[취약점 공격]

* 랜드 어택

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

 

* 티어 드롭(Tear Drop)

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

 

* 봉크/보잉크

- 프로토콜의 오류 제어를 이용한 공격 기법 (시퀀스 번호)

 

 

3) 암호 알고리즘

- 무결성 및 기밀성 확보

대칭키 블록 암호
DES, AES, SEED (단답형)

* DES : 54Bits의 키와 64Bits의 블록
* AES : DES를 대체하는 알고리
* SEED : KISA 구현, 고속블록, 128Bits


스트림 암호 방식 RC4
비대칭키 디피헬만
RSA(단답형) : 소인수 분해의 어려움을 이용하여 암호화
해시 SHA(Secure Hash Algorithm) (단답형) : 미국 표준

MD5 (2020 실기 1회 기출) : 128Bits 해시 알고리즘

1991년 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안한 128Bits 암호화 해시함수

- 정보에 대한 보안 항목 식별 (정보 보호 관련 법률) : 개인정보 보호법, 정보통신망법, 신용정보법

 

 

* SSL(Secure Socket Layer) (단답형)

- 응용 계층TCP/IP 계층 사이에서 웹 데이터 암호화 및 전송 시 기밀성을 보장하는 공개키 기반의 보안 프로토콜

 

* 일방향 암호화 (단답형)

암호화 수행은 하지만 절대로 복호화가 불가능한 알고리즘

 

 

4) 정보 자산 주요 용어

- 자산, 사용자, 소유자, 관리자

- 자산 분류 기준 : 소프트웨어, 하드웨어, 데이터, 문서, 시설, 자원 설비, 인력

 

 

5) 보안 기능

- 인증 관리, 권한 관리, 암호화, 중요 정보 처리

* 솔트(Salt) (단답형)

- 일방향 해시 함수에서 다이제스트를 생성할 경우, 추가되는 임의의 문자열

- 소금이 기본 양념이듯, 원문에 가미하여 암호문을 다른 값으로 만드는 것

- 문자열의 앞 뒤에 난수생성을 통해 작성된 특정 문자열을 끼워넣는 상태로 해시를 돌림

 

 

6) 예외 처리/세션 통제

* 세션 하이제킹 (단답형)

세션을 가로채어 정상적인 인증 절차를 무시하고 불법적으로 시스템 접속

 

 

7) 소프트웨어 개발 보안 적용 사례

- MS-SDL, Seven Touchpoints, CLASP

- 보안 취약점 : 외부 공격과 해킹으로 시스템의 보안 정책을 침해하는 보안 사고의 원인이 되는 보안 허점

- 보안 약점 : 개발 과정에서 발생할 수 있는 결함/버그와 같은 오류

 

 

8) 소프트웨어 개발 보안 구현

- 보안 취약점 제거, 보안 약점 방지

 

* 시큐어 코딩 가이드  입보시애코캡 아

입력 데이터 검증 및 표현

- 보안 기능

시간 및 상태

에러 처리

코드 오류

캡슐화

API 오용

 

 

(1) 입력 데이터 검증 및 표현 : SQL 삽입, XSS(크로스 사이트 스크립트)

 

* SQL Injection (SQL 삽입) (2020 실기 2회 기출)

- 웹 애플리케이션에서 입력 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력창 및 URL에 SQL문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 취약점 공격 법

 

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

웹 페이지에 악의적인 스크립트를 포함해 사용자 측에서 실행되게 유도하는 방법으로, 검증되지 않은 외부 입력이 동적 웹페이지 생성에 사용될 경우, 전송된 동적 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보 유출 등의 공격을 유발할 수 있는 공격 기법

 

 

<보안 취약점 보완 방법>

- SQL 삽입 : PreparedStatement

- XSS : 치환 함수

 

 

(2) 보안 기능 : 인증, 권한 관리, 암호화

 

* 인증 관련 보안 약점

- 적절한 인증 X

- 박복된 인증 시도 제한 기능 부재 → 무차별 공격

- 취약 패스워드 허용

 

권한 관리 보안 약점

- 주요 자원에 대한 잘못된 권한 설정

- 부적절한 인가

 

암호화 보안 약점

- 취약 암호화 알고리즘, 충분하지 않은 키 길이, 하드코딩된 비밀번호

- 부적절한 난수, 솔트없는 일방향 해시 함수 사용

 

시간 상태

- 경쟁 조건 : 메모리 공유되는 하나의 객체에 두 개 이상의 스레드가 동시 처리되는 상황

- 종료되지 않은 반복문

- 재귀 함수

 

에러 처리

- 오류 메시지 정보 노출 → 최소한의 정보 포함

- 오류 상황 대응 부재 → try-catch문

- 부적절한 예외처리

 

 

(5) 코드 오류 : 타입 변환 오류, 메모리 부적절한 반환/ 개발자 오류

- Null Pointer 역참조

- 부적절한 자원 해체

- 해제된 자원 사용

- 초기화되지 않은 변수 사용

 

 

(6) 캡슐화

- 잘못된 세션에 의한 정보 노출 → 싱글톤 패턴

- 제거되지 않은 디버그 코드

- 시스템 정보 노출

* 세션 : 서버와 클라이언트 간의 논리적인 연결

싱글톤 패턴전역 변수를 사용하지 않고, 하나의 객체를 만들어 어디서든 참조할 수 있도록 하는 패턴

 

 

(7) API 오용 : 의도된 사용에 반하는 방법으로 API를 사용하거나 보안에 취약한 API 사용 시 발생

- DNS 의존한 보안 결점

- 취약한 API

* API(Application Programming Interface)

- 프로그램 개발 및 작성을 위한 서브 프로그램

 

 

 

9) 소프트웨어 개발 보안 테스트

- 보안 테스트 유형 : 화이트박스 테스트, 블랙박스 테스트

화이트박스 테스트 : 프로그램 내부 로직을 보면서 수행하는 구조 기반 테스트

블랙박스 테스트 : 프로그램 외부 사용자의 요구사항 명세를 보면서 테스트하는 것

 

정적 분석 (2020 실기 2회 기출)

- 소프트웨어를 실행하지 않고 보안 약점 분석

 

* 동적 분석

- 소프트웨어 실행환경에서 보안 약점 분석

 

* 시큐어 코딩 (단답형)

- 설계 및 구현 단계에서 해킹 등 공격을 유발하는 가능성이 있는 보안 취약점을 사전에 제거하고, 안전한 소프트웨어를 만드는 코딩 기법 

댓글