본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.


개발 보안 가이드

편집 원본 편집

설계단계 보안요구항목과 구현단계 보안약점

편집 원본 편집

「전자정부 SW 개발·운영자를 위한 소프트웨어 개발보안 가이드」는 분석·설계 단계에서 지킬 보안요구항목 20개를 정하고, 각 항목이 구현 단계에서 어떤 보안약점을 막기 위한 것인지 짝지어 둔다. 설계 항목을 지키지 않으면 그 짝의 보안약점이 코드에 생긴다.

유형 설계단계 보안요구항목 대응하는 구현단계 보안약점(예)
입력데이터 검증 및 표현 (10) DBMS 조회 및 결과 검증 SQL 삽입
XML 조회 및 결과 검증 XML 삽입(XQuery·XPath 삽입)
디렉터리 서비스 조회 및 결과 검증 LDAP 삽입
시스템 자원 접근 및 명령어 수행 입력 데이터 검증 코드 삽입, 경로 조작 및 자원 삽입, 운영체제 명령어 삽입
웹 서비스 요청 및 결과 검증 크로스사이트 스크립트
웹 기반 중요 기능 수행 요청 유효성 검증 크로스사이트 요청 위조, 서버사이드 요청 위조
HTTP 프로토콜 유효성 검증 HTTP 응답분할, 신뢰되지 않은 URL 주소로 자동접속 연결
허용된 범위 내 메모리 접근 포맷 스트링 삽입, 메모리 버퍼 오버플로우
보안기능 동작에 사용되는 입력값 검증 보안기능(인증·인가 등) 결정에 사용되는 부적절한 입력값, 정수형 오버플로우 - 쿠키·숨은 필드처럼 사용자가 바꿀 수 있는 값으로 권한을 판단하지 않도록 서버에서 검증한다
업로드·다운로드 파일 검증 위험한 형식 파일 업로드, 무결성 검사 없는 코드 다운로드
보안기능 (8) 인증 대상 및 방식 적절한 인증 없는 중요 기능 허용
인증 수행 제한 반복된 인증시도 제한 기능 부재
비밀번호 관리 취약한 비밀번호 허용, 하드코드된 중요정보
중요자원 접근통제 부적절한 인가, 중요한 자원에 대한 잘못된 권한 설정
암호키 관리 하드코드된 중요정보, 충분하지 않은 키 길이 사용
암호연산 취약한 암호화 알고리즘 사용, 적절하지 않은 난수값 사용, 솔트 없이 일방향 해시 함수 사용
중요정보 저장 암호화되지 않은 중요정보(저장)
중요정보 전송 암호화되지 않은 중요정보(전송)
에러처리 (1) 예외처리 오류 메시지 정보노출, 오류상황 대응 부재, 부적절한 예외 처리
세션통제 (1) 세션통제 잘못된 세션에 의한 데이터 정보 노출
  • 솔트 없이 일방향 해시 함수 사용은 비밀번호·중요정보를 해시로 저장할 때 솔트를 붙이지 않아 레인보우 테이블 공격에 약해지는 보안약점이다. 입력값 검증이 아니라 보안기능 유형(암호연산·비밀번호 저장)에 속한다
  • 입력데이터 검증 및 표현 유형의 설계 항목은 모두 "외부 입력을 어디에 쓰기 전에 검증하라"는 것이고, 짝이 되는 구현 보안약점은 대부분 삽입(인젝션) 계열이다
  • 구현단계 보안약점 49개의 7개 유형 분류는 시큐어 코딩 문서에 있다

개발 보안 모델&방법론

편집 원본 편집
  • SW보안의 모범 사례를 SDLC(Software Development Life Cycle)에 통합한 소프트웨어 개발 보안 생명주기 방법론

KT 개발 보안 아키텍처

편집 원본 편집
출처
KISA 2019 개발 보안 컨퍼런스에서 기록
  • 목표
    • 안전한 시스템의 개발
    • 안전한 개발 환경
    • 안전한 시스템 운용
  • 원칙
    • 최소화: 최소 정보, 접근통제 등
    • 분리: 권한 오남용 방지, Risk Isolation 위해 분리 방안
    • 다중 보안: 한 가지 보안대책이 무력화 되더라도 다른 보안대책이 적용되도록
    • 컴플라이언스: 법규/규제 관련 사항은 반드시 준수
  • 3가지 관점
    • 기능 항목
    • 관리 관점(인프라, 애플리케이션 개발, 개인정보 업무처리)
    • 대상 유형(서버/웹 시스템, 모바일 앱, IoT)