Specialist in Software

KISA 소프트웨어 보안약점 기준 본문

Software Engineering

KISA 소프트웨어 보안약점 기준

SISW 2024. 5. 29. 00:49
728x90

가. (설계단계) 보안설계기준

  1. 입력 데이터 검증 및 표현
    • DBMS 조회 및 결과 검증 : DBMS 조회시 질의문(SQL)내 입력값과 그 조회결과에 대한 유효성 검증방법(필터링 등) 설계 및 유효하지 않은 값에 대한 처리방법 설계
    • XML 조회 및 결과 검증 : XML 조회시 질의문(XPath, XQuery 등) 내 입력값과 그 조회결과에 대한 유효성 검증방법(필터링 등) 설계 및 유효하지 않은 값에 대한 처리방법 설계
    • 디렉토리 서비스 조회 및 결과 검증 : 디렉토리 서비스(LDAP 등)를 조회할 때 입력값과 그 조회결과에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계
    • 시스템 자원 접근 및 명령어 수행 입력값 검증 : 시스템 자원접근 및 명령어를 수행할 때 입력값에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계
    • 웹 서비스 요청 및 결과 검증 : 웹 서비스(게시판 등) 요청(스크립트 게시 등)과 응답결과(스크립트를 포함한 웹 페이지)에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계
    • 웹 기반 중요 기능 수행 요청 유효성 검증 : 비밀번호 변경, 결제 등 사용자 권한 확인이 필요한 중요기능을 수행할 때 웹 서비스 요청에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계
    • HTTP 프로토콜 유효성 검증 : 비정상적인 HTTP 헤더, 자동연결 URL 링크 등 사용자가 원하지 않은 결과를 생성하는 HTTP 헤더·응답결과에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계
    • 허용된 범위내 메모리 접근 : 해당 프로세스에 허용된 범위의 메모리 버퍼에만 접근하여 읽기 또는 쓰기 기능을 하도록 검증방법 설계 및 메모리 접근요청이 허용범위를 벗어났을 때 처리방법 설계
    • 보안기능 입력값 검증 : 보안기능(인증, 권한부여 등) 입력값과 함수(또는 메소드)의 외부입력 값 및 수행결과에 대한 유효성 검증방법 설계 및 유효하지 않은 값에 대한 처리방법 설계
    • 업로드·다운로드 파일 검증 : 업로드·다운로드 파일의 무결성, 실행권한 등에 관한 유효성 검증방법 설계 및 부적합한 파일에 대한 처리방법 설계
  2. 보안기능
    • 인증 대상 및 방식 : 중요정보·기능의 특성에 따라 인증방식을 정의하고 정의된 인증방식을 우회하지 못하게 설계 
    • 인증 수행 제한 : 반복된 인증 시도를 제한하고 인증 실패한 이력을 추적하도록 설계 
    • 비밀번호 관리 : 생성규칙, 저장방법, 변경주기 등 비밀번호 관리정책별 안전한 적용방법 설계 
    • 중요자원 접근통제 : 중요자원(프로그램 설정, 민감한 사용자 데이터 등)을 정의하고, 정의된 중요자원에 대한 신뢰할 수 있는 접근통제 방법(권한관리 포함) 설계 및 접근통제 실패 시 처리방법 설계
    • 암호키 관리 : 암호키 생성, 분배, 접근, 파기 등 암호키 생명주기별 암호키 관리방법을 안전하게 설계
    • 암호연산 : 국제표준 또는 검증필 암호모듈로 등재된 안전한 암호 알고리즘을 선정하고 충분한 암호키 길이, 솔트, 충분한 난수 값을 적용한 안전한 암호연산 수행방법 설계
    • 중요정보 저장 : 중요정보(비밀번호, 개인정보 등)를 저장·보관하는 방법이 안전하도록 설계
    • 중요정보 전송 : 중요정보(비밀번호, 개인정보, 쿠키 등)를 전송하는 방법이 안전하도록 설계
  3. 에러처리
    • 예외처리 : 오류메시지에 중요정보(개인정보, 시스템 정보, 민감 정보 등)가 노출되거나, 부적절한 에러·오류 처리로 의도치 않은 상황이 발생하지 않도록 설계
  4. 세션통제
    • 세션통제 : 다른 세션 간 데이터 공유금지, 세션ID 노출금지, (재)로그인시 기존 세션ID 재사용 금지 등 안전한 세션 관리방안 설계

 

나. (구현단계) 보안약점 제거 기준

  1. 입력 데이터 검증 및 표현
    • SQL 삽입
    • 코드 삽입
    • 경로 조작 및 자원 삽입
    • 크로스사이트 스크립트
    • 운영체제 명령어 삽입
    • 위험한 형식 파일 업로드
    • 신뢰되지 않는 URL 주소로 자동접속 연결
    • 부적절한 XML 외부 개체 참조
    • XML 삽입
    • LDAP 삽입
    • 크로스사이트 요청 위조
    • 서버사이드 요청 위조
    • HTTP 응답분할
    • 정수형 오버플로우
    • 보안기능 결정에 사용되는 부적절한 입력값
    • 메모리 버퍼 오버플로우
    • 포맷 스트링 삽입
  2. 보안기능
    • 적절한 인증 없는 중요기능 허용
    • 부적절한 인가
    • 중요한 자원에 대한 잘못된 권한 설정
    • 취약한 암호화 알고리즘 사용
    • 암호화되지 않은 중요정보
    • 하드코드된 중요정보
    • 충분하지 않은 키 길이 사용
    • 적절하지 않은 난수 값 사용
    • 취약한 비밀번호 허용
    • 부적절한 전자서명 확인
    • 부적절한 인증서 유효성 검증
    • 사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출
    • 주석문 안에 포함된 시스템 주요정보
    • 솔트 없이 일방향 해쉬 함수사용
    • 무결성 검사 없는 코드 다운로드
    • 반복된 인증시도 제한 기능 부재
  3. 시간 및 상태
    • 경쟁조건: 검사 시점과 사용 시점(TOCTOU)
    • 종료되지 않는 반복문 또는 재귀 함수
  4. 에러처리
    • 오류 메시지 정보노출
    • 오류상황 대응 부재
    • 부적절한 예외 처리
  5. 코드오류
    • Null Pointer 역참조
    • 부적절한 자원 해제
    • 해제된 자원 사용
    • 초기화되지 않은 변수 사용
    • 신뢰할 수 없는 데이터의 역직렬화
  6. 캡슐화
    • 잘못된 세션에 의한 데이터 정보 노출
    • 제거되지 않고 남은 디버그 코드
    • Public 메소드부터 반환된 Private 배열
    • Private 배열에 Public 데이터 할당
  7. API오용
    • DNS lookup에 의존한 보안결정
    • 취약한 API 사용

 

출처 : 소프트웨어 보안약점 진단가이드(2021.11.)