• [2020 정보처리기사 실기] Section 09.소프트웨어 개발 보안 구축 #2

    2020. 5. 5. 21:25

    by. 위지원

    이전글

    2020/05/05 - [2020년도 상반기/정처기] - [2020 정보처기기사 실기] Section 09. 소프트웨어 개발 보안 구축 #1

    세션 통제

    세션은 클라이언트와 서버의 연결

    불충분한 세션관리 - 규칙이 존재하는 세션ID 발급
    - 너무 긴 타임아웃 설정
    세션 하이재킹과 같은 공격을 통해 획득한 세션ID로 인가되지 않은 시스템의 기능을 이용하거나 중요 정보 접근
    잘못된 세션에 의한 정보 노출 멀티스레드 환경에서 멤버 변수에 정보를 저장할 때 발생  - 싱글톤 패턴에서 발생하는 레이스 컨디션으로 인해 동기화 오류 발생 및 멤버 변수의 정보 노출
    - 지역변수를 활용해서 방지 가능

     

     

    세션 설계시 고려 사항

    • 시스템의 모든 페이지에서 로그아웃 될 수 있도록 UI 설계
    • 로그아웃시 할당된 세션이 완전히 제거되도록
    • 세션 타임아웃은 중요도가 높으면 2-5분 낮으면 15-30분
    • 이전 세션이 종료되지 않으면 새 세션이 시작되지 않도록
    • 중복접근에 대한 세션관리 정책을 수립(중복 로그인 비허용시)
    • 패스워드 변경 시 활성화 된 세션을 삭제하고 재할당

     

    세션ID의 관리 방법

    • 세션ID는 안전한 서버에서 최소 128비트 길이
    • 세션ID의 예측이 불가능하도록 안전한 난수 알고리즘 사용
    • 세션ID가 노출되지 않도록 URL Rewrite기능을 사용하지 않음
    • 로그인시 로그인 전의 세션ID를 삭제하고 재할당
    • 장기간 접속하고 있는 세션ID는 주기적으로 재할당

     

    입력데이터 검증 및 표현

    구현단계에서 검증해야 하는 보안 점검 항목

    • 미검증된 데이터 입력시 처리방안 구현
    • 객체에 지정된 자료형이 올바른가?
    • 일관된 언어셋 사용

     

    입력데이터 검증 및 표현의 보안 약점

    보안 약점의 종류 내용 방지하는 방법
    SQL 삽입 입력란에 SQL을 삽입해 무단으로 DB를 조회 및 조작 동적 쿼리에 사용되는 입력데이터에 예약어 및 특수문자가 입력되지 않도록 필터링
    경로 조작 및 자원 삽입 데이터 입출력 경로를 조작해 서버 자원을 수정/삭제 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용
    크로스사이트 스크립팅(XSS) 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나 비정상적인 기능 수행을 유발 HTML 태그의 사용을 제안하거나 스크립트에 삽입되지 않도록 <,>등 의 문자를 다른 문자로 치환
    운영체제 명령어 삽입 외부 입력값을 통해 시스템 명령어의 실행을 유도해 권한을 탈취하거나 시스템 장애를 유발 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부명령어로 사용하지 않음
    위험한 형식 파일 업로드 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나 시스템을 제어 업로드 되는 파일의 확장자 제한, 파일명의 암호화등
    신뢰되지 않는 URL주소로 자동접속 연결 입력 값으로 사이트 주소를 받는 경우 이를 조작해 방문자를 피싱사이트로 유도 연결되는 외부 사이트의 주소를 화이트 리스트로 관리

     

     

    보안기능

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

    보안 약점의 종류 내용 방지하는 방법
    적절한 인증 없이 중요기능 허용 보안검사를 우회하여 중요 정보/기능에 접근/변경 재인증 기능을 수행
    부적절한 인가 접근제어 기능이 없는 실행경로를 정보/권한 탈취 모든 실행경로에 대해 접근제어 검사 수행, 반드시 필요한 접근 권한만 부여
    중요한 자원에 대한 잘못된 권한 설정 권한 설정이 잘못된 자원에 접근해 해당 자원 임의 사용 관리자만 자원을 r/w할 수 있도록 설정하고, 중요 자원에 대한 접근 여부를 검사
    취약한 암호화 알고리즘 사용 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보 탈취 안전한 암호화 알고리즘 사용, IT보안인증사무국이 안전성을 확인ㅇ한 암호 모듈 이용
    중요정보 평문 저장 및 전송 암호화되지 않은 평문 데이터를 탈취하여 중요 정보 획득 전송시 반드시 암호화, HTTPS 또는 SSL같은 보안채널 이용
    하드코드 된 비밀번호

    소스코드 유출 시 내부에 하드코드된 패스워드를 이용하여 관리자 권한 탈취 패스워드는 암호화하여 별도 파일저장, 디폴트 패스워드나 디폴트키의 사용을 피함

     

    다음글

    2020/05/05 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기]Section 09.소프트웨어 개발 보안 구축 #3