본문 바로가기
Cert/소프트웨어(SW) 보안약점 진단원

설계단계 보안설계 기준 - 중요정보 저장

by 브루노W 2024. 8. 26.
유형 보안기능
설계항목 중요정보 저장
설명 중요정보(비밀번호, 개인정보 등)를 저장, 보관하는 방법이 안전하도록 설계한다.
보안대책 ① 중요정보 또는 개인정보는 암호화해서 저장해야 한다.
② 불필요하거나 사용하지 않는 중요정보가 메모리에 남지 않도록 해야 한다.
연관된 구현단계 기준 암호화되지 않은 중요정보
사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출

 

취약점 개요

 

사례1 : 중요정보 평문저장

메모리나 디스크에서 처리하는 중요데이터(개인정보, 인증정보, 금융정보)가 제대로 보호되지 않을 경우, 보안이나 데이터의 무결성이 훼손될 수 있다. 특히 사용자 중요정보 및 시스템 중요정보를 평문으로 저장할 경우 공격자에게 민감한 정보가 노출될 수 있는 취약점이다.

 

 

사례2 : 사용자 하드디스크에 저장된 쿠키를 통한 정보노출

개인정보, 인증정보 등이 영속적인 쿠키(Persistent Cookie)에 저장된다면, 공격자는 쿠키에 접근할 수 있는 보다 많은 기회를 가지게 되며, 이는 시스템을 취약하게 만든다.

 

 

 

설계 시 고려사항

 

① 중요정보 또는 개인정보는 암호화해서 저장해야 한다.

중요정보가 다뤄지는 '안전영역'을 설정하고 중요정보가 해당 영역 외부로 누출되지 않도록 설계한다.

서버의 DB나 파일 등에 저장되는 중요정보는 반드시 암호화해서 저장해야 하면 '암호연산' 설계항목에서 정의하고 있는 안전한 암호 알고리즘과 암호키를 사용한다.

클라이언트 측 하드드라이브에는 중요정보가 저장되지 않도록 설계해야 하며, 부득이하게 중요정보를 저정해야 하는 경우 반드시 클라이언트 측에 저장되는 민감 정보를 암호화한다.

중요한 로직 및 주석처리는 서버 측 언어에서만 처리하도록 설계한다.


② 불필요하거나 사용하지 않는 중요정보가 메모리에 남지 않도록 해야 한다.

개인정보 또는 특정 금융정보를 처리하는 기능 구현 시 더 이상 필요하지 않은 데이터에 대해 메모리를 초기화하여 중요데이터가 메모리에 남지 않도록 한다.

민감한 정보를 포함하는 페이지는 사용자 측 캐싱을 비활성화하도록 제한적인 캐시 정책을 수립하여야 하며, 부득이하게 캐싱을 해야 하는 경우 캐싱되는 정보는 암호화하여 저장되도록 설계한다.

인증정보와 같은 민감한 정보를 포함하는 웹 폼을 구현하는 경우 자동완성 기능을 비활성화하도록 한다.

 

 

진단 세부사항

 

요구사항 ① 중요정보 또는 개인정보는 암호화해서 저장해야 한다.

- 암호화 대상 정보와 암호화 구현 방법을 명시하고 있는지 확인

- 중요정보 또는 개인정보가 암호화되어서 저장되도록 설계되어 있는지 확인

- 저장된 중요정보에 대한 암호화 여부를 점검하는 테스트 계획이 수립되어 있는지 확인

 

※ 암호화하여 저장되어야 하는 중요정보 또는 개인정보

- 암호화 대상 중요 정보 : 개인정보, 신용정보, 인증 정보 등

- 개인정보보호법 : 고유식별정보 (주민번호, 운전면허번호, 여권번호, 외국인등록 번호), 바이오정보, 비밀번호

- 정보통신망법 : 주민등록번호, 신용카드번호, 계좌번호

- 위치정보법 : 위치정보

- 시스템 중요정보 : 데이터베이스 및 연동시스템 계정 정보, 주요 설정 정보

- 기타 관련 법률 및 서비스 특성에 따른 주요 정보

 

요구사항 ② 불필요하거나 사용하지 않는 중요정보가 메모리에 남지 않도록 해야 한다.

- 사용하지 않는 중요정보가 메모리에 남아있지 않도록 설계되어 있는지 확인

- 사용하지 않는 중요정보의 메모리 잔존을 점검하는 테스트 계획이 수립되어 있는지 확인