서버프로그램구현
- 업무 프로세스 맵과 세부 업무 프로세스를 확인
- 세부 업무 프로세스를 기반으로 프로그래밍 언어와 도구를 활용하여 서비스의 구현에 필요한 업무 프로그램 구현
- 개발하고자 하는 목표 시스템의 잠재적 보안 취약성이 제거될 수 있도록 서버 프로그램을 구현
- 개발된 업무 프로그램의 내부 기능과 제공하는 인터페이스에 대해 테스트 수행
용어사전
- API; Application Programming Interface
- 응용 프로그램 개발 시 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙을 정의해 놓은 인터페이스
소프트웨어 개발 보안의 개념
- 개발자의 실수, 논리적 오류 등으로 인해 발생할 수 있는 보안 취약점을 최소화하고, 사이버보안 위협에 대응할 수 있는 안전한 소프트웨어 개발하기 위한 일련의 보안 활동
- 데이터의 Confidentiality 기밀성, Integrity 무결성, Availability 가용성 유지를 목표
소프트웨어 개발 보안 가이드 구성
- 입력 데이터 검증 및 표현
- 프로그램 입력 값에 대한 검증 누락 또는 부적절한 검증, 데이터의 잘못 된 형식 지정으로 인해 발생할 수 있는 보안 약점
- SQL 삽입
- 자원 삽입
- 크로스 사이트 스크립트 등
- 보안 기능
- 보안 기능(인증, 접근제어, 기밀성, 암호화, 권한 관리)을 적절하지 않게 구현 시 발생할 수 있는 보안 약점
- 부적절한 인가
- 중요 정보 펭문 저장 등
- 시간 및 상태
- 동시 또는 거의 동시 수행을 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안 약점
- 경쟁 조건
- 제어문을 사용하지 않은 재귀 함수 등
- 에러 처리
- 에러를 처리하지 않거나, 불충분하게 처리하여 에러 정보에 중요 정보가 포함될 때 발생할 수 있는 보안 약점
- 취약한 패스워드 요구 조건
- 오류 메시지를 통한 정보 노출 등
- 코드 오류
- 타입 변환 오류, 자원의 부적절한 반환 등과 같이 개발자가 범할 수 있는 코딩 오류로 인해 유발되는 보안 약점
- 널 포인터 역참조
- 부적절한 자원 해제 등
- 캡슐화
- 중요한 데이터 또는 기능성을 불충분하게 캡슐화하였을 때 인가되지 않는 사용자에게 데이터 누출이 가능해지는 보안 약점
- 제거되지 않고 남은 디버그 코드
- 시스템 데이터 정보 노출 등
- API 오용
- 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API를 사용하여 발생할 수 있는 보안 약점
- DNS Lookup에 의존한 보안 결정
- Null 매개 변수 미조사 등