2020년/정처기
[2020 정보처리기사 실기] Section 09.소프트웨어 개발 보안 구축 #2
위지원
2020. 5. 5. 21:25
이전글
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