📘웹서비스프로그래밍

배경

  • 정확하고,이해하기쉬우며,검증 가능한 프로그램을 만드는 것의 어려움
  • 개발시간,효율성,품질,성능,유지보수 등의 문제
  • 소프트웨어의 결함에 따른 문제들이 많음
  • 인터넷 환경에 기반한 공격 증가(웹사이트공격에 의한 정보유출,SNS상의 보안 위협 , 국방 관련 정보 유출)
  • 에러를 가능한 빨리 발견해야 된다.

소프트웨어 보안과 안전한 코딩

  • 네트워크 보안 <- 정보의 접근과 제한
  • 시스템 보안 <- 웹,메일,네임서버 등
  • 사용자 보안 <- 비 인증사용자 접근 제한
  • 프로그램 보안 <- 취약점 악용 방지

보안개발 생명 주기(SSDLC,Secure SDLC)

  1. 사전교육
  2. 요구분석(보안 요구사항 도출,보안 위험성 추정)
  3. 설계 (보안구조설계,공격대상 영역 축소,보안 위협 모델링)
  4. 구현 (안전한 코딩 규약 준수, 보안 개발 도구 사용, 취약점 사전 제거)
  5. 검증 (코드 보안성 검토,정적 코드 분석,침투시험 수행)
  6. 배포 (최종 보안성 검토)

보안 약점

  • 프로그램이 가지고 있는 오류,결함,허점
  • 특정 환경이 만족되면 공격 대상이 될 수 있는 문제점

취약점

  • 보안약점을 가짐(소프트웨어 개발 단계)
  • 공격자가 그 결점에 접근 가능(소프트웨어 설계 단계)
  • 공격자가 정보를 수정하거나 획득(exploit,잘못된 보안 요구사항)

# 보안 약점 해소 방법

  • 보안약점 분석/제거(설계,감소,보안전문가,오탐,보안에 대한 지식)
  • 보안약점 억제(프로그래머,코딩규칙 적용)

보안약점과 코딩규칙

  • 보안 약점과 코딩 규칙 매핑
  • 보안약점 설명과 코딩 규칙과의 연관관계 기반 설정

    보안약점 유형

    1. 입력 데이터 검증 및 표현(sql삽입,경로조작 및 지원 삽입,크로스사이트스크립트)
    2. 보안 기능(부적절한 인가 허용 , 중요정보 평문 저장 ,하드 코드된 패스워드)
    3. 시간 및 상태 (경쟁조건,종료 되지 않는 반복문)
    4. 에러 처리(오류 상황 대응 부재, 오류메시지를 통한 정보 노출)
    5. 코드 오류 (널 포인트 역참조,부적절한 자원 해제 등)
    6. 캡슐화(제거되지않고 남은 디버그 코드,시스템 데이터 정보노출등)
    7. api오용

안전한 코딩(Secure Coding)

  • 일반적인 SW취약성을 피하는 코딩 방법
  • SW결함,버그,허점 등이 주요 요인이 됨
  • 프로그램의 오류에서 SW 취약성이 유발됨을 밝힘
  • 개발 단계에서 보안

10가지 안전한 코딩 원칙 1.입력 값을 검증하라

  1. 컴파일러 경고를 주의하라
  2. SW 설계 단계부터 안전 정책에 따르라
  3. 단순성을 유지하라
  4. Default를 거부하라
  5. 최소 privilege원칙을 따르라(권한을 높이 설정하지마라)
  6. 다른 시스템에서 온 데이터를 검사하라
  7. 방어 시스템을 다단계로 관리하라
  8. 효과적인 품질 보증 기술을 사용하라
  9. 안전한 코딩 표준을 준수하라

태그:

카테고리:

업데이트: