정보처리기사 실기 (9) 소프트웨어 개발 보안 구축

Dodam·2023년 8월 21일
1

[정보처리기사]

목록 보기
9/11
post-thumbnail

Secure SDLC

SDLC
: 소프트웨어 개발 수명 주기 (Software Development Life Cycle)

Secure SDLC의 개요

  • 보안상 안전한 소프트웨어를 개발하기 위해 SDLC(소프트웨어 개발 생명주기)에 보안 강화를 위한 프로세스를 포함한 것
  • 유지보수 단계에서 보안 이슈를 해결하기 위해 소모되는 비용을 최소화하기 위함
  • Secure Software사의 CLASP, Microsoft사의 SDL 등

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

  • 보안 항목에 해당하는 요구사항을 식별하는 작업 수행
  • 보안 수준을 보안 요소별로 등급을 구분하여 분류
  • 보안 요소 : 기밀성, 무결성, 가용성, 인증, 부인 방지

설계 단계에서의 보안 활동

  • 식별된 요구사항을 소프트웨어 설계서에 반영하고 보안 설계서 작성
  • 네트워크, 서버, 물리적 보안, 개발 프로그램 등 환경에 대한 보안통제 기준을 수립하여 설계에 반영

구현 단계에서의 보안 활동

  • 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하여 설계서에 따라 보안 요구 사항 구현
  • 단위 테스트 실행
  • 시큐어 코딩 : 구현 단계에서 발생할 수 있는 보안 취약점을 최소화하기 위해 보안 요소들을 고려하여 코딩

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

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

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

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

세션 통제

세션 통제의 개요

  • 서버와 클라이언트의 연결인 세션 간의 연결로 인해 발생하는 정보를 관리
  • 요구사항 분석 및 설계 단계에서 진단해야 하는 보안 점검 내용

불충분한 세션 관리

  • 일정한 규칙이 존재하는 세션 ID가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생
  • 세션 하이재킹(세션 정보를 가로채는 공격)을 통해 획득한 세션 ID로 접근할 수 있음

잘못된 세션에 의한 정보 노출

  • 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생
  • 변수의 범위를 제한하는 방법으로 방지 가능
  • 싱글톤 패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발생하거나 멤버 변수의 정보가 노출될 수 있음
  • 레이스컨디션 : 두 개 이상의 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태

세션 설계 시 고려사항

  • 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함
  • 이전 세션이 종료되지 않으면 새로운 세션이 생성되지 못하도록 함

입력 데이터 검증 및 표현

입력 데이터 검증 및 표현의 개요

  • 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목
  • 개발 단계에서 유효성 검증 체계를 갖추고 검증되지 않은 데이터가 입력될 시 처리할 수 있도록 구현해야 함
  • 일관된 언어셋을 사용하여 코딩

입력 데이터 검증 및 표현의 보안 약점

종류보안 약점해결 방법
SQL 삽입입력란에 SQL을 삽입하여 무단으로 DB를 조회, 조작동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정
경로 조작 및 자원 삽입데이터 입출력 경로를 조작하여 서버 자원을 수정, 삭제경로 순회 공격을 막는 필터 사용
크로스사이트 필터링(XSS)웹페이지에 악성 스크립트를 삽입하여 방문자의 정보 탈취. 비정상적 기능 수행 유발HTML 태그 사용을 제한
<,>,& 등의 문자를 다른 문자로 치환
운영체제 명령어 삽입외부 입력값을 통해 시스템 명령어 실행을 유도하여 권한을 탈취하거나 시스템 장애 유발웹 인터페이스를 통해 시스템 명령어 전달 방지
외부 입력값을 검증없이 내부 명령어로 사용하지 않음
위험한 형식 파일 업로드악의적인 명령어가 포함된 스크립트 파일을 업로드하여 시스템에 손상을 입히거나 제어업로드되는 파일의 확장자 제한
파일명의 암호화
웹사이트와 파일 서버의 경로 분리
실행 속성 제거
신뢰되지 않는 URL 주소로 연결입력값으로 사이트 주소를 받는 경우 이를 조작하여 피싱 사이트로 유도연결되는 외부 사이트의 주소를 화이트 리스트로 관리

보안 기능

보안 기능의 개요

  • 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화들을 올바르게 구현하기 위해 구현 단계에서의 보안 점검 항목

보안 기능의 보안 약점

