✅ 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) 공격
◾️ 네트워크 침해 공격 관련 용어
◾️ 정보 보안 침해
✅ 보안 솔루션