정보처리기사

8. 소프트웨어 개발보안 구축

Happy Joon 2022. 10. 14. 19:49

소프트웨어 보안 취약점

해킹 등 실제 침해사고에 이용될 수 있는 외부에 노출된 보안약점

CVE(Common Vulnerability Exposure)

  • CVE는 공개적으로 알려진 컴퓨터 보안 결함 목록. CVE를 지칭할 때는 일반적으로 보안 결함에 할당된 CVE ID번호를 뜻한다.
  • CVE는 IT 전문가들이 이러한 취약점에 우선 순위를 지정하고 해결하기 위해 협력하여 소프트웨어를 보다 안전하게 관리하도록 지원한다.
  • 표기법

<aside> 💡 CVE-2014-0000 (CVE접두사-해당년도-취약점번호)

</aside>

소프트웨어 보안 약점

보안 취약점의 근본원인이 되는 소프트웨어의 결함이나 버그

소프트웨어 개발보안

  • 소프트웨어 개발 생명주기의 각 단계별로 수행하는 일련의 보안활동을 통하여 안전한 소프트웨어를 만들기 위한 개발 체계
  • 해킹의 원인이 될 수 있는 보안약점을 제거하는 것이 목표

공통평가기준(Common Criteria, CC)

ISO 15408 표준으로 채택된 정보 보호 제품 평가 기준과 정보화의 순기능 역할을 보장하기 위해 정보보호 기술 기준으로 정보화 제품의 정보 보호 기능과 이에 대한 사용 환경 등급을 정한 표준 및 인증체계

정보통신망법

정보통신망의 이용을 촉진하고 정보통신서비스를 이용하는 자의 개인정보를 보호함과 아울러 정보통신망을 건전하고 안전하게 이용할 수 있는 환경을 조성하기 위한 법률.

개인정보의 안전성 확보조치 기준

개인정보처리자가 개인정보를 처리함에 있어서 개인정보가 분실, 도난, 유출, 위조, 변조 또는 훼손되지 아니하도록 안전성 확보에 필요한 기술적, 관리적 및 물리적 안전조치에 관한 최소한의 기준을 정하는 것을 목적으로 한다.

ISMS-P

ISMS-P 인증제도는 정보보호 및 개인정보보호를 위한 일련의 조치와 활동이 인증기준에 적합함을 인터넷 진흥원 또는 인증기관이 증명하는 제도.

접근통제

보안 정책에 따라 접근정책에 대한 접근 주체의 접근권한 확인 및 이를 기반으로 한 접근 제어를 통해 자원에 대한 비 인가된 사용을 방지하는 기능.

개인정보 관련 보호조치 기준

  • 모든 유형의 개인정보는 정보통신망을 통해 전송할 경우 반드시 암호화 전송을 해야 한다.
  • 암호화 저장이 필요한 개인정보 가운데 비밀번호는 SHA-256 방식 이상의 보안강도를 가지는 일방향 해시함수를 이용하여 암호화해야 한다.
  • 암호화 저장이 필요한 개인정보 가운데 비밀번호를 제외한 나머지 개인정보의 저장 암호화 방식은 AES, SEED, ARIA 등 보안성이 보증된 양방향 암호화 알고리즘과 128 bit 이상의 암호화키를 사용해야 하며, 블록 암호화의 보안성을 강화하기 위해 CBC 모드의 사용을 권고하고 있다.

암호화 알고리즘

평문을 암호문으로 만드는 과정을 의미한다.

구분 대칭키 알고리즘 비대칭키 알고리즘

키의 상호관계 암호화키 = 복호화키 암호화키 ≠ 복호화키
암호화 키 비밀키 공개키
복호화 키 비밀키 개인키
비밀키 전송여부 필요 불필요
키 관리 복잡 단순
안전한 인증 곤란 용이
암호화 속도 고속 저속
경제성 높음 낮음
구현 방식 블록, 스트림 암호화 소인수분해, 이산대수, 근저벡터
적용 알고리즘 DES, 3DES, SEED, AES, ARIA RSA, ECC
장점 구현용이, 변형가 암호해독이 어려움, 전자서명
단점 쉽게 해독, 키 관리의 어려움 해독시간이 많이걸림

공개키 암호화 기법

공개키 암호화 기법은 공개키로 암호화한 평문을 개인키로 복호화 하는 비대칭키 구조이다.

해시함수 유형

  • SHA-1 - 160비트 암호화 해시함수
  • MD5 - 128비트 기반 암호화 해시함수
  • HAVAL - MD5를 변형하여 만든 해시함수
  • Tiger - 64 비트 CPU에 최적화, 32 비트 CPU에서도 빠르게 동작.

사용자 인증기법 유형

  • 지식기반 인증 - 아이디, 비밀번호, PIN 등 사용자가 지정한 암호 또는 핀 번호
  • 소유기반 인증 - OTP토큰, 스마트카드, 보안카드, 휴대폰
  • 생채기반 인증 - 지문, 홍채, 정맥, 손 모양
  • 행위기반 인증 - 서명, 음성인식, 걸음걸이 등 행동상의 특징

