IT보안 학습

소프트웨어 보안약점 진단가이드(2021) 개념 추출

김구티2 2024. 6. 28. 20:33

소프트웨어 분석·설계단계 진단 절차

① 착수단계: 착수 회의 실시

② 진단단계: 산출물 접수 → 산출물 검토 → 보안약점 진단 및 개선방안 도출 → 공동리뷰 → 개선방안 확정

③ 보고서 작성 및 제출 단계:  보고서 초안 작성 → 공동리뷰 → 보고서 제출

④ 종료단계: 종료회의 실시

 

분석단계 산출물

① 요구사항 정의서: 애플리케이션 개발에 필요한 기능, 품질, 기술 등 시스템 관련 요구사항을 도출 하여 발주사와 내용을 합의하고 정리하여 체계적으로 작성한 문서

② 요구사항 추적표: 도출된 요구사항을 기반으로 개발 각 단계별로 작성한 산출물들이 일관성 있게 작성되었는지 추적할 수 있도록 작성된 문서

③ 유즈케이스 명세서: 유즈케이스 다이어그램에 표현된 각 유즈케이스를 상세하게 설명하는 문서로 액터와 유즈케이스간 상호작용과 내부업무 흐름을 설명함

④ 유즈케이스 다이어그램: 액터 중심의 시스템 청사진으로서, 액터가 어떤 기능을 사용할 수 있는지 보여 주고 결과적으로 시스템이 어떤 기능을 제공하는지 알 수 있도록 작성함

 

설계단계 산출물

① 클래스 설계서: 유즈케이스별로 시퀀스도를 작성하여 도출된 객체 및 클래스와 그 연관관계를 표현하고 클래스명, 속성 및 오퍼레이션, 각 클래스의 상세한 명세가 기술된 문서

② 클래스 다이어그램: 시스템 요구사항에서 식별된 기능을 처리하는 클래스와 인터페이스 및 이들 의 연관관계를 표현하여 시스템의 논리적인 구조(클래스)를 이해할 수 있도록 하는 것

③ 시퀀스 다이어그램: 여러 객체들이 다른 객체들과 어떻게 교류하는지, 프로그램이 작동할 때 어떤 메서드가 어떤 순서로 실행되는지를 표현하며 상호작용하는 오브젝트 간 메시지 시퀀스를 설명하는 UML 다이어그램

④ 인터페이스 명세서: 시스템 내·외부 연계 인터페이스를 식별하고 Source와 Target간 인터페이스 방식, 연계 주기, 관련 테이블 속성 상세 내역을 기술하는 것

⑤ 사용자 인터페이스 설계서 (화면설계서): 애플리케이션이 제공하는 사용자 화면의 전체 구조와 메뉴 형식, 화면 목록과 화면의 상세 설계 내역 이 기술된 문서

⑥ 아키텍처 설계서: 개발대상 시스템에 대한 애플리케이션 구조와 시스템 환경 등 시스템의 구성 요소를 정의하고, 컴포넌트간에 상호작용하는 관계 및 가시적인 속성을 표현하는 것

⑦ 엔티티관계 모형 기술서: 문서로 서술된 요구사항에 대한 업무분석으로 도출된 엔티티와 엔티티간의 관계를 이해하기 쉽게 다이어그램으로 표시한 문서

⑧ 데이터베이스 설계서: 애플리케이션 요구사항을 만족시키기 위한 주요 데이터와 테이블을 정의하고 각 테이블의 용도, 컬럼 등 상세 내역을 기록한 문서

⑨ 단위테스트 계획서: 개발 완료된 시스템의 컴포넌트, 사용자인터페이스를 대상으로 단위테스트 대상을 선정하고, 단위 테스트 대상별 기능 수행 단위로 테스트 케이스와 테스트 절차, 테스트 데이터 등 상세 테스트 내용 을 작성하는 것

⑩ 통합테스트 계획서: 개발 결과물에 대해 결함을 찾아내고 요구사항의 충족 테스트 수행을 위해 단계별 테스트 일정, 방법 및 환경 등 전반적인 계획을 수립하는 것

⑪ 데이터전환 및 초기데이터 설계서: 신속하고 안정적인 데이터 이행을 위해 체계적인 절차를 수립하여 구축시 발생할 문제점을 사전에 차단할 수 있도록 데이터 전환 또는 초기화 계획을 수립하는 것

⑫ 개발 가이드: 프로그램 구현시 개발자가 지켜야 할 Coding, Comment, Indentation Rule 및 보안약점을 제거하고 안전한 코드를 작성하기 위한 코딩 규칙을 정의하는 것

 

기능에 대한 보안항목 식별

① 입력데이터 검증 및 표현: DBMS 조회 및 결과 검증, XML조회 및 결과 검증, 디렉토리 서비스 조회 및 결과 검증, 시스템 자원 접근 및 명령어 수행 입력값 검증, 웹 서비스 요청 및 결과 검증, 웹 기반 중요 기능 수행 요청 유효성 검증, HTTP 프로토콜 유효성 검증, 허용된 범위내 메모리 접근, 보안기능 입력값 검증, 업로드·다운로드 파일 검증

② 보안기능: 인증 대상 및 방식, 인증 수행 제한, 비밀번호 관리, 중요자원 접근통제, 암호키 관리, 암호연산, 중요정보 저장, 중요정보 전송

③ 에러처리: 예외처리

④ 세션통제: 세션통제

 

구현단계 보안약점 진단

① 입력데이터 검증 및 표현: SQL 삽입, 코드삽입, 경로 조작 및 자원 삽입, 크로스사이트 스크립트, 운영체제 명령어 삽입, 위험한 형식 파일 업로드, 신뢰되지 않는 URL 주소로 자동접속 연결, 부적절한 XML 외부개체 참조, XML 삽입, LDAP 삽입, 크로스사이트 요청 위조, 서버사이드 요청 위조, HTTP 응답분할, 정수형 오버플로우, 보안기능 결정에 사용되는 부적절한 입력값, 메모리 버퍼 오버플로우, 포맷 스트링 삽입

② 보안기능: 적절한 인증 없는 중요기능 허용, 부적절한 인가, 중요한 자원에 대한 잘못된 권한 설정, 취약한 암호화 알고리즘 사용, 암호화되지 않은 중요정보, 하드코드된 중요정보, 충분하지 않은 키 길이 사용, 적절하지 않은 난수 값 사용, 취약한 비밀번호 허용, 부적절한 전자서명 확인, 부적절한 인증서 유효성 검증, 사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출, 주석문 안에 포함된 시스템 주요정보, 솔트 없이 일방향 해쉬 함수 사용, 무결성 검사 없는 코드 다운로드, 반복된 인증시도 제한 기능 부재

③ 시간 및 상태: 경쟁조건: 검사 시점과 사용 시점(TOCTOU), 종료되지 않는 반복문 또는 재귀 함수

④ 에러처리: 오류 메시지 정보노출, 오류상황 대응 부재, 부적절한 예외 처리

⑤ 코드오류: Null Pointer 역참조, 부적절한 자원 해제, 해제된 자원 사용, 초기화되지 않은 변수 사용, 신뢰할 수 없는 데이터의 역직렬화

⑥ 캡슐화: 잘못된 세션에 의한 데이터 정보 노출, 제거되지 않고 남은 디버그 코드, Public 메소드부터 반환된 Private 배열, Private 배열에 Public 데이터 할당

⑦ API 오용: DNS lookup에 의존한 보안결정, 취약한 API 사용

 

728x90