보안 기능의 개요
- 보안 기능은 소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들이다.
- 각 보안 기능들은 서비스 환경이나 취급 데이터에 맞게 처리될 수 있도록 구현해야 한다.
- 소프트웨어의 기능 또는 데이터에 접근하려는 사용자별로 중요도를 구분하고, 차별화된 인증 방안을 적용한다.
- 인증된 사용자가 이용할 기능과 데이터에 대해 개별적으로 접근 권한을 부여하여 인가되지 않은 기능과 데이터로의 접근을 차단한다.
- 개인정보나 인증정보와 같은 중요한 정보의 변조 · 삭제 · 오남용 등을 방지하기 위해 안전한 암호화 기술을 적용한다.
보안 기능의 보안 약점
- 보안 기능에 대한 점검을 수행하지 않을 경우 인증 없이 중요한 기능을 허용하거나 비밀번호가 노출되는 등 다음과 같은 보안 약점이 발생할 수 있다.
- 적절한 인증 없이 중요기능 허용
- 보안검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경이 가능하다.
- 중요정보나 기능을 수행하는 페이지에서는 재인증 기능을 수행하도록 하여 방지할 수 있다.
- 부적절한 인가
- 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한을 탈취할 수 있다.
- 모든 실행경로에 대해 접근제어 검사를 수행하고, 사용자에게는 반드시 필요한 접근 권한을 부여하여 방지할 수 있다.
- 중요한 자원에 대한 잘못된 권한 설정
- 권한 설정이 잘못된 자원에 접근하여 해당 자원을 임의로 사용할 수 있다.
- 소프트웨어 관리자만 자원들을 읽고 쓸 수 있도록 설정하고, 인가되지 않은 사용자의 중요 자원에 대한 접근 여부를 검사함으로써 방지할 수 있다.
- 취약한 암호화 알고리즘 사용
- 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보를 탈취할 수 있다.
- 안전한 암호화 알고리즘을 이용하고, 업무관련 내용이나 개인정보 등에 대해서는 IT 보안인증사무국이 안정성을 확인한 암호모듈을 이용함으로써 방지할 수 있다.
- 중요정보 평문 저장 및 전송
- 암호화되지 않은 평문 데이터를 탈취하여 중요한 정보를 획득할 수 있다.
- 중요한 정보를 저장하거나 전송할 때는 반드시 암호화 과정을 거치도록 하고, HTTPS 또는 SSL과 같은 보안 채널을 이용함으로써 방지할 수 있다.
- 하드코드된 비밀번호
- 소스코드 유출 시 내부에 하드코드된 패스워드를 이용하여 관리자 권한을 탈취할 수 있다.
- 패스워드는 암호화하여 별도의 파일에 저장하고, 디폴트 패스워드나 디폴드 키의 사용을 피함으로써 방지할 수 있다.