소프트웨어 개발 보안 구축
SW개발 보안 구현
1. 암호 알고리즘
- 주민번호, 패스워드, 은행계좌 등 중요 정보를 보호하기 위해 평문을 암호문으로 만드는 절차 또는 방법
- 해시를 사용하는 단방향 암호화 방식과 개인키와 공개키로 분류되는 양방향 암호화 방식으로 구분됨
-
- Stream 방식
- 평문과 동일한 길이의 스트림을 생성하여 비트단위로 암호화
- Block 방식
- 한 번에 하나의 데이터 블록을 암호화
- Stream 방식
2. 코드오류
- 코드 오류는 소프트웨어 구현 단계에서 개발자들이 코딩 중 실수하기 쉬운 형(Type) 변환, 자원 반환 등의 오류를 예방하기 위한 보안 점검 항목
- 코드 오류로 발생할 수 있는 보안 약점
- Null 포인터 역참조
- Null은 값이 없음을 의미하며 포인터는 메모리의 위치를 가리킴.
- 부적절한 자원 해제
- 해제된 자원 사용
- 초기화되지 않은 변수 사용
- Null 포인터 역참조
3. 캡슐화
- 정보 은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안 점검 항목들
- 캡슐화 보안 약점
- 잘못된 세션에 의한 정보 노출
- 제거 되지 않고 남은 디버그 코드
- 시스템 데이터 정보 노출
- Public 메소드로부터 반환된 Private 배열
- Private 배열에 Public 데이터 할당
4. API 오용
- 소프트웨어 구현단계에서 API를 잘못 사용하거나 보안에 취약한 API를 사용하지 않도록 하기 위한 보안 검증 항목들
- API 오용의 보안 약점
- DNS lookup에 의존한 보안 결정
- 취약한 API 사용