이전자료/정보처리기사

[정보처리기사] 9장 소프트웨어 개발 보안 구축

donggyu 2021. 9. 2. 16:10
반응형

Secure SDLC

- 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것

- 요구사항 분석, 설계, 구햔, 테스트, 유지보수등 전단계에서 수행되어야 할 보안 활동 제시

 

Secure SDLC 방법론

-CLASP: SDLC 초기 단계에서 보안을 강화하기 위해 개발된 방법론

- SDL: MS에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론

-Seven Touchpoints: 모범사례를 SDLC에 통합한 방법론

 

SDLC 단계별 보안 활동

요구사항 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 단계 -> 유지보수 단계

 

소프트웨어 개발 보안 요소

기밀성(Confidentiality): 인가된 사용자에게만 접근이 허용

무결성(Intergrity): 인가된 사용자만 수정가능

가용성(Availability): 인가 받은 사용자는 언제든지 사용 가능

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

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

 

개발 보안 3대 요소

기밀성, 무결성, 가용성

 

Secure coding

- 구현 단계에서 발생할 수 있는 보안 취약점을 최소화 하기 위해 보안 요소들을 고려하며 코딩

- 보안 취약점을 사전 대응하여 안정성과 신뢰성을 확보

 

세션 통제

- 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것

- 요구사항 분석 및 설계 단계에서 진단해야 하는 보안 점검 내용

 

세션 통제의 보안 약점

불충분한 세션 관리: 일정한 규칙이 존재하는 세션 ID가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생하는 보안 약점

잘못된 세션에 의한 정보 노출: 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점

 

세션 설계 시 고려 사항

- 시스템의 모든 페이지에서 로그아웃이 가능하도록 UI를 구성

- 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함

 

입력 데이터 검증 및 표현

- 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목

 

- SQL 삽입: 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점, 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정하여 방지할 수 있음

- 경로 조작 및 자원 삽입: 데이터 입출력 경로를 조작하여 서버 자원을 수정 삭제할 수 있는 보안 약점, 사용자 입력 값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용하여 방지가능

- XSS: 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발

- 운영체제 명령어 삽입: 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점

- 위험한 형식 파일 업로드: 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점

- 메모리 버퍼 오버플로: 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점

 

보안 기능

- 소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근 제어, 기밀성, 암화화 등을 올바르게 구현하기 위한 보안 점검 항목

 

에러처리

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

 

코드오류

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

 

스택가드

- 널 포인터 역참조와 같이 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술 중 하나, 메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장한 후 그 값이 변경되었을 경우 오버플로우 상태로 판단하여 프로그램 실행 중단

 

캡슐화

- 데이터와 데이터 처리를 하는 함수를 하나로 묶는 것

 

API 오용

- API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 점검 항목

 

암호화 알고리즘

- 중요 정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법

 

 

개인키 엄호화 기법(대칭키)

- 동일한 키로 데이터를 암호화하고 복호화 하는 암호화 기법

- 대칭 암호 기버브 단일키 암호화 기법

- 속도가 빠르지만, 관리해야할 키의 수가 많음

 

개인키 암호화 기법의 종류

- 스트림 암호화 방식: 평문과 동일한 길이의 스트림을 생성하여 비트 단위로 암호화,LFSR, RC4

- 블록 암호화 방식: 한 번에 하나의 데이터 블록을 암호화 하는 방식, DES, AES, SEED, ARIA

 

공개키 암호화 기법

- 암호화활 때 사용하는 공개키는 사용자에게 공개하고 복호화할 때의 비밀키는 관리자가 비밀이리에 관리하는 암호화 기법

- 비대칭 암호화 기법

- 관리해야할 키 수가 적지만, 속도가 느림, RSA

 

양방향 알고리즘 종류

-SEED: KISA에서 개발한 블록 암호화 알고리즘, 블록 크기는 128비트 이며, 키 길이에 따라 128, 256으로 분류

-ARIA: 2004년 국정원 산학연협회 에서 개발한 블록 암호화 알고리즘

-DES: 64비트

-AES: 128비트, DES의 단점 보안

-RSA: MIT, 큰 숫자를 소인수분해 하기 어렵다

 

해시

- 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것

- 해시 알고리즘 , 해시 함수

- 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 함

 

해시함수의 종류

- SHA: NSA

- MD5: MD4 보안, 블록 크기가 512비트, 키의 길이 128비트

- N-NASH: NTT에서 발표, 블록 크기, 키의 길이 128비트

- SNEFRU: 32비트 프로세서에서 구현을 용이하게 할 목적으로 개발

 

서비스 거부(DOS) 공격

- 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써, 표적이되는 서버의 정상적인 기능을 방해하는 것

 

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

 

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

 

- SYN Flooding:  3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상지인 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격방법

 

- TearDrop: Offset 값을 변경시켜 수신 측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법

 

-LAN ATTACK: 패킷을 전송할 때 송신 IP주소와 수신 IP주소를 모두 공적 대상의 IP주소로 하여 공격 대상에게 전송하는 것, 자신에 대해 무한히 응답하게 하는 공격

 

- DDOS(분산 서비스 거부)공격: 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 대해 분산 서비스 공격을수행하는 것

 

네트워크 침해 공격 용어

- 스미싱: 문자 메시지를 이용해 사용자의 개인 신용 정보를 빼내는 수법

- 스피어 피싱: 사회공학 기법, 특정 대상 선정 후 지속적으로 연락

- APT: 조직적으로 특정 기업이나 조직 네트워크 침투, 보안 무력화, 해킹

- 무작위 대입 공격: 암호키를 찾기 위해 적용 가능한 모든 값을 대입하여 공격하는 방식

- 큐싱: QR코드를 활용하여 악성 앱 다운로드를 유도

- SQL 삽입 공격: 전문 프로그램 혹은 봇넷을 이용해 웹사이트를 무차별적으로 공격하는 과정에서 취약한 사이트가 발견되면 공격

- XSS: 웹 페이지의 내용을 사용자 브라우저에 표현하기 위해 사용되는 스크립트 취약점을 악용한 해킹

- 스니핑: 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형, 수동 공격'

정보 보안 침해 공격 용어

- 좀비PC: 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터

- C&C 서버: 좀비PC를 위해 사용되는 서버

- 봇넷: 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들의 네트워크

- 웜: 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임, 분산 서비스 거부 공격, 버퍼 오버플로우

- 제로데이 공격: 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통하야 이루어지는 보안 공격, 공격의 신속성

- 키로거 공격: 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드 등과 같은 개인의 중요한 정보를 몰래 빼가는 해킹 공격

- 랜섬웨어: 인터넷 사용자의 컴퓨터에 잠입해 내부 문서나 파일 등을 암호화해 사용자가 열지 못하게 하는 프로그램, 돈을 요구

- 백도어: 시스템 설계자가 서비스 기술자나 유지 보수 프로그램 작성자의 액세스 편의를 위해 시스템 보안을 제거 하여 만든 비밀 통로

- 트로이 목마: 정상적인 기능을 하는 프로그램으로 위장하여 프로그램 내에 숨어 있다가 해당 프로그램이 동작 할때 활성화

반응형