SW개발보안 기본과정

소프트웨어 개발 보안, KISEC, 한국정보보호교육센터, 2022

1.SW개발보안의 최신 동향과 이해

  • 종류 : Dos, Code execution, overflow, Directory Traversal, CSRF, Bypass Someting
  • 취약점 :
    • 대소문자 구분의 부적절한 처리
    • 코드생성의 부적절한 제어
    • 제한 또는 스로틀링 없이 자원할당
    • 부적절한 권한 관리
    • 우회
    • 무결성 검사 없이 코드 다운로드
    • CSRF, 사이트간 요청 위조
    • 신뢰할 수 없는 데이터의 역 직렬화
    • 웹페이지 구조 보존 실패
  • 최근 사례 :
    • Spring Framework 에서 사용하는 Log4j 라이브러러에 서버링크를 넣고, 해당 서버의 악성코드를 받아 서버마비.
    • MS Exchange Server 백도어로 서버 장악 사례
    • Wordpress 플러그인 취약
    • 공급망 해킹
    • IoT디바이스, 아파트 월패드 해킹
    • SQL 인젝션, 쿼리문으로 데이터를 가져감, 보안체계로 데이터 암호화 필요함. md-5, sha-1, sha-2를 사용하여 만들어낼수 있는 hash값은 취약하다. 가능한 값들은 “레이보우테이블”이라는 표로 만들어 해커들이 공유하기 때문에, 긴 암호와 안전한 알고리즘으로 암호화가 필요하다.

2.SW개발보안법률에 의한 개발 기준 및 절차

사이버 공격의 원인인 보안약점을 사전에 제거하고 SW개발 생명 주기의 단계별로 수행하는 활동을 보안하기 위한 법률

  • 관련 기관 : 행정안전부(제도 가이드), 한국인터넷진흥원(개발 보안 정책 가이드 및 기술지원), 감리법인(설계 항목 확인 및 보안약점 조치 확인)

기준 및 절차

  • 대상 : 정보시스템 감리대상 사업
  • 범위 : 신규개발, 유지보수
  • 보안약점 진단기준 : 정보시스템 감리 설계단계 보안설계 기준(총20개 항목), 구현단계 보안약점 제거 기준(총49개 항목)
  • 기타 : 보안약점 진단 도구, 개발 절차와 방법의 적절성, 교육계획의 적정성 등으로 평가한다.

3.SW개발보안방법론

방법론

  • Agile : 문서보다는 실제 코딩을 통한 SW개발, 상황에 따라 유연하게 우선 순위 변경
  • DevOps : 개발 + 운영 간의 상호작용을 우선
  • DevSecOps : 개발 + 운영 + 관리 까지 보안과 연계 우선
  • Secure SDLC : 소프트웨어 개발 생명 주기에 보안을 결합

4.SW개발보안 적용을 위한 주요 활동

고려사항

  • CWE : 공통 취약점 목록 고려하기
  • 가이드 : 소프트웨어 개발보안 관련 가이드 참고하기(총 9종)
  • 프로젝트 매니저 : 보안전략 고유 및 팀원 관리, 보안 리스크 확인, 단계별 비지니스 프로세스 정의
  • 요구사항 분석가 : 요구사항 식별
  • 아키텍트 : 보안 기술 이해, 시스템 리소스 정의, 보안 요구사항 적용, 리소스간 상호작용 이해
  • 설계자 : 설계보안 화인, 품질 측정, 로드맵 작성, 보안위협 대응능력
  • 개발자 : 코딩 표준정의 준수, 작업 문서화
  • 테스트 분석가 : 학습 및 사용법 숙지
  • 보안 감시자 : 프로젝트 상태 검사 및 단계별 검토

단계별 개발 보안

    1. 분석 : 법률 검토(개인정보보호, 특정 IT기술관련 규정), 중요정보 분류(개인의 의료/금융/식별/인증/위치 정보등)
    1. 설계 :
      • 1) 입력데이터 검증 및 표현 : 데이터 검증, 시스템 명령어 검증, 웹요청 및 결과 검증, 프로토콜 검증, 업다운로드 파일검증 등
      • 2) 보안기능 : 인증, 접근, 권한, 비밀번호 정책 반영
      • 3) 에러처리 : 에러로 인한 정보 유출 차단 및 핸들링
      • 4) 세션통제 : 세션간 공유금지
      • 5) 설계 계획서 종류 : 유즈케이스 다이어그램, 순차 다이어그램, 화면설계서, 이들의 연관관계를 추척한는 산출물
  • 3.구현 :
    • 보안약점 제거 기준
      • 입력데이터 검증및 표현 :SQL삽입, 코드삽입, 경로 조작 및 자원삽입, 크로스사이트 스크립트, 운영체제 명령어 삽입, 위험한 형식 파일 업로드, 신뢰되지 않는 URL 주소로 자동접속 연결, 부적절한 XML외부 개체참조, XML삽입, LDAP삽입, 크로스사이트 요청 위조, 서버사이드 요청 위조, HTTP 응답분할, 정수형 오버플로우, 보안기능 결정에 사용되는 부적절한 입력값, 메모리 버퍼 오버플로우, 포맷 스트링 삽입
      • 보안기능 : 적절한 인증없는 중요 기능 허용, 부적절한 인가, 중요한 자원에 대한 잘못된 권한 설정, 취약한 암호화 알고리즘 사용, 암호화되지 않은 중요정보, 하드코딩 된 중요정보, 충분하지 않은 키 길이 사용, 적절하지 않은 난수 값 사용, 취약한 비밀번호 허용, 부적절한 전자서명 확인, 부적절한 인증서 유효성 검증, 사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출, 주석문 안에 포함된 시스템 주요정보, 솔트없이 일방향 해쉬 함수 사용, 무결정 검사없는 코드 다운로드, 반복된 인증시도 제한 기능 부재
      • 시간 및 상태 : 검사시점과 사용시점이 달라서 생기는 보안약점, 종료되지 않는 반복문 또는 재귀함수
      • 에러처리 : 오류메세지를 통한 정보노출, 오류상황 대응 부재, 부적절한 예외처리
      • 코드오류 : Null Pointer역참조, 부적절한 자원 해제 , 해제된 자원사용, 초기화되지 않은 변수 사용, 신뢰할 수 없는 데이터의 역직렬화
      • 캡슐화 : 잘못된 세션에 의한 데이터 정보 노출, 제거되지 않고 남은 디버그 코드, Public메소드부터 반환된 Private배열, Private배열에 Public 데이터 할당
      • API오용 : DNS lookup에 의존한 보안결정, 취약한 API 사용
    • SBOM 라이브러리 사용하여 개발 단계별 정보 확인
    • 피어 리뷰를 통해 동료들과 상호 교차 하여 검토
    • 구현 단계 진단 절차
    • 1) SW보안 약점 진단 및 보고서 작성
    • 2) 보안 약점 제거
    • 3) SW보안 약점 진단 및 이행 결과서 작성
    • 4) 이행 결과 보고
    1. 테스트
  • 보안테스트
  • 보안 설계 기준에 따른 보안 테스트
  • 동적분석도구 활용
  • 모의 침투 테스트

  • 유지보수
    • 보안 사고 관리 및 대응
    • 패치 관리
    • 보안 교육

SW진단 도구

  • 공개소프트웨어 : Spotbugs, FindSecurityBugs, PMD, Jenkins