Secure SDLC
- SDLC에 보안 프로세스 추가한 것
보안 활동
- 요구사항 분석 단계 보안 활동 : 보안 항목에 해당하는 요구사항 식별
- 설계 단계 보안 활동 : 보안 설계서 작성
- 구현 단계 보안 활동 : 보안 요구사항 구현, 보안 취약점을 최소화화는 시큐어 코딩
- 테스트 단계 보안 활동 : 보안 사항들이 동작하는지 점검
- 유지 보수 단계 : 보안 사고 식별, 발생 시 보안 패치
1) 세션 통제
- 서버와 클라이언트 연결인 세션 연결로 발생하는 정보 관리하는 것으로 요구사항 분석 단계 보안점검 항목
세션 통제 보안 약점
1. 불충분한 세션관리
- 일정 규칙이 존재하는 세션 ID를 발급하거나 타입아웃이 너무 긴 경우->세션 하이재킹으로 획득한 세션ID로 접근가능
2. 잘못된 세션에 의한 정보 노출
- 다중 스레드 환경에서 멤버변수 사용시 발생 -> 싱글턴 패턴의 레이스컨디션으로 동기화 오류 발생 or 맴버변수 노출
* 레이스 컨디션 : 두 개 이상의 프로세스가 공용 자원 획득을 위해 경쟁
=> 맴버변수를 지역변수로 바꿔 변수의 범위를 제한
3. 세셜 설계시 고려 사항
- 로그아웃시 세션 완전 제거되도록. 이전 세션 종료 안될 시 새 세션 생성 막음
2) 입력 데이터 검증 및 표현
- 입력 데이터로 인한 문제 방지를 위해 구현 단계 보안점검항목
입력 데이터 검증 및 표현 보안 약점
1. SQL 삽입
- 입력란에 SQL 삽입하여 무단 DB 조작 -> 입력 데이터에 예약어/특수문자 입력안되도록 필터링
2. 경로 조작 및 자원 삽입
- 데이터 입출력 경로 조작하여 서버 자원 수정/삭제 -> 경로 순회 공격 막는 필터 사용
3. 크로스사이트 필터링(XSS)
- 웹페이지에 악성 스크립트 삽입으로 방문자 정보 탈취, 비정상적기능 유발 -> HTML 태그 사용 제한
4. 운영체제 명령어 삽입
- 외부 입력을 통해 시스템 명령 실행 유도로 권한 탈취, 장애 유발 -> 웹 인터페이스로 명령어 전달 방지.
5. 위험한 형식 파일 업로드
- 악의적 스크립트 파일 업로드하여 시스템 손상 -> 파일 확장자 제한, 웹/파일 서버 경로 분리, 실행 속성 제거
6. 신뢰되지 않는 URL 연결
- 입력 값으로 사이트 주소 받는 경우 이를 조작하여 피싱 사이트 유도 -> 외부 사이트를 화이트 리스트로 관리
3) 보안 기능
- 인증, 접근제어, 암호화 등을 올바르게 구현하기 위한 구현 단계 보안점검 항목
보안 기능 보안 약점
1. 적절한 인가없이 중요기능 허용
- 보안 검사 우회하여 인증 없이 중요 정보/기능에 접근 -> 중요 정보/기능 수행 페이지에 재인증 수행
2. 부적절한 인가
- 접근 제어 없는 실행결로로 정보, 권한 탈취 ->모든 실행경로에 접근 제어 검사 수행
3. 중요 자원에 대한 잘못된 권한 설정
- 권한 설정이 잘못된 자원에 접근하요 임의 사용 -> 관리자만 자원접근하도록 설정
4. 취약한 암호화 알고리즘 사용
- 암호화 환경 파일 해독하여 정보 탈취 -> 개선된 암호화 알고리즘 사용
5. 중요 정보 평문 저장, 전송
- 평문 탈취해 중요 정보 획득 -> 중요 정보 저장, 전송시 암호화, 보안 채널 이용
6. 하드 코드된 비밀번호
- 소스 유출시 내부에 하드코드된 패스워드 이용 -> 패스워드 암호화하여 별도 파일에 저장
4) 시간 및 상태
- 병렬 시스템이나 멀티 프로세싱 환경에서 시간과 실행 상태를 원할히 동작하게하기 위한 보안 검증 항목
시간 및 상태 보안 약점
1. TOCTOU 경쟁 조건
- 검사 시점과 사용 시점 고려하지 않아 발생
2. 종료되지 않는 반복문/재귀함수
- 종료하지 못해 자원을 끊임없이 사용하여 고갈
5) 에러 처리
- 실행 중 발생 가능 오류들을 사전 정의하고 예외처리로 문제 예방을 위한 보안 점검항목
에러 처리 보안 약점
1. 오류 메시지를 통한 정보 노출
- 실행 환경, 사용자 정보 등 중요 정보 메시지가 외부로 노출 -> 메시지를 최소한으로 출력
2. 오류 상황 대응 부제
- 에러처리 하지 않거나 미비 -> 해당 에러에 대한 예외구문 작성
3. 부적절한 예외 처리
- 함수 반환, 오류들을 세분화 하지 않고 광범위하게 묶어 한번에 되거나 누락된 예외가 발생 -> 세분화하여 예외처리
6) 코드 오류
- 형 변환, 자워 반환 등 코딩 오류 예방을 위한 보안점검항목
코드 오류 보안 약점
1. 널포인터 역참조
- 함수가 널 포인터를 반환하고, 거기에 값 저장 -> 사용 전 널 검사
2. 부적절한 자원 해제
- 자원 반환 코드 누락하거나 오류로 자원 반환이 안될 시 자원 부족 발생 -> 예외없이 자원 반환
3. 해제된 자원 사용
- 반환된 메모리 참조 -> 반환된 자원의 포인터 변수 초기화
4. 초기화 되지 않은 변수 사용
- 초기화 안한 경우 -> 변수 선언시 초기화
7) 캡슐화
- 중요한 데이터와 기능을 불충분하게 은닉화하여 발생하는 문제 예방을 위한 보안 점검 항목
캡슐화 보안 약점
1. 제거되지 않은 디버그 코드
- 남은 코드로 발생하는 보안 약점 -> 디버그 코드 삭제
2. 시스템 데이터 정보 노출
- 내부 정보를 시스템 메시지로 외부 출력 -> 외부 노출 메시지는 최소한 정보만 제공
3. public 메소드로 반환된 private 배열
- 배열의 주소가 외부로 공개되어 접근 가능 ->private 배열을 별도 메소드로 조작, 값만 복사하여 사용
4. private 배열에 public 데이터 할당
- private 배열을 외부에서 접근 가능 -> public 데이터를 private 배열에 저장시 래퍼런스가 아닌 값 저장
5. 잘못된 세션에 의한 정보 노출
- 다중 스레드 환경에서 멤버 변수에 정보 저장으로 발생. 싱글톤 패턴의 레이스 커디션으로 동기화 오류나 맴버 변수 노출 -> 지역 변수를 사용하여 범위 제한
8) API 오용
- API를 잘못 쓰거나 보안에 취약한 API 사용 방지를 위한 보안 점검 항목
API 보안 약점
1. DNS Lookup에 의존한 보안 결정
- 도메인명에 의존 하여 보안 결정 시 DNS를 속임으로서 발생 -> IP 주소를 직접 입력하여 방지
2. 취약한 PAI
- 보안 문제로 금지된 API 사용하거나 잘못된 방식으로 사용 -> 안전한 API 사용
암호 알고리즘
- 평문화를 암호화 문으로 만드는 방법
- 단방향 암호화 방식(해시)과 양방향 암호화 방식(개인키 및 공개키)
1. 해시 hash
- 임의의 길이의 입력 데이터나 메시지를 고정 길이 값이나 키로 변환
- SHA, md
2. 개인키 암호화 기법
- 하나의 키로 암호화 하고 복호화 -> 대칭 암호 기법, 단일키 암호기법 이라고 하며 스트림 기법과 블록기법
- 스트림 기법 : 평문과 동일한 길이의 스트림을 생성하여 비트 단위 암호화 -> RC4, LFSR
- 블록 기법 : 한번에 하나의 데이터 블록을 암호화 -> DES, SEED, AES
3. 공개키 암호화 기법
- 암호화 하는 공개키는 사용자에게 공개, 복호화 하는 비밀키는 관리자만 사용. 비대칭 암호화기법
- RSA : 1979년 MIT. 공개키와 비밀키 사용. 키 : 메시지를 열고 잠그는 상수
양방향 암호화 알고리즘 종류
1. DES Data Encryption Standard
- 1975. 개인키 암호화 알고리즘. 블록 크기 64비트, 키 길이 56비트
2. AES Advanced Encryption Standard
- 2001 NIST. 개인키 암호화 알고리즘. 블록크기 128비트, 키 길이에 따라 128, 192, 256
3. SEED
- 1999. KISA 블록 암호화 알고리즘. 블록 크기 128비트, 키 길이에 따라 128, 256
4. ARIA : 블록 크기 128, 키 길이 128, 192, 256 분류
'컴퓨터과학 > SW, DB' 카테고리의 다른 글
연계 (0) | 2020.05.22 |
---|---|
요구사항 (0) | 2020.05.22 |
어플리케이션 테스트 - 2 테스트 프로세스 (0) | 2020.05.19 |
어플리케이션 테스트 - 1 어플리케이션 테스트 (0) | 2020.05.19 |
소프트웨어 공학 활용 - 9 UML (0) | 2020.05.19 |