종류보안 약점해결 방법
적절한 인가 없이 중요기능 허용보안검사를 우회하여 인증과정 없이 중요 정보 또는 기능에 접근 및 변경 가능중요 정보나 기능을 수행하는 페이지에는 재인증 기능을 수행
부적절한 인가접근제어 기능이 없는 실행경로를 통해 정보 또는 권한 탈취모든 실행 경로에 대해 접근 제어 검사 수행
사용자에게는 반드시 필요한 접근 권한만 부여
중요한 자원에 대한 잘못된 권한 설정권한 설정이 잘못된 자원에 접근하여 임의로 사용관리자만 자원들에 접근하도록 설정
인가되지 않은 사용자의 중요 자원 접근 여부 검사
취약한 암호화 알고리즘 사용암호화된 환경설정 파일을 해독하여 중요정보 탈취안전한 암호화 알고리즘 사용
IT보안인증사무국이 안정성을 확인한 암호모듈을 이용
중요정보 평문 저장 및 전송암호화되지 않은 평문 데이터를 탈취해 중요 정보 획득중요 정보 저장, 전송 시 암호화 과정을 거침
보안 채널 이용
하드코드된 비밀번호소스코드 유출 시 내부에 하드코드된 패스워드 이용패스워드를 암호화하여 별도 파일 저장
기본 설정 패스워드나 키의 사용을 피함

시간 및 상태

시간 및 상태의 개요

  • 동시 수행을 지원하는 병렬 시스템이나 다수의 프로세스가 동작하는 환경에서 시간과 실행 상태를 관리하여 원활하게 동작되도록 하기 위한 보안 검증 항목

TOCTOU 경쟁 조건

  • 검사 시점과 사용 시점을 고려하지 않고 발생하는 보안 약점

종료되지 않은 반복문 또는 재귀 함수

  • 조건이나 논리 구조를 잘못 구성하여 종료할 수 없게 되는 경우, 시스템 자원을 끊임없이 사용하여 자원고갈로 인한 서비스 또는 시스템 장애 발생

에러 처리의 개요

에러 처리의 개요

  • 소프트웨어 실행 중 발생할 수 있는 오류들을 사전에 정의하여 오류로 인해 발생할 수 잇는 문제들을 예방하기 위한 보안 점검 항목
  • 예외처리 구문을 통해 오류에 대한 사항 정의

오류 메시지를 통한 정보 노출

  • 오류 발생으로 실행 환경, 사용자 정보, 디버깅 정보 등 중요 정보를 소프트웨어가 메시지로 외부에 노출하는 보안 약점
  • 오류 발생 시 최대한 내부에서 처리하거나 메시지를 최소한의 내용으로 출력하여 정보 노출을 방지해야 함

오류 상황 대응 부재

  • 소프트웨어의 오류에 대한 에러 처리를 하지 않았거나 미비로 인해 발생하는 보안 약점

부적절한 예외처리

  • 함수의 반환값 또는 오류들을 세분화하여 처리하지 않고 광범위하게 묶어서 한 번에 처리하거나 누락된 예외가 존재할 때 발생하는 보안 약점

코드 오류

##3# 코드 오류의 개요

  • 소프트웨어 구현 단계에서 코딩 중 실수하기 쉬운 형 변환, 자원 반환 등 오류를 예방하기 위한 보안 점검 항목

널 포인터 역참조

  • 널 포인터가 가리키는 메모리에 어떠한 값을 저장할 때 발생하는 보안 약점
  • 오류로 인해 반환되는 널 값을 포인터로 참조하는 경우 발생

부적절한 자원 해제

  • 자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점
  • 유한한 시스템 자원이 계속 점유하고 있으면 자원 부족이 발생

해제된 자원 사용

  • 이미 반환된 메모리를 참조하는 경우 발생하는 보안 약점
  • 반환된 메모리를 참조하는 경우, 예상하지 못한 값 또는 코드를 수행하게 되어 의도하지 않은 결과가 발생됨

초기화되지 않은 변수 사용

  • 변수 선언 후, 값이 부여되지 않은 변수를 사용할 때 발생하는 보안 약점

캡슐화

캡슐화의 개요

  • 정보 은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목

제거되지 않고 남은 디버그 코드

  • 개발 중에 버그 수정이나 결과값 확인을 위해 남겨둔 코드들로 인해 발생하는 보안 약점

시스템 데이터 정보 노출

  • 시스템의 내부 정보를 시스템 메시지 등을 통해 외부로 출력하도록 구현했을 때 발생하는 보안 약점

Public 메소드로부터 반환된 Private 배열

  • Private 배열을 Public 메소드에서 반환할 때 발생하는 보안 약점

Private 배열에 Public 데이터 할당

  • Private 배열에 Public으로 선언된 데이터 또는 메소드의 파라미터를 저장할 때 발생하는 보안 약점

API 오용

API 오용의 개요

  • 소프트웨어 구현 단계에서 API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하는 보안 검증 항목

DNS Lookup에 의존한 보안 결정

  • 도메인명에 의존하여 보안 결정을 내리는 경우 발생하는 보안 약점
  • IP 주소를 직접 입력하여 접근하게 함으로써 방지 가능