소프트웨어 개발보안 가이드

‘행정기관 및 공공기관 정보시스템 구축, 운영 지침’ 에 따라 정보화 사업 수행 시 안전한 SW 개발을 위한 시큐어코딩 기법 제시한 보안 가이드.

소프트웨어 개발 보안 생명주기(Secure SDLC)

  1. 요구사항 분석단계
    1. 요구사항 중 보안 항목 식별
    2. 요구사항 명세서
  2. 설계
    1. 위협원 도출을 위한 위협 모델링
    2. 보안설계 검토 및 보안 설계서 작성
    3. 보안통제수립
  3. 구현
    1. 표준코딩정의서 및 SW 개발보안 가이드를 준수해 개발
    2. 소스코드 보안약점 진단 및 개선
  4. 테스트
    1. 모의침투 테스트
    2. 동적 분석을 통한 보안취약점 진단 및 개선
  5. 유지보수
    1. 지속적인 개선
    2. 보안패치

Seven Touchpoints

실무적으로 검증된 개발 보안 방법론 중 하나로써 SW 보안의 모법 사례를 SDLC(Software Development Life Cycle)에 통합한 방법론.

MS-SDL과 동일하게 7개의 보안강화 활동을 정의하고 있다.

소프트웨어 개발 보안 생명주기 방법론 유형

  • MS-SDL(Microsoft - Secure Development Lifecycle)
  • Seven Touchpoints
  • CLASP(Comprehensive, Lightweight Application Security Process)

입력 데이터 검증 및 표현 취약점

  • SQL-Injection - 데이터베이스로 전달되는 SQL Query를 변경시키기 위해 Web Application에서 입력 받은 파라미터를 변조 후 삽입하여 비정상적인 데이터베이스 접근을 시도하거나 쿼리를 재구성하여 원하는 정보를 열람하는 해킹 기법
  • XSS(Cross-Site Scripting) - 타 사용자의 정보를 추출하기 위해 사용되는 공격기법으로 게시판에 악성 스크립트를 작성하여 다른 사람이 그 글을 보았을 때 그 글을 본 사람의 쿠키정보를 빼내가는 해킹기법
  • CSRF(Cross-Site Request Forgery) - 공격자가 사용자의 Cookie 값이나 Session 정보를 의도한 사이트로 보내거나 특정한 동작을 유발하는 스크립트를 글에 삽입하여 사용자가 게시물 등을 클릭할 경우 공격자가 원하는 동작이 실행되는 해킹 기법
  • Land Attack - 패킷을 전송할 때 출발지 IP 주소와 목적지 IP 주소를 똑같이 만들어서 공격 대상에게 보내는 공격

PreparedStatement

prepared statement는 미리 형식이 지정된 쿼리이다.

만약 사용자 Input에 SQL 공격

쿼리를 입력하더라도 문법적인 의미를 가지지 못한다.

위험한 형식 파일업로드 보안약점 제거를 위한 보안대책

  • 허용된 확장자만 업로드를 허용한다.
  • 업로드된 파일을 저장할 때에는 파일명과 확장자를 추측 불가능한 임의의 문자열로 변경해야 한다.
  • 파일 저장경로를 외부에서 직접 접근이 불가능하도록 Web Document Root 외부에 저장해야한다.

메모리 버퍼 오버플로우

할당된 메모리의 범위를 넘어선 위치에 자료를 읽거나 쓰려고 할 때 프로그램의 오동작을 유발시키거나, 악의적인 코드를 실행시킴으로써 공격자 프로그램을 통제할 수 있는 권한을 획득하는 공격방법

널 포인터 역참조

‘일반적으로 그 객체가 널(Null)이 될 수 없다.’ 라고 하는 가정을 위반했을 때 발생한다. 공격자가 의도적으로 이를 발생시키는 경우, 그 결과 발생하는 예외 상황을 이용하여 추후의 공격을 계획하는 데 사용될 수 있다. 이를 방지하기 위해 널이 될 수 있는 레퍼런스는 참조하기 전에 널 값인지 검사하여 안전한 경우에만 사용해야한다.

소프트웨어 보안테스트

  • 화이트박스 보안테스트 - 소프트웨어의 설계 및 구현 방법에 대한 지식을 기반으로 데이터 및 제어흐름, 인터페이스, 환경설정, 에러 처리 등을 소프트웨어를 실행하지 않은 상태에서 수행하는 정적분석방법으로, 소프트웨어 보안약점진단이라고도 부른다.
  • 블랙박스 보안테스트 - 소프트웨어에 대한 사전 지식이 전혀 없고 내부 구조를 고려하지 않은 상태에서 입력에 따른 행위를 분석하기 위해 소프트웨어를 실행하여 테스트하는 동적분석방법으로 모의해킹 혹은 침투테스트라고도 부른다.
반응형