Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바의 정석 기초편 ch14
- 자바의 정석 기초편 ch2
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch13
- 게시글 목록 api
- 스프링 고급 - 스프링 aop
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch7
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch9
- 코드로 시작하는 자바 첫걸음
- 스프링 mvc1 - 스프링 mvc
- 스프링 db1 - 스프링과 문제 해결
- 스프링 mvc2 - 로그인 처리
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch1
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch8
- 자바 기본편 - 다형성
- 스프링 mvc2 - 타임리프
- jpa - 객체지향 쿼리 언어
- @Aspect
- 2024 정보처리기사 수제비 실기
- 스프링 입문(무료)
Archives
- Today
- Total
나구리의 개발공부기록
3장 - 소프트웨어 개발 보안 구축 | 섹션20. Secure SDLC, 섹션21. 세션통제, 섹션22. 입력 데이터 검증 및 표현, 섹션23. 보안기능 본문
2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비)/필기 5강 - 정보시스템 구축 관리
3장 - 소프트웨어 개발 보안 구축 | 섹션20. Secure SDLC, 섹션21. 세션통제, 섹션22. 입력 데이터 검증 및 표현, 섹션23. 보안기능
소소한나구리 2024. 5. 8. 20:172024년도 시나공 필기 책 내용 정리
섹션20. Secure SDLC
1. Secure SDLC의 개요
- 보안상 안전한 소프트웨어를 개발하기 위해 SDLC(소프트웨어 개발 생명주기)에 보안 강화를 위한 프로세스를 포함한 것을 의미
- 소프트웨어의 유지 보수 단계에서 보안 이슈를 해결하기 위해 소모되는 많은 비용을 최소화하기 위해 등장함
- 요구사항 분석, 설계, 구현, 테스트, 유지 보수 등 SDLC 전체 단계에 걸쳐 수행되어야 할 보안 활동을 제시
- 대표적인 방법론
CLASP | Secure Software 사에서 개발하였으며, SDLC의 초기 단계에서 보안을 강화하기 위해 개발된 방법론 활동 중심, 역할 기반의 프로세스로 구성되어 있으며 현재 운용 중인 시스템에 적용하기에 적합함 |
SDL | 마이크로소프트 사에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론 전통적인 나선형 모델을 기반으로 함 |
Seven Touchpoints |
소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론 설계 및 개발 과정의 모든 산출물에 대해 위험 분석 및 테스트를 수행 SDLC의 각 단계에 관련된 7개의 보안 강화 활동을 수행 |
2. 요구사항 분석 단계에서의 보안 활동
- 전산화 되는 정보가 가지고 있는 보안 수준을 보안 요소별로 등급을 구분하여 분류
- 조직의 정보보호 관련 보안 정책을 참고하여 소프트웨어 개발에 적용할 수 있는 보안 정책 항목들의 출처, 요구 수준, 세부 내용 등을 문서화 함
보안 요소
- 보안 3대 요소는 기밀성, 무결성, 가용성이 있으며 그외에도 인증, 부인방지 등이 있음
기밀성 | 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용됨 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음 |
무결성 | 시스템 내의 정보는 인가된 사용자만 수정할 수 있음 |
가용성 | 인가받은 사용자는 언제라도 사용할 수 있음 |
인증 | 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위 대표적 방법으로는 패스워드, 인증용 카드, 지문 검사 등이 있음 |
부인 방지 | 데이터를 송/수진한 자가 송/수신 사실을 부인할 수 없도록 송/수신 증거를 제공 |
3. 설계 단계에서의 보안 활동
- 식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고 보안 설계서를 작성
- 소프트웨어에서 발생할 수 있는 위협을 식별하여 보안대책, 소요예산, 사고 발생 시 영향 범위와 대응책 등을 수립
- 네트워크, 서버, 물리적 보안, 개발 프로그램 등 환경에 대한 보안통제 기준을 수립하여 설계에 반영
- 네트워크 : 외부의 사이버 공격으로부터 개발 환경을 보호하기 위해 네트워크를 분리하거나 방화벽을 설치
- 서버 : 보안이 뛰어난 운영체제를 사용하고 보안 업데이트, 외부접속에 대한 접근통제 등을 실시
- 물리적 보안 : 출입통제, 개발 공간 제한, 폐쇄회로 등의 감시설비를 설치
- 개발 프로그램 : 허가되지 않은 프로그램을 통제하고 지속적인 데이터 무결성 검사를 실시
4. 구현 단계에서의 보안활동
- 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하며 설계서에 따라 보안 요구사항들을 구현
- 개발 과정 중에는 지속적인 단위 테스트를 통해 소프트웨어에 발생할 수 있는 보안 취약점을 최소화
- 코드 점검 및 소스 코드 진단 작업을 통해 소스 코드의 안정성을 확보해야 함
시큐어 코딩(Secure Coding)
- 소프트웨어 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화하기 위해 보안 요소들을 고려하여 코딩하는 것을 의미함
- 보안 취약점을 사전에 대응하여 안정성과 신뢰성을 확보하기 위해 사용됨
- 보안 정책을 바탕으로 시큐어 코딩가이드를 작성하고, 개발 참여자에게는 시큐어 코딩 교육을 실시해야 함
5. 테스트 단계에서의 보안 활동
- 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작하는지 점검
- 동적 분석 도구 또는 모의 침투테스트를 통해 설계 단계에서 식별된 위협들의 해결 여부를 검증
- 셜계 단계에서 식별된 위협들 외에도 구현 단계에서 추가로 제시된 위협들과 취약점들을 점검할 수 있도록 테스트 계획을 수립하고 시행
- 테스트 단계에서 수행한 모든 결과는 문서화하여 보존하고 개발자에게 피드백 되어야 함
6. 유지보수 단계에서의 보안 활동
- 이전 과정을 모두 수행하였음에도 발생할 수 있는 보안 사고들을 식별하고 사고 발생시 이를 해결하고 보안 패치를 실시
섹션21. 세션통제
1. 세션 통제의 개요
- 세션은 서버와 클라이언트의 연결을 의미하고, 세션 통제는 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것을 의미
- 소프트웨어 개발 과정 중 요구사항 분석 및 설계 단계에서 진단해야 하는 보안 점검 내용임
2. 불충분한 세션 관리
- 일정한 규칙이 존재하는 세션ID(서버가 클라이언트들을 구분하기 위해 부여하는 키)가 발급되거나 타임아웃이 너무 길게 설정되어 있는 경우 발생할 수 있는 보안 약점
- 세션 관리가 충분하지 않으면 침입자는 세션 하이재킹과 같은 공격을 통해 획득한 세션ID로 인가되지 않은 시스템의 기능을 이용하거나 중요한 정보에 접근할 수 있음
세션 하이재킹(Session Hijacking)
- 서버에 접속하고 있는 클라이언트들의 세션 정보를 가로채는 공격 기법으로, 세션 가로채기라고도 함
- 정상적인 연결을 RST패킷을 통해 종료시킨 후 재연결 시 희생자가 아닌 공격자에게 연결하는 방식
- 공격자는 서버와 상호 간의 동기화된 시퀀스 번호를 이용하여 인가되지 않은 시스템의 기능을 이용하거나 중요한 정보에 접근할 수 있게 됨
- 탐지 방법에는 비동기화 상태 탐지, ACK STORM 탐지, 패킷의 유실 탐지, 예상치 못한 접속의 리셋 탐지가 있음
3. 잘못된 세션에 의한 정보 노출
- 다중 스레드환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
- 싱글톤 패턴에서 발생하는 *레이스컨디션(두 개 이상의 프로세스가 공용 자원을 획득하기 위해 경쟁하고 있는 상태)*으로 인해 동기화 오류가 발생하거나 멤버 변수의 정보가 노출될 수 있음
- 멤버 변수보다 지역변수를 활용하여 변수의 범위를 제한함으로써 방지할 수 있음
4. 세션 설계시 고려 사항
- 시스템의 모든 페이지에서 로그아웃이 가능하도록 UI를 구성
- 로그아웃 요청 시 할당된 세션이 완전히 제거되도록 함
- 세션 타임아웃은 중요도가 높으면 2 ~ 5분, 낮으면 15 ~ 30분으로 설정
- 이전 세션이 종료되지 않으면 새 세션이 생성되지 못하도록 설계
- 중복 로그인을 허용하지 않은 경우 클라이언트의 중복 접근에 대한 세션 관리 정책을 수립
- 패스워드 변경 시 활성화된 세션을 삭제하고 재할당
5. 세션 ID의 관리 방법
- 안전한 서버에서 최소 128 비트의 길이로 생성
- 예측이 불가능하도록 안전한 난수 알고리즘을 적용
- 노출되지 않도록 URL Rewrite(쿠키를 사용할 수 없는 환경에서 세션ID 전달을 위해 URL에 세션ID를 포함시키는 기능) 기능을 사용하지 않는 방향으로 설계
- 로그인 시 로그인 전의 세션ID를 삭제하고 재할당
- 장기간 접속하고 있는 세션ID는 주기적으로 재할당되도록 설계
섹션22. 입력 데이터 검증 및 표현
1. 입력 데이터 검증 및 표현의 개요
- 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들
- 입력 데이터로 인해 발생하는 문제를 예방하기 위해서는 소프트웨어 개발의 구현단계에서 유효성 검증 체계를 갖추고 검증되지 않은 데이터가 입력되는 경우 이를 처리할 수 있도록 구현
- 입력 데이터를 처리하는 객체에 지정된 자료형이 올바른지 확인하고 일관된 언어셋을 사용하도록 코딩
2. 입력 데이터 검증 및 표현의 보안 약점
SQL 삽입 (SQL Injection) |
웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회하는 보안 약점 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정하여 방지할 수 있음 |
경로 조작 및 자원삽입 | 데이터 입/출력 경로를 조작하여 서버 자원을 수정/삭제 할 수 있는 보안 약점 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용하여 방지할 수 있음 |
크로스사이트 스크립팅 (XSS; Cross Site Scripting) |
웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나 비정상적인 기능 수행을 유발하는 보안 약점 HTML 태그의 사용을 제한하거나 스크립트에 삽입되지 않도록 '< > &' 등의 문자를 다른 문자로 치환함으로써 방지할 수 있음 |
운영체제 명령어 삽입 | 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로써 방지할 수 있음 |
위험한 형식 파일 업로드 | 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템에 손상을 주거나 시스템을 제어할 수 있는 보안약점 업로드 되는 파일의 확장자 제한, 파일명의 암호화, 웹사이트와 파일 서버의 경로 분리, 실행 속성을 제거하는 등의 방법으로 방지할 수 있음 |
신뢰되지 않는 URL 주소로 자동접속 연결 |
입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안 약점 연결되는 외부 사이트의 주소를 화이트 리스트로 관리함으로써 방지할 수 있음 |
메모리 버퍼 오버플로 | 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점 프로그램의 오동작을 유발시키거나 악의적인 코드를 실행시켜 공격자가 프로그램을 통제할 수 있는 권한을 획득하게 함 메모리 버퍼를 사용할 경우 적절한 버퍼의 크기를 설정하고 설정된 범위의 메모리 내에서 올바르게 읽거나 쓸 수 있도록 함으로써 방지할 수 있음 |
섹션23. 보안기능
1. 보안 기능의 개요
- 소프트웨어 개발의 구현 단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 점검 항목들
- 각 보안 기능들은 서비스 환경이나 취급 데이터에 맞게 처리될 수 있도록 구현해야 함
- 소프트웨어의 기능 또는 데이터에 접근하려는 사용자별로 중요도를 구분하고 차별화된 인증 방안을 적용
- 인증된 사용자가 이용할 기능과 데이터에 대해 개별적으로 접근 권한을 부여하여 인가되지 않은 기능과 데이터로의 접근을 차단
- 개인정보다 인증정보와 같은 중요한 정보의 변조, 삭제, 오남용 등을 방지하기 위해 안전한 암호화 기술을 적용
2. 보안 기능의 보안 약점
적절한 인증 없이 중요한 기능 허용 |
보안검사를 우회하여 인증과정 없이 중요한 정보 또는 기능에 접근 및 변경이 가능 중요정보나 기능을 수행하는 페이지에서는 재인증 기능을 수행하도록 하여 방지 |
부적절한 인가 | 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한을 탈취할 수 있음 모든 실행경로에 대해 접근제어 검사를 수행하고 사용자에게는 반드시 필요한 접근 권한만을 부여하여 방지 |
중요한 자원에 대한 잘못된 권한 설정 |
권한 설정이 잘못된 자원에 접근하여 해당 자원을 임의로 사용할 수 있음 소프트웨어 관리자만 자원들을 읽고 쓸 수 있도록 설정하고 인가되지 않은 사용자의 중요 자원에 대한 접근 여부를 검사함으로써 방지 |
취약한 암호화 알고리즘 사용 |
암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보를 탈취 안전한 암호화 알고리즘을 이용하고 업무관련 내용이나 개인정보 등에 대해서는 IT 보안인증사무국이 안정성을 확인한 암호모듈을 이용함으로써 방지 |
중요정보 평문 저장 및 전송 |
암호화되지 않은 평문 데이터를 탈취하여 중요한 정보를 획득 중요한 정보를 저장하거나 전송할 때는 반드시 암호화 과정을 거치도록 하고, HTTPS 또는 SSL과 같은 보안 채널을 이용함으로써 방지할 수 있음 |
하드코드된 비밀번호 |
소스코드 유출 시 내부에 하드코드된 패스워드를 이용하여 관리자 권한을 탈취 패스워드는 암호화하여 별도의 파일에 저장하고, 디폴트 패스워드나 디폴트 키의 사용을 피함으로써 방지할 수 있음 |
'2024정보처리기사 준비 정리(필기 - 시나공, 실기 - 수제비) > 필기 5강 - 정보시스템 구축 관리' 카테고리의 다른 글
3장 - 소프트웨어 개발 보안 구축 핵심 요약 (0) | 2024.05.08 |
---|---|
3장 - 소프트웨어 개발 보안 구축 | 섹션24. 에러처리, 섹션25. 코드 오류, 섹션26. 캡슐화, 섹션27. 암호 알고리즘 (0) | 2024.05.08 |
2장 - IT프로젝트 정보시스템 구축 관리 핵심 요약 (0) | 2024.05.08 |
2장 - IT프로젝트 정보시스템 구축 관리 | 섹션16. Secure OS, 섹션17. DB 관련 신기술, 섹션18. 회복/병행제어, 섹션19. 교착상태 (0) | 2024.05.08 |
2장 - IT프로젝트 정보시스템 구축 관리 | 섹션12. 경로 제어 / 트래픽 제어, 섹션13. SW 관련 신기술, 섹션14. 보안 관련 신기술, 섹션15. HW 관련 신기술 (0) | 2024.05.08 |