[정처기 실기] 9장 - 소프트웨어 개발 보안 구축

배채윤·2021년 4월 22일

✅ SW 개발 보안 설계

💡 보안요소
SW 개발에 있어 충족시켜야 할 요소.
주요 보안 요소에는 기밀성, 무결성, 가용성, 인증, 부인 방지가 포함됨
💡 세션통제
세션은 서버와 클라이언트의 연결.
세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것

◾️ Secure SDLC

📌 SDLC에 보안 강화를 위한 프로세스를 포함한 것

◽️ 대표적인 방법론

  • CLASP
    초기 단계에서 보안 강화
  • SDL
    마이크로소프트사에서 SDLC 개선
  • Seven Touchpoints
    보안 모법사례를 SDLC에 통합

◽️ 단계별 보안 활동

  • 요구사항 분석
    보안 항목에 해당하는 요구사항을 식별
    💡 보안요소 5가지
    • 기밀성
      인가된 사용자만 접근
    • 무결성
      인가된 사용자만 수정
    • 가용성
      인가된 사용자는 언제든지 사용 가능
    • 인증
      사용자 확인
    • 부인 방지
      송수신을 부인할 수 없도록 증거 제공
  • 설계
    실별된 보안 요구사항을 SW 설계서에 반영하고 보안 설계서 작성
    네트워크, 서버, 물리, 개발 프로그램 등 환경에 대한 보안 통제 기준을 수립하여 설계에 반영
  • 구현
    표준 코딩 정의서&SW 개발 보안 가이드를 준수하여 보안 요구 사항들을 구현(**시큐어 코딩)
    단위테스트로 보안 취약점 최소화
  • 테스트
    보안 설계서를 바탕으로 보안 사항이 정확히 반영되어 동작하는지 점검
    동적 분석 or 모의 침투테스트를 통해 설계단계에서 식별된 위협들의 해결 ㄷ여부 검증
  • 유지보수
    모두 수행했음에도 발생하는 보안 사고 식별, 보안 배치 실시

◾️ 입력데이터 검증 및 표현

📌 입력되는 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들

  • 유효성 검증체계를 갖줘야하고
  • 일관된 언어셋(utf8...)을 사용

◽️ SQL 삽입

  • 약점
    SQL을 입력란에 삽입하여 무단으로 DB 조회, 수정
  • 방지
    동적 쿼리에 사용하는 입력데이터에 예약어나 특수문자 X

◽️ 경로 조작 및 자원 삽입

  • 약점
    입출력 경로를 조작하여 서버 자원을 수, 삭제
  • 방지
    경로 순회 공격을 막는 필터 사용

◽️ 크로스사이트 스크립팅(XSS)

  • 약점
    웹페이지에 스크립트 삽입
  • 방지
    태그 사용을 막거나 다른 문자로 변환

◽️ 위험한 형식 파일 업로드

  • 약점
    악의적인 명령이 포함된 스크립트 파일을 업로드
  • 방지
    확장자 제한, 파일명 암호화, 웹사이트와 파일 서버 경로 분리

◽️ 신뢰되지 않는 URL 주소로 자동접속 연결

  • 약점
    피싱 사이트로 유도
  • 방지
    연결 외부 사이트 주소를 화이트 리스트로 관리

◽️ 메모리 버퍼 오버플로

  • 약점
    프로그램에 할당된 메모리 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안약점
  • 방지
    적절한 버퍼 크기 설정, 설정한 범위만 접근하게 함

◾️ 보안기능(인증, 접근 제어, 기밀성, 권한 관리)

📌 구현 단계에서 코딩하는 기준인 인증, 접근, 제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들

◽️ 적절한 인증없이 중요 기능 허용

  • 약점
    보안 검사를 우회하여 인증과정 없이 중요 기능에 접근
  • 방지
    중요 기능은 재인증 하도록 함

◽️ 부적절한 인가

  • 약점
    접근 제어 기능이 없는 실행경로로 정보 탈취
  • 방지
    모든 실행경로 검사, 사용자에게 반드시 필요한 접근 권한만 부여

◽️ 중요한 자원에 대한 잘못된 권한 설정

  • 약점
    권한 설정이 잘못된 자원에 접근하여 해당 자원을 임의로 사용
  • 방지
    중요 자원 접근 여부 검사

◽️ 취약한 알고리즘 암호화 사용

◽️ 중요정보 평문 저장 및 전송

  • 약점
    중요 정보를 평문으로 주고 받을 때 탈취 위험
  • 방지
    HTTPS or SSL 같은 보안 채널 이용

◽️ 하드코드된 암호화키

  • 약점
    역계산, 무차별 대입 공격에 의해 탈취가능
  • 방지
    암호화 키 생성 모듈 이용

◾️ 에러처리

📌 SW 개발 중 에러처리를 하지 않았거나 미비로 인해 발생하는 보안 약점

◽️ 오류 메시지를 통한 정보 노출

내부 정보 노출 최소화

◽️ 오류 상황 대응 부재

에러 처리가 미비할 때 발생

◽️ 부적절한 예외처리

오류를 세분화 처리하지 않았을 떄 발생

◾️ 세션통제

📌 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것

◽️ 불충분한 세션 관리

규칙성이 있는 세션 ID, 타임아웃이 너무 길 때.
세션 하이재킹 과 같이 세션을 가로채가는 공격을 당했을 때 유출된 세션 ID로

◽️ 잘못된 세션에 의한 정보 노출

다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
싱글톤패턴에서 발생하는 레이스 컨디션
변수 범위 제한, 멤버 변수 -> 지역변수

✅ SW 개발 보안 구현

◾️ 암호화 알고리즘

◽️ 개인키 암호화 기법

= 대칭키 = 비밀키 = 단일키
동일핱 키로 데이터를 암호화하고 복호화하는 암호화 기법

  • 스트림 암호화 방식
    LFSR, RC4
  • 블록 암호화 방식
    SEED, ARIA, DES, AES

◽️ 공개키 암호화 기법

암호화할 때 사용하는 공개키는 공개하고 복호화 할 때 사용하는 비밀키는 관리자가 비밀리에 관리
RSA

◽️ 해시

임의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
데이터 무결성 검증을 위해 사용하기도 함
SHA, MD5, HAS, N-NASH, SNEFRU

◾️ 코드 오류

  • 널포인터 역참조
  • 부적절한 자원 해제
  • 해제된 자원 사용
  • 초기화되지 않는 변수 사용

◾️ 캡슐화

  • 잘못된 세션에 의한 정보 노출
  • 제거되지 않고 남은 디버그 코드
  • 시스템 데이터 정보 노출
  • public 메소드로부터 반환된 private 배열
  • private 배열에 public 데이터 할당

◾️ API 오용

  • DNS Lookup에 의존한 보안 결정
  • 취약한 API 사용

✅ 서비스 공격 유형

◾️ 서비스 거부 (DoS;Denial of Service) 공격

◾️ 네트워크 침해 공격 관련 용어

◾️ 정보 보안 침해

✅ 보안 솔루션

profile
새로운 기술을 테스트하고 적용해보는 걸 좋아하는 서버 개발자

0개의 댓글