소프트웨어 개발 보안 구축

소프트웨어 개발 보안 구축

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

1) 소프트웨어 개발 보안

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

– 기밀성(Confidentiality)

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

– 무결성(Integrity)

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

– 가용성(Availability)

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

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

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

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

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

* DOS 공격

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

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

* DDOS 공격

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

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

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

* 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) 암호 알고리즘

– 무결성 및 기밀성 확보

* 암호 알고리즘의 암호 키들의 키워드와 비교할 내용을 잘 암기하기 ( 암호키의 Bit 크기 비교 )

대칭키

블록암호

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회 기출)

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

* 동적 분석

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

* 시큐어 코딩(단답형)

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

Start typing and press Enter to search

Shopping Cart