취약한 API 사용

  • 보안 문제로 사용이 금지된 API를 사용하거나 잘못된 방식으로 API를 사용했을 때 발생하는 보안 약점

암호 알고리즘

암호 알고리즘의 개요

  • 중요 정보를 보호하기 위한 평문을 암호화된 문장으로 만드는 방법

개인키 암호화 기법

  • 동일한 키로 데이터를 암호화하고 복호화함
  • 대칭 암호 기법, 단일키 암호화 기법이라고도 함
  • Stream 기법 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화
  • Block 기법 : 한 번에 하나의 데이터 블록을 암호화

공개키 암호화 기법

  • 데이터를 암호화하는 공개키는 데이터베이스 사용자에게 공개하고 복호화하는 비밀키는 관리자에게만 공개
  • 비대칭 암호화 기법이라고도 함
  • RSA 기법 : 공개키와 비밀키는 메시지를 열고 잠그는 상수를 의미

양방향 암호화 알고리즘 종류

  • SEED : 블록 크기는 128비트, 키의 길이에 따라 128, 256으로 분류
  • ARIA : 블록 크기는 128비트, 키의 길이에 따라 128, 192, 256으로 분류
  • DES : 블록 크기는 64비트, 키의 길이 56비트
  • AES : 블록 크기는 128비트, 키의 길이에 따라 128, 192, 256으로 분류

해시(Hash)

  • 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환
  • SHA 시리즈, MD5, N-NASH, SNEFRU 등

서비스 공격 유형

서비스 거부 공격의 개념

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

Ping of Death

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

SMURFING

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

SYN Flooding

  • 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상지인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법

TearDrop

  • 데이터의 송수신 단계에서 전송되는 Fragment Offset 값을 변경시켜 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법

Land

  • 패킷 전송 시 송수신 IP 주소를 모두 공격 대상의 IP 주소로 하여 공격 대상에게 전송함으로써 무한히 자신에게 응답을 수행하게 되는 공격 방법

DDos(Distributed Denial of Service, 분산 서비스 거부) 공격

  • 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 공격을 수행
  • 네트워크에서 취약점이 있는 호스트들을 탐색한 후, 호스트들에게 분산 서비스 공격 툴을 설치하여 에이전트로 만든 후 공격에 이용
  • 분산 서비스 공격 툴
    - Trin00 : 초기 형태의 데몬으로 UDP Flooding 공격 수행
    - TFN : UDP Flooding, TCP SYN Flood 공격, ICMP 응답 요청, 스머핑 공격 등을 수행
    - TFN2K : TFN의 확장판
    - Stacheldraht : 이전의 툴들을 유지하면서 암호화된 통신을 수행하며 툴이 자동으로 업데이트 되도록 설계

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

  • 스미싱 : 문자 메시지를 이용해 사용자의 개인 신용 정보를 빼내는 수법
  • 스피어 피싱 : 일반적인 이메일로 위장한 메일을 지속적으로 발송하여 메일의 링크나 첨부된 파일을 클릭하게 유도하여 개인 정보를 탈치
  • APT(지능형 지속 위협) : 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격
  • 무작위 대입 공격 : 암호화된 문서의 암호키를 찾기 위해 무작위로 값을 대입하여 공격하는 방식
  • 큐싱 : QR코드를 통해 악성 앱을 다운받게 하여 개인 정보를 탈취하는 공격 방식
  • SQL 삽입 공격 : 웹사이트를 무차별적으로 공격하는 과정에서 취약한 사이트 발견 시 데이터를 조작하는 일련의 공격 방식
  • 크로스 사이트 스크립 : 웹 페이지의 내용을 사용자 브라우저에 표현하기 위해 사용되는 스크립트의 취약점을 악용한 해킹 기법

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

  • 좀비 PC : 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터
  • C&C 서버 : 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버
  • 봇넷 : 악성 프로그램에 감염된 컴퓨터들이 네트워크로 연결된 형태
  • : 네트워크를 통해 연속적으로 자신을 복사하여 시스템의 부하를 높여 시스템을 다운시키는 바이러스의 일종
  • 제로 데이 공격 : 보안 취약점이 발견됐을 때 공표되기도 전에 해당 취약점을 통해 신속하게 이루어지는 보안 공격
  • 키로거 공격 : 사용자의 키보드 움직임을 탐지하여 개인 정보를 몰래 빼가는 공격
  • 랜섬웨어 : 사용자의 컴퓨터에 잠입해 파일을 암호화하여 개인 정보를 몰래 빼가는 공격
  • 백도어 : 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀 통로를 통해 범죄에 악용되는 형태
  • 트로이 목마 : 정상적인 기능을 하는 프로그램인 척 프로그램에 숨어 있다가 해당 프로그램이 동작될 때 활성화되어 부작용을 일으키는 형태

서버 인증

보안 서버의 개념

  • 인터넷을 통해 개인정보를 암호화하여 송수신할 수 있는 기능을 갖춘 서버
  • 서버에 SSL(Secure Socket Layer) 인증서를 설치하고 전송 정보를 암호화하여 송수신
  • 서버에 암호화 응용 프로그램을 설치하고 전송 정보를 암호화하여 송수신

인증의 개념

  • 다중 사용자 컴퓨터 / 네트워크 시스템에서 로그인을 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차

  • 지식 기반 인증

    • 사용자가 기억하고 있는 정보를 기반으로 인증을 수행
    • 고정된 패스워드, 패스 프레이즈, 아이핀
  • 소유 기반 인증

    • 사용자가 소유하고 있는 것을 기반으로 인증을 수행
    • 신분증, 메모리 카드, 스마트 카드, OTP
  • 생체 기반 인증

    • 사용자의 고유한 생체 정보를 기반으로 인증을 수행
    • 지문, 홍채/망막, 얼굴, 음성, 정맥
  • 기타 인증 방법

    • 행위 기반 인증 : 사용자의 행동 정보를 이용해 인증 수행
    • 위치 기반 인증 : 인증을 시도하는 위치나 적절성 확인

보안 아키텍처 / 프레임워크

보안 아키텍처

  • 정보 시스템의 무결성, 가용성, 기밀성을 확보하기 위해 보안 요소 및 보안 체계를 식별하고 이들 간의 관계를 정의한 구조
  • ITU-T, X.805의 보안 표준을 기준으로 하여 보안 아키텍처 모델 구성
    • 보안 계층 : 인프라 시스템, 응용 프로그램, 데이터, 단말기, 인터페이스
    • 보안 영역 : 정보 시스템, 제어 시스템, 클라우드, 무선, 사물인터넷
    • 보안 요소 : 인증, 접근 통제, 데이터 처리 보호, 암호화, 감사 추적, 위협 탐지

보안 프레임워크

  • 안전한 정보 시스템 환경을 유지하고 보안 수준을 향상시키기 위한 체계
  • ISO 27001 : 정보 보안 관리를 위한 국제 표준이며, 가장 대표적인 보안 프레임워크

로그 분석

로그의 개념

시스템 사용에 대한 모든 내역을 기록하여 시스템 침해 사고 발생 시, 해킹 흔적이나 공격 기법을 파악할 수 있음

리눅스 로그

  • var/log 디렉토리에서 기록하고 관리
  • syslogd 데몬은 etc/syslog.conf 파일을 읽어 로그 관련 파일들의 위치를 파악 후 작업 시작
  • 커널 로그, 부팅 로그, 크론 로그, 시스템 로그, 보안 로그, FTP 로그, 메일 로그

윈도우 로그

  • Windows 시스템에서 이벤트 로그 형식으로 시스템의 로그 확인
  • 응용 프로그램, 보안, 시스템, Setup, Forwarded Event에 대한 로그 확인 가능

보안 솔루션

보안 솔루션의 개념

  • 접근 통제, 침입 차단을 수행하여 외부로부터 불법적인 침입을 막는 기술 및 시스템

방화벽

  • 기업이나 조직 내부의 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용, 거부, 수정하는 기능을 가진 침입 차단 시스템

침입 탐지 시스템(IDS)

  • 컴퓨터 시스템의 비정상적인 행위를 실시간으로 탐지하는 시스템
  • 문제 발생 시, 모든 내외부 정보의 흐름을 실시간으로 차단하기 위해 해커 침입 패턴에 대한 추적과 유해 정보 감시가 필요

침입 방지 시스템(IPS)

  • 방화벽과 침입 탐지 시스템을 결합
  • 비정상적인 트래픽을 능동적으로 차단하고 격리하는 방어 조치를 취하는 보안 솔루션

데이터 유출 방지(DLS)

  • 내부 정보의 외부 유출을 방지하는 보안 솔루션
  • 내부 PC와 네트워크 상의 모든 정보를 검색하고 사용자 행위를 탐지, 통제해 외부로의 유출을 사전에 방지

웹 방화벽

  • 일반 방화벽이 탐지하지 못하는 SQL 삽입 공격, XSS 등의 웹 기반 공격을 방어할 목적으로 만들어진 웹 서버에 특화된 방화벽

VPN(가상 사설 통신망)

  • 인터넷 등 통신 사업자의 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션

NAC

  • 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록 후, 일관된 보안 관리 기능을 제공하는 보안 솔루션

ESM

  • 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
profile
⏰ Good things take time

0개의 댓글