2022. 6. 16. 17:49ㆍ정처기(필기)/정보시스템구축관리
(1) SW 개발 보안
1. SW 개발 보안의 개념
- 소스 코드 등에 존재하는 보안 취약점을 제거하고, 보안을 고려하여 성능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동
2. SW 개발 보안의 3대 요소
- 기밀성 : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단하는 특성
- 무결성 : 정당한 방법을 따르지 않고서는 데이터가 변경될 수 없으며, 데이터를 파괴하거나 훼손하지 않음을 보장하는 특성
- 가용성 : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성
▼ SW 개발 보안 용어
- 자산(Assets) : 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상(서버의 하드웨어, 기업의 중요 데이터)
- 위협 : 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위(해킹, 삭제, 파손 등)
- 취약점 : 위협이 발생하기 위한 사전 조건으로 시스템의 정보 보증을 낮추는 데 사용되는 약점
- 위험 : 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성
(2) Secure SDL
1. Secure SDL이란
- 개발 단계에서 발생하는 설계, 구현상의 보안 약점 극복을 위한 보안 개발 방법론
2. Secure SDL 프로세스
- 계획 : 문제점 제시 및 요구사항 파악
- 분석 : 보안 요구사항을 분석하고 애플리케이션 사용자의 보안 요구사항을 정의
- 설계 : 분석 단계에서 보안 요구사항 분석서의 요구사항 반영
- 구현 : 설계 단계의 개발환경 보안 계획에 따라 환경 구성
- 테스트 : 기능 명세서, 기본 설계서, 상세 설계서에 반영된 보안사항을 테스트
(3) 입력 데이터 검증 및 표현
1. 입력 데이터 검증 및 표현이란
- 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
2. 입력 데이터 검증 및 표현 취약점
취약점 | 설명 | 대책 |
XSS(Cross Site Scripting) | 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우, 사용자가 해당 웹페이지를 열람함으로서 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격 | 1. 특수문자 등록을 방지하기 위해 특수문자 필터링 2. HYML 태그 사용 금지 3. 자바스크립트로 시작하는 문자열은 모두 문자열 변환처리 |
사이트 간 요청 위조(CSRF) | 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 | 입력화면 폼을 작성시 GET 방식보다는 Post방식 사용 세션별 CSRF 토큰을 사용하여 점검 중요기능의 경우 재인증을 통해 안전하게 실제 요청 여부를 확인하도록 구현 |
SQL 삽입 | 응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 데이터베이스의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격기법 | 바인딩 매개변수 방식 적용하여 사전에 변수 타입을 명시적으로 지정 사용자로부터 입력될 수 있는 모든 값을 체크하여 필터링 Servlet Filter 기능 적용 |
[1] XSS
- Stored XSS : 방문자들이 악성 스크립트가 포함된 페이지를 읽어 봄과 동시에 악성 스크립트가 브라우저에서 실행되면서 감염되는 기법
- Reflected XSS : 공격 시 악성 URL을 생성한 후 이메일로 사용자에게 전송하면 사용자가 URL 클릭 시 즉시 공격 스크립트가 피해자로 반사되어 접속 사이트에 민감정보를 공격자에게 전송하는 기법
- DOM XSS : 공격자는 DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 조작된 URL을 이메일을 통해 발송하고 피해자가 URL 클릭 시 공격 피해를 당하는 기법
▼ XSS 공격 방식
- 암의의 XSS 취약점이 존재하는 서버에 XSS 코드를 작성하여 삽입 저장
- 해당 웹 서비스 사용자가 공격자가 작성해 놓은 XSS 코드에 접근
- 사용자가 XSS 코드가 저장된 페이지에 정보를 요청
- 사용자의 시스템에서 XSS 코드 실행
- XSS 코드가 실행될 결과가 공격자에게 전달되고 공격자는 결과를 가지고 웹 서버에서 2차 해킹 시도
[2] SQL 삽입
공격 유형 | 설명 |
Form SQL Injection |
HTML Form 기반 인증을 담당하는 애플리케이션의 취약점이 있는 경우 사용자 인증을 위한 쿼리 문의 조건을 임의로 조작하여 인증을 우회하는 기법 |
Uion SQL Injection |
union select 쿼리를 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 결합하여 공격하는 기법 |
Stored Procedure SQL Injection | 저장 프로시저를 이용하여 공격하는 기법 |
Mass SQL Injection |
기존 SQL Injection의 확장된 개념으로 한 번의 공격으로 대량의 DB 값이 변조되어 홈페이지에 치명적인 영향을 미치는 공격기법 |
Error-Based SQL Injection | DB 쿼리에 대한 에러값을 기반으로 한 단계씩 점진적으로 DB 정보를 획득할 수 있는 공격기법 |
Blind SQL Injection | 쿼리 결과의 참과 거짓을 통해 의도하지 않은 SQL 문을 실행함으로써 데이터베이스를 비정상적으로 공격하는 기법 |
▼ SQL 삽입 공격 방식
- 응용 프로그램의 취약점 탐지
- 악의적인 SQL 구문 삽입하여 인증 우회
- 한이 상승되어 DB의 정보 탈취 및 조작 실행
[3] CSRF
▼ CSRF 공격 방식
- 공격자는 CSRF 스크립트가 포함된 게시물 등록
- 사용자는 CSRF 스크립트가 포함된 게시물 열람 요청
- 게시물을 읽은 사용자의 권한으로 공격자가 원하는 요청 발생
- 공격자가 원하는 CSRF 스크립트 결과가 발생
(4) 보안 기능
1. 보안 기능 개념
- 소프트웨어 개발 단계에서 인증, 접근제어, 기밀성, 암호화, 권한 관리 등을 적절하게 구현하기 위한 보안 점검 항목들이다.
2. 보안 기능 취약점
- 취약점 -> 적절한 인증 없이 중요 기능 허용, 설명 : 보안 검사를 우회하여 인증과정 없이 중요정보 또는 기능에 접근 및 변경이 가능, 대책 -> 중요정보나 기능을 수행하는 페이지에서는 재인증 기능을 통해 방지
- 취약점 -> 취약한 알고리즘 사용, 설명 -> 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보 탈취, 대책 -> 안전한 암호화 알고리즘, 안전성이 인증된 암호 모듈을 이용하여 방지
- 취약점 -> 중요 정보 평문 저장 및 전송, 설명 -> 암호화되지 않은 평문 데이터를 탈취하여 중요 정보 획득 가능, 대책 -> 중요한 정보 저장 및 전송 시 반드시 암호화 과정을 거치도록 함
- 취약점 -> 하드 코드 된 비밀 번호, 설명 -> 프로그램 코드 내부에 패스워드 포함 시 관리자 정보가 노출될 수 있는 보안 취약점, 대책 -> 패스워드는 암호화하여 별도 파일에 저장
- 취약점 -> 취약한 패스워드 요구 조건, 설명 -> 취약한 사용자 패스워드 조합 규칙에 따른 사용자 계정 보안 취약점, 대책 -> 패스워드 생성 시 강한 조건 검증 필요
(5) 에러 처리
1. 에러 처리 개념
- 에러 처리는 프로그램 실행 시 발생하는 에러를 예외 처리하지 못하거나, 에러 정보에 중요한 정보가 포함될 때 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들
2. 에러 처리 취약점
- 오류 메시지 통한 정보 노출 : 프로그램이 실행환경, 사용자, 관련데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 공격자의 악성 행위를 도와줌 -> 이럴 때는 정해진 사용자에게만 최소한의 정보만 표현
- 오류 상황 대응 부재 : 오류가 발생할 수 있는 부분을 확인하였으나, 이러한 오류에 대하여 예외 처리를 하지 않았거나 미비로 인해 발생하는 보안 약점 -> 오류가 발생할 수 있는 부분에 예외 처리 구문을 작성
- 적절하지 않은 예외 처리 : 함수의 결과값에 적절한 처리가 안되어 문제를 야기 -> 값을 반환하는 모든 함수의 결과값을 검사하여, 그 값이 기대한 값인지를 검사하고 구체적인 예외 처리를 통해 방지
(6) 세션 통제
1. 세션 통제 개념
- 다른 세션 간 데이터 공유 금지 등 세션을 안전하게 관리할 수 있도록 설계
(7) 암호 알고리즘
1. 암호 알고리즘 개념
- 데이터의 무결성 및 기밀성 확보를 위해 쉽게 해독할 수 없는 형태로 변환하는 기법
▼ 암호 알고리즘 주요 용어
- 평문 : 암호화되기 전의 원본 메시지
- 암호문 : 암호화가 적용된 메시지
- 암호화 : 평문을 암호문으로 바꾸는 작업
- 복호화 : 암호문을 평문으로 바꾸는 작업
- 키 : 적절한 암호화를 위하여 사용하는 값
- 치환 암호 : 비트, 문자 또는 문자의 블록을 다른 비트, 문자 또는 블록으로 대체하는 방법
- 전치 암호 : 비트, 문자 또는 블록이 원래 의미를 감추도록 자리바꿈 등을 이용하여 재배열 하는 방법
2. 암호 알고리즘 방식
[1] 양방향 방식
① 대칭 키 암호 방식
- 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘
▼ 대칭 키 암호 방식 종류
- 블록 암호 방식 : 긴 평문을 암호화하기 위해 고정 길이의 블록을 암호화하는 블록 암호 알고리즘을 반복하는 방법(DES, AES, SEED)
- 스트림 암호 방식 : 매우 긴 주기의 난수열을 발생시켜 평문과 더불어 암호문을 생성하는 방식(RC4)
② 비대칭 키 암호 방식(= 공개키 암호 방식)
- 사전에 비밀키를 나눠 가지지 않은 사용자들이 안전하게 통신하는 방식
- 공개키와 개인키가 존재하며, 공개키는 누구나 알 수 있지만 그에 대응하는 개인키는 키의 소유자만이 알 수 있다.
- 공개키로 암호화된 메시지는 반드시 개인 키로 복호화 해야 한다.
- 비대칭 키 암호 방식에는 RSA, ECC, Elgamal, 디피-헬만이 있다.
▼ 암호 알고리즘 비교
구분 | 대칭 키 암호 방식 | 비대칭 키 암호 방식 |
키 | 대칭 키(비밀키) | 비대칭 키(공개키, 개인키) |
키의 관계 | 암호화 키 = 복호화 키 | 암호화 키와 복호화 키는 같지 않음 |
키 개수 | n(n-1)/2 | 2n |
암호 알고리즘 | 공개 | 공개 |
장점 | 계산 속도가 빠름 | 암호화 키 사전 공유 불필요 관리해야 할 키 개수가 적음 |
단점 | 키 분배 및 관리의 어려움 기밀성만 보장 |
계산 속도 느림 |
알고리즘 | DES, AES, SEED | 디피-헬만, RSA |
[2] 일방향 암호 방식(해시 암호 방식)
- 임의 길이의 정보를 입력받아, 고정된 길이의 암호문(해시값)을 출력하는 암호 방식이다.
- 해시 암호화 알고리즘이 적용된 정보는 복호화가 불가능하다.
▼일방향 암호 종류
- MAC : 키를 사용하는 메시지 인증 코드(Message Authentication Code)로 메시지의 무결성과 송신자의 인증 보장(HMAC, NMAC)
- MDC : 키를 사용하지 않는 변경 감지 코드(Modification Detection Code)로 메시지의 무결성 보장(MD5, SHA)
- 해시함수의 경우 레인보우 테이블 공격에 취약할 수 있다.
- 이를 위해 솔트 키를 추가(암호공격을 막기 위해 똑같은 패스워드들이 다른 암호 값으로 저장되도록 추가되는 임의의 문자열)하거나 키 스트레칭(해시값을 알아보지 못하도록 계속해서 해시값을 입력값으로 반복하는 방법)을 사용한다.
3. 암호 알고리즘 상세
[1] 대칭 키 암호화 알고리즘
- DES : 미국에서 개발한 블록 암호화 알고리즘, 페이스텔 구조
- SEED : 국내 KISA에서 개발한 블록 암호화 알고리즘, 총 16회의 라운드 키를 사용하여 암호화
- AES : 미국 표준 기술 연구소에서 발표한 대칭 키 기반의 블록 암호화 알고리즘으로 개인 키에 대한 전사적 공격이 가능해지는 것을 극복하기 위해 개발(블록 크기느 128bit)
- ARIA : 2004년 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘으로 블록 크기는 총 128비트
- IDEA : DES를 대체하기 위해 스위스에서 개발한 블록 암호화 알고리즘
- LFSR : 시프트 레지스터의 일종으로, 레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조
[2] 비대칭 키 암호화 알고리즘
- 디피-헬만 : 최초의 공개키 알고리즘으로 유한 필드 내에서 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있음
- RSA : MIT의 수학 교수 세명이 고안한 큰 인수의 곱을 소인수 분해하는 공개키 암호화 알고리즘
- ECC : 유한체 위에서 정의된 타원곡선 군에서 이산대수 문제에 기초한 공개키 암호화 알고리즘
- EIGamal : T.EIGamal이 1984년에 제안한 공개키 알고리즘
- DSA : NIST에서 미국 전자서명 표준에 사용하기 위해 발표한 정부용 전자서명 알고리즘
[3] 해시 암호화 알고리즘
- MD5 : MD4를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용하는 해시 알고리즘
- SHA-1 : DSA에서 사용하는 해시 알고리즘
- SHA-256/384/512 : 256비트의 해시값을 생성하는 해시 함수
- HAS-160 : 국내 표준 서명 알고리즘을 위하여 개발된 해시 함수
- HAVAL : 메시지를 1024bit 블록으로 나누고 메시지 다이제스트를 출력하는 해시 알고리즘
(7) 코드 오류
1. 코드 오류 개념
- 소프트웨어 구현 단계에서 프로그램 변환 시 오류, 서버의 리소스 자원의 부적절한 반환 등 개발자가 흔하게 실수하는 프로그램 오류를 예방하기 위한 보안 점검 항목들
취약점 | 설명 | 대책 |
널 포인터 역참조 | 일반적으로 그 객체가 Null이 될 수 없다라고 하는 가정을 위반했을 때 발생 널 포인터는 메모리의 첫 주소를 가리키는데, 해당 주소를 참조할 경우에 소프트웨어가 비정상적으로 종료함 공격자가 의도적으로 역참조를 실행할 때 문제가 발생할 수 있음 |
Null이 될 수 있는 레퍼런스는 참조하기 전에 Null값인지를 검사하여 안전한 경우에만 사용 |
정수를 문자로 변환 | 정수를 문자로 변환하면서 표현할 수 없는 범위의 값이 잘려나가 문자에 대한 저장 값이 올바르지 않게 됨 | 이럴 때는 변환 값의 크기가 변환 값이 저장되는 변수의 크기보다 크지 않아야 함 |
부적절한 자원 해제 | 힙 메모리, 소켓 등 프로그램 자원 사용 후, 프로그램 오류로 인해 종료된 자원을 반환하지 못했을 때 발생할 수 있는 보안 취약점 | finally 블록에서 자원이 반환되도록 코딩할 것 |
초기화되지 않은 변수 사용 | 변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생 | 변수 선언 시 할당된 메모리를 초기화함으로써 방지 |
(8) 캡슐화
1. 캡슐화 개념
- 외부에 은닉이 필요한 중요한 데이터와 필요한 기능성을 불충분하게 캡슐화했을 때 인가되지 않은 사용자에게 데이터 유출, 권한 문제 등이 발생할 수 있는 보안 취약점 예방을 위한 보안 검증 항목들
(9) API 오용
1. API 오용 개념
- 서비스에서 제공되는 이용에 반하는 방법으로 API를 이용하거나 보안에 취약한 API를 오용하여 발생할 수 있는 보안 취약점 예방을 위한 보안 검증 항목들
'정처기(필기) > 정보시스템구축관리' 카테고리의 다른 글
시스템 보안 설계 (0) | 2022.06.18 |
---|---|
IT 신기술 및 SW 개발 트렌드 정보 (0) | 2022.06.15 |
네트워크 구축관리 (0) | 2022.06.14 |
소프트웨어 개발방법론 선정 (0) | 2022.06.13 |