본문 바로가기
Programming/정보처리기사

[정보처리기사 실기] 소프트웨어 개발 보안 구축

by AI_Wooah 2022. 5. 3.

소프트웨어 개발 보안 구축

  1. 소프트웨어 개발 보안
    1. 소프트웨어 개발 보안의 3대 요소
      • 기밀성 : 인가되지 않은 개인 혹은 시스템 접근에 따른 정보 공개 및 노출을 차단, 정보가 노출되더라도 데이터를 읽을 수 없게 한다.
      • 무결성 : 정당한 방법을 따르지 않고서는 데이터가 변경될 수 없으며, 데이터의 정확성 및 완전성과 고의/악의로 변경되거나 훼손되지 않는다는 것을 보장
      • 가용성 : 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 원하는 때에 방해받지 않고 사용할 수 있도록 보장
    2. 소프트웨어 보안 취약점이 발생하는 경우
      • 보안 요구사항이 정의되지 않은 경우
      • 소프트웨어 설계 시 논리적 오류가 포함된 경우
      • 기술 취약점을 갖고 있는 코딩 규칙을 적용한 경우
      • 소프트웨어의 배치가 적절하지 않은 경우
      • 보안 취약점 발견시 적절하게 대응하지 못한 경우
    3. 안전한 소프트웨어 개발을 위한 수행 작업
      • 소프트웨어 개발 프로젝트에 참여하는 관련자들의 역할과 책임을 명확히 정의하고, 충분한 보안 교육을 실시한다.
      • 소프트웨어 개발 생명 주기의 각 단계마다 보안 활동을 수행한다.
      • 소프트웨어 개발 보안을 위한 표준을 확립한다.
      • 재사용이 가능한 보안 모듈을 만들어 유사한 소프트웨어 개발에 사용될 수 있도록 한다.
      • 새로운 소프트웨어 개발 프로젝트에 사용될 수 있도록 보안 통제의 효과성 검증을 실시한다.
  2. Secure SDLC
    1. 설계 단계 보안 활동
      • 네트워크 : 외부의 사이버 공격으로부터 개발 환경을 보호하기 위해 네트워크를 분리하거나 방화벽을 설치한다.
      • 서버 : 보안이 뛰어난 운영체제를 사용하고 보안 업데이트, 외부 접속에 대한 접근 통제 등을 실시한다.
      • 물리적 보안 : 출입통제, 개발 공간 제한, 폐쇄회로 등의 감시설비를 설치한다.
      • 개발 프로그램 : 허가되지 않은 프로그램을 통제하고 지속적인 데이터 무결성 검사를 실시한다.
    2. 식별된 보안 요구사항들을 소프트웨어 설계서에 반영하고, 보안 설계서를 작성한다.
    3. 구현 단계 보안 활동
      • 개발 과정 중에는 지속적인 단위 테스트를 통해 소프트웨어에 발생할 수 있는 보안 취약점을 최소화 해야 한다.
      • 코드 점검 및 소스코드 진단 작업을 통해 소스 코드의 안정성을 확보해야 한다.
      • 시큐어 코딩 : 보안 취약점을 사전에 대응하여 안정성과 신뢰성을 확보하기 위해 보안 요소들을 고려하며 코딩하는 것
    4. 표준 코딩 정의서 및 소프트웨어 개발 보안 가이드를 준수하며, 설계서에 따라 보안 요구사항들을 구현한다.
    5. 테스트 단계 보안 활동
      • 정적 분석 도구, 동적 분석 도구 또는 모의 침투테스트를 통해 설계 단계에서 식별된 위협들의 해결여부를 검증한다.
      • 설계 단계에서 식별된 위협들 외에도 구현 단계에서 추가로 제시된 위협들과 취약점들을 점검할 수 있도록 테스트 계획을 수립하고 시행한다.
      • 테스트 단계에서 수행한 모든 결과는 문서화하여 보존하고, 개발자에게 피드백 되어야 한다.
    6. 설계 단계에서 작성한 보안 설계서를 바탕으로 보안 사항들이 정확히 반영되고 동작되는지 점검
    7. 유지보수 단계 보안 활동
    8. 이전 과정을 모두 수행하였음에도 발생할 수 있는 보안사고들을 식별하고, 사고 발생 시 이를 해결하고 보안 패치를 실시한다.
  3. 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것을 의미
  4. 사이버 공격의 종류
    1. DoS(Denial of Service)
      • SYN 플러딩 : TCP 프로토콜의 구조적 문제를 이용한 공격, SYN 패킷만 보내는 것
      • UDP 플러딩 : 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송
      • 스머핑 : 출발지 주소를 공격 대상의 IP로 설정하여, 네트워크 전체에게 ICMP 에코 패킷을 직접 브로드캐스팅해 마비시킴
      • 죽음의 핑 : ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송
      • 랜드 어택 : 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보내, 수신자가 자기 자신에게 응답.
      • 티어 드롭 : IP 패킷의 재조합 과정에서 잘못된 정보로 인해 수신 시스템이 단편화 된 패킷의 재조합 과정에서 문제를 발생시키도록 만드는 공격
      • 봉크 : 같은 시퀀스 번호 계속 보냄
      • 보잉크 : 일정한 간격으로 시퀀스 번호에 빈 공간 생성
    2. 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 해 사용하지 못하게 하는 공격
    3. DDoS(Distributed Dos)
      • Trinoo : 많은 소스로부터 통합된 UDP 플러드 서비스 거부 공격을 유발하는데 사용
      • TFN : Trinoo와 비슷한 분산 도구, 많은 소스에서 하나 혹은 여러 개의 목표 시스템에 대해 서비스 거부 공격
      • Stacheldraht : 분산 서비스 거부 에이전트 역할
    4. 여러 대의 공격자를 분산 배치해 동시에 동작하게 함으로써 특정 사이트 공격
    5. DRDos(Distributed Reflection Dos)
    6. 공격자는 출발지 IP를 공격대상 IP로 위조하여 다수의 반사 서버로 요청 정보를 전송, 공격 대상자는 반사 서버로부터 다량의 응답을 받아서 서비스 거부되는 공격
    7. 애플리케이션 공격
      • HTTP GET Flooding : 과도한 Get 메시지를 이용해 웹 서버의 과부하를 유발시키는 공격
      • Slow HTTP Header DoS : HTTP GET 메서드를 사용해 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않음
      • Slow HTTP POST DoS : 요청 헤더의 Content-length를 비정상적으로 크게 설정하고 메시지 바디 부분을 매우 소량을 전송
      • Slow HTTP Read DoS : TCP 윈도 크기와 데이터 처리율을 감소시킨 상태에서 다수 HTTP 패킷을 지속적으로 전송
      • Hulk DoS : 공격자가 공격대상 웹사이트 URL을 지속적으로 변경하면서 다량으로 GET 요청을 발생시키는 서비스 거부 공격
      • Hash DoS : 해시 충돌 유발
    8. 네트워크 공격
      • 스니핑 : 공격 대상에게 직접 공격하지 않고 데이터만 몰래 들여다보는 수동적 공격
      • 네트워크 스캐너, 스니퍼 : 공격자가 HW, SW 구성의 취약점을 탐색하는 공격 도구
      • IP 스푸핑 : 침입자가 인증된 컴퓨팅 시스템인 것처럼 속여서 정보를 빼내기 위해 본인의 패킷 헤더를 인증된 호스트의 IP 어드레스로 위조해 타깃에 전송
      • ARP 스푸핑 : 공격자가 특정 호스트의 맥주소를 자신의 맥주소로 위조한 ARP 응답을 만들어 희생자에게 지속적 전송
      • ICMP Redirect 공격 : 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알려 패킷의 흐름을 바꾸는 공격
      • 트로이 목마 : 겉보기에는 정상적인 프로그램처럼 보이지만 실행하면 악성 코드를 실행하는 프로그램
      • 패스워드 크래킹 공격
    9. 버퍼 오버플로우 공격
    10. 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력해 공격
    11. 백도어
    12. 어떤 제품이나 컴퓨터 시스템, 암호 시스템 혹은 알고리즘에서 정상적인 인증 절차를 우회하는 방법
    13. 주요 시스템 보안 공격기법
      • 포맷 스트링 공격(Format String Attack) : 외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링을 그대로 사용하는 경우 발생하는 취약점 공격법
      • 레이스 컨디션 공격(Race Condition Attack) : 둘 이상의 프로세스나 스레드가 공유 자원을 동시에 접근 할 때 실행되는 프로세스가 임시파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어들어 임시파일을 심볼릭 링크 함
      • 키로거 공격(Key Logger Attack) : 컴퓨터 사용자의 움직임을 탐지해 저장해, 개인의 중요한 정보를 몰래 빼가는 해킹 공격
      • 루트킷(Rootkit) : 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이 목마 설치 등 주로 불법적인 해킹에 사용되는 기능을 제공하는 프로그램의 모음
    14. 보안 관련 용어
      • 스피어피싱 : 사회 공학의 한 기법, 메일을 이용한 공격 기법
      • 스미싱 : 문자를 이용한 공격 기법
      • 큐싱 : 큐알 코드를 이용한 공격 기법
      • APT 공격 : 특정 타깃을 목표로 해 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격 기법
      • 랜섬웨어(Ransomware) : 감염된 시스템의 파일들을 암호화해 인질처럼 잡고 몸값을 요구하는 악성 소프트웨어
      • 이블 트윈 공격 : 무선 WiFi 피싱 기법, 합법적인 WiFi 제공자처럼 행세해 정보를 탈취하는 무선 네트워크 기법
      • 공급망 공격(Supply Chain Attack) : 소프트웨어 개발사의 네트워크에 침투하여 소스 코드의 수정 등을 통해 악의적인 코드를 삽입해 사용자 PC에 소프트웨어를 설치 또는 업데이트 시 자동적으로 감염되도록 하는 공격
  5. 접근 통제
    1. 접근 통제 기술
    접근 통제는 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보 흐름을 제한하는 것이다.
    • 임의접근통제(DAC, Discretionary Access Control)
    • 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하여 제어하는 방식으로, 데이터의 소유자가 접근통제 권한을 지정하고 제어한다. 객체를 생성한 사용자가 생성된 객체에 대한 모든 권한을 부여받고, 부여된 권한을 다른 사용자에게 허가할 수도 있다.
    • 강제접근통계(MAC, Mandatory Access Control)관리자에 의해서 권한이 할당되고 해제된다.
    • 데이터에 대한 접근을 시스템이 결정한다.
    • 주체의 레이블과 주체가 접근하고자 하는 객체의 레이블을 이용한다.
    • 역할기반접근통계(RBAC, Role Base Access Control)권한들의 묶음으로 롤을 만들어서 사용자들에게 롤 단위로 권한을 할당하고 관리한다.
    • 비 임의적 접근통제 모델 또는 임무 기반 접근통제 모델로 불리기도 한다.
    1. 접근 통제 방법
    • Capability List
    • Access Control List
    1. 접근 통제 모델
    • 벨 라파듈라 모델 국방부 기밀성 수학적 모델
    • 비바 모델 무결성 보장
    • 클락 윌슨 모델 무결성 중심의 상업용
  6. 암호 알고리즘
    1. 대칭 키 암호화 알고리즘
      • 장점: 암호화와 복호화 속도가 빠름
      • 단점: 키 분배 문제 존재
      • 대표적인 알고리즘: DES, AES, IDEA 등
      • 종류 : 대칭키 암호, 비밀키 암호, 단일키 암호, 관용 암호
      • 대칭키 암호의 분류 : 블록 암호, 스트림 암호
    2. 암호화와 복호화에 하나의 같은 키를 사용하는 암호 방식
    3. 공개키 암호화 알고리즘
      • 공개키와 개인키는 언제나 한 쌍으로 존재한다.
        • 공개키: 누구나 공개키를 이용하여 암호화 할 수 있도록 공개함
        • 개인키: 오직 자신만 복호화 할 수 있도록 아무에게도 공개하지 않음
      • 장점: 키 관리가 쉬움, 키 분배 문제도 해결
      • 단점: 대칭키 암호에 비해 속도가 느리다.
      • 대표적인 알고리즘: RSA, ECC, ElGamal 등
    4. 암호화와 복호화에 두 개의 서로 다른 키를 사용하는 암호 방식이다.
    5. 해시 암호화 알고리즘
      • SHA-1 : NSA에서 미 정부 표준으로 지정, DSA에서 사용, 해시 값 생성
      • SHA-256/384/512
    6. IPSec
    7. IP계층에서 무결성과 인증을 보장하는 인증 헤더와 기밀성을 보장하는 암호화를 이용한 IP 보안 프로토콜
    8. SSL/TLS
    9. 전송계층과 응용계층 사이에서 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜
    10. S-HTTP
    11. 웹 상에서 네트워크 트래픽을 암호화하는 주요 방법, 클라이언트와 서버 간 전송되는 모든 메시지를 각각 암호화해 전송
반응형

댓글