본문 바로가기

개인 스터디/정리

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

 

1. SW 개발 보안 구현

  • 시큐어 코딩 가이드 : 잠재적인 보안 취약점을 사전에 제거하고, 외주 공격으로부터 안전한 소프트웨어를 개발하는 기법
    • 입력 데이터 검증 및 표현 : 입력 데이터로 인해 발생하는 문제들을 예방하기 위한 보안 점검 항목들
    • 입력 데이터 검증 및 표현 취약점
      • XSS : 검증되지 않은 외부 입력 데이터가 포함된 웹 페이지가 전송
      • XSS 공격 유형
        • Stored XSS : 악성 스크립트가 포함된 페이지를 읽으며 브라우저에서 실행되며 감염
        • Reflected XSS : 공격용 악성 URL을 이메일로 전송하고, URL 클릭 시 접속 사이트에 민감정보를 전송
        • DOM : DOM 기반 XSS 취약점이 있는 브라우저를 대상으로 조작된 URL을 이메일로 발송
      • XSS 공격 절차
        1. 임의의 XSS 취약점이 존재하는 서버에 XSS 코드를 작정하여 삽입 저장
        2. 해당 웹 서비스 사용자가 공격자가 작성해 놓은 XSS 코드에 접근
        3. 사용자가 XSS 코드가 저장된 페이지에 정보를 요청
        4. 사용자의 시스템에서 XSS 코드 실행
        5. XSS 코드가 실행된 결과가 공격자에게 전달되고 공격자는 결과를 두고 웹 서버에서 2차 해킹 시도
      • CSRF : 사용자가 자신의 의지와는 무관하게 공격자의 의도 행위를 특정 웹 사이트에 요청
      • CSRF 공격 절차 
        1. 공격자는 CSRF 스크립트가 포함된 게시물을 등록
        2. 사용자는 CSRF 스크립트가 포함된 페이지의 게시물 열람 요청
        3. 게시물을 읽은 사용자의 권한으로 공격자가 원하는 요청 발생
        4. 공격자가 원하는 CSRF 스크립트 결과가 발생
      • SQL Injection : 악의적인 SQL 구문을 삽입, 실행시켜서 DB에 접근 후 정보를 탈취하거나 조작 등의 행위 실행
        1. 응용 프로그램의 취약점 탐지
        2. 악의적인 SQL 구문 삽입하여 인증 우회
        3. 권한이 상승되어 DB의 정보 탈취 및 조작 실행
    • 보안 기능 : 인증, 접근제어, 기밀성, 암호화, 권한 관리 등을 구현하기 위한 보안 점검 항목들
    • 보안 기능 취약점
      • 적절한 인증 없이 중요 기능 허용 -> 중요정보 수행 시 재인증 기능을 통해 방지
      • 부적절한 인가 -> 모든 실행경로에 대해 접근제어 검사 수행
      • 취약한 암호화 알고리즘 사용 -> 안전한 암호화 알고리즘, 모듈 이용
      • 중요 정보 평문 저장 및 전송 -> 중요 정보는 암호화 과정을 거치고, HTTP, SSL/TLS 등의 보안 채널 이용
      • 하드 코드 된 비밀 번호 -> 패스워드는 암호화 하여 저장
      • 취약한 패스워드 요구 조건 -> 패스워드 생성 시 강한 조건 검증
    • 에러 처리 : 에러 예외 처리 시 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들
    • 에러 처리 취약점
      • 오류 메시지 통한 정보 노출 -> 에러 메시지는 사용자에게 유용한 최소한의 정보만 표현
      • 오류 상황 대응 부재 -> 오류가 발생할 수 있는 부분에 예외 처리 구문 작성
      • 적절하지 않은 예외 처리 -> 모든 함수의 결괏값을 검사 후, 구체적인 예외 처리 
    • 세션 통제 : 다른 세션 간 데이터 공유 등 세션과 관련된 취약점을 예방하기 위한 보안 점검 항목들
    • 세션 : 클라이언트와 서버의 논리적인 연결
    • 세션 통제 취약점
      • 불충분한 세션 관리 -> 클래스 설계 시 세션 정보를 읽고 쓰기가 가능한 변수를 사용하지 않도록 설계
    • 코드 오류 : 개발자의 흔한 실수로 인한 프로그램 오류를 예방하기 위한 보안 점검 항목들
      • 널 포인터 역참조 -> NULL이 될 수 있는 레퍼런스 참조 전 NULL여부 검사
      • 정수를 문자로 변환 -> 변환값의 크기가 변환 값이 저장되는 변수의 크기보다 크지 않도록 함
      • 부적절한 자원 해제 -> 자원을 사용한 후 Finally 블록에서 자원이 반환되도록 코딩
      • 초기화되지 않은 변수 사용 -> 변수 선언 시 할당된 메모리를 초기화
    • 캡슐화 : 외부 은닉이 필요한 데이터와 불충분한 캡슐화했을 때 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들
    • 캡슐화 취약점
      • 잘못된 세션에 의한 데이터 정보 노출 -> 변수 범위에 주의하고, 멤버 변수보다 지역 변수를 활용
      • 제거되지 않고 남은 디버그 코드 -> 디버거 코드는 개발 완료 후, 삭제 처리
      • 민감한 데이터를 가진 내부 클래스 사용 -> 내부 클래스 사용 시 외부 클래스의 접근 금지
      • 시스템 데이터 정보 노출 -> 시스템 메시지를 통해 노출되는 메시지는 최소한의 정보만 제공
    • API 오용 : 잘못된 API 사용이나 보안에 취약한 API로 인해 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들
    • API 오용 취약점
      • DNS Lookup에 의존한 보안 결정 -> 도메인명을 이용한 DNS Lookup을 하지 않도록 함
      • 위험하다고 알려진 함수 사용 : 안전한 함수(ex. strncpy) 사용
      • 널 매개변수 미검사 : 널 여부를 점검하는 과정을 거친 후 사용
    • DNS Lookup : DNS를 퇘 웹사이트의 도메인 이름을 IP 주소로 변환하는 과정

 

 

2. 시스템 보안 구현

  • 유닉스/리눅스 주요 로그 파일
    • wtmp/wtmpx : 사용자 로그인/로그아웃 정보, 시스템 shutdown, reboot 정보
    • utmp/utmpx : 현재 시스템에 로그인한 사용자 정보
    • btmp/btmpx : 로그인에 실패한 정보
    • lastlog : 사용자별 최근 로그인 시간 및 접근한 소스 호스트에 대한 정보
    • sulog : su(switch user) 명령어 실행 성공/실패 결과에 대한 정보
    • acct/pacct : 사용바졀로 실행되는 모든 명령에 대한 로그
    • xferlog : FTP 서비스 데이터 전송 기록 로그
    • messages : 시스템의 가장 기본적인 시스템 로그 파일로, 운영에 대한 전반적인 메시지 저장
    • secure : 보안, 사용자 인증과 관련된 로그 기록
  • 보안 솔루션
    • 네트워크 보안 솔루션
      • 방화벽(Firewall) : 기업 내부, 외부 간 트래픽을 모니터링하여 시스템의 접근을 허용하거나 차단하는 시스템
      • 웹 방화벽(WAF) : 웹 애플리케이션 보안(SQL 인젝션, XSS 등)에 특화된 보안 장비
      • 네트워크 접근 제어(NAC) : 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 솔루션
      • 침입 탐지 시스템(IDS) : 네트워크에서 발생하는 이벤트를 모니터링하고, 자원 접근과 침입을 실시간으로 탐지
      • 침입 방지 시스템(IPS) : 네트워크에 대한 공격이나 침입을 실시간적으로 차단하고, 유해 트래픽에 대해 처리
      • 무선 침입 방지 시스템(WIPS) : 인가되지 않은 무선 단말기의 접속을 탐지 및 차단
      • 통합 보안 시스템(UTM) : 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템
      • 가상사설망(VPN) : 인터넷과 같은 공중망에 전용망을 사용하는 효과를 가지는 보안 솔루션
      • SIEM : 보안 로그와 이벤트 정보를 수집한 후, 침해사고에 대응하는 보안 관제 솔루션
      • ESM : 보안 시스템에서 발생한 이벤트 및 로그를 통합해 관리, 분석, 대응하는 전사적 통합 보안 관리 시스템
    • 시스템 보안 솔루션
      • 스팸 차단 솔루션 : 메일 서버 앞단에 위치하여 프록시 메일 서버로 동작하는 솔루션
      • 보안 운영체제 : 컴퓨터 운영체제의 커널에 보안 기능을 추가한 솔루션
    • 콘텐츠 유출 방지 보안 솔루션
      • 보안 USB : 정보 유출 방지 등의 보안 기능을 갖춘 USB 메모리
      • 데이터 유출방지(DLP) : 조직 내부 자료가 외부로 빠져나가는 것을 모니터링하고 실시간 차단
      • 디지털 저작권 관리(DRM) : 디지털 저작물에 대한 보호와 관리를 위한 솔루션
  • 취약점 분석 : 자산이 가지고 있는 보안상의 결점 또는 취약점을 파악하여 위험을 낮추는 활동
  • 취약점 분석 대상
    • 환경 및 시설 : 도난, 정전/오작동, 천재지변 등
    • 하드웨어 : 고장/오작동, 데이터 유실
    • 소프트웨어 : 소프트웨어 장애, 정보유출, 데이터 소실
  • 취약점 분석 절차
    • 자산 조사 및 분석 : 어떤 자산에 대해 수행할지 선정
    • 진단 대상 선정 : 자산규모가 작으면 전수 조사, 크면 샘플링 수행
    • 제약사항 확인 : 진단을 수행하는 시간의 제약사항 및 일정 분배
    • 진단 수행 : 페크리스트 이용 취약점 진단 수행(기술적/관리적/물리적 관점)
    • 결과 분석/보고서 작성 : 점검 항목에 대해 취약점 점수 지정 및 결과 값 산출, 결과 분석 및 보고서 작성

 

 

3. SW 개발 보안 테스트와 결함 관리

  • 소프트웨어 개발 보안 테스트 : 소프트웨어 보안 요구사항이 반영되어 있음을 보증하고, 취약점을 개선하여 안전한 소프트웨어를 개발하기 위한 활동
  • 소프트웨어 개발 보안 테스트의 유형
    • 정적 분석 : SW를 실행하지 않고 보안 약점을 분석
    • 동적 분석 : SW 실행 환경에서 보안 약점 분석

 

 

4. 비즈니스 연속성 계획(BCP)

  • BCP : 위기관리를 기반으로 비즈니스 연속성을 보장하는 체계. 비즈니스 영향 평가(BIA)가 선행되어야 함.
  • BCP 관련 주요 용어
    • BIA : 장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정하고 영향도 및 손실평가를 조사하는 BCP 구축
    • RTO : 재해 시 복구 목표 시간 선정
    • RPO : 재해 시 복구 목표 지점의 선정
    • DRP : 재난으로 장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획
    • DRS : 재해복구계획의 수행을 지원하기 위해 평상시 확보하는 자원에 대한 관리체계가 통합된 재해복구센터
  • DRF 유형(RTO)
    • Mirror Site(즉시) : 주 센터와 데이터복구센터 모두 운영 상태로 실시간 동시 서비스가 가능한 재해복구 센터
    • Hot Site(4시간 이내) : 주 센터와 동일한 수준의 자원을 대기 상태로 보유하며, 미러링을 통해 데이터의 최신 상태 유지
    • Warm Site(수일~수주) : 중요성이 높은 자원만 부분적으로 보유
    • Cold Site(수주~수개월) : 데이터만 원격지에 보관하고, 데이터를 근간으로 필요 자원을 조달하여 복구

 

 

5. 보안 용어

  • 보안 공격 관련 용어
    • 부 채널 공격 : 암호화 알고리즘의 물리적 특성을 측정하여 암호 키 등 내부 비밀 정보를 부 채널에서 획득하는 공격 기법
    • 드라이브 바이 다운로드 : 해커가 악성 스크립트를 설치하고, 사용자 동의 없이 실행되어 의도된 서버로 연결하여 감염
    • 워터링홀 : 특정인이 잘 방문하는 웹 사이트에 악성 코드를 심어 유인하여 감염
    • 비즈니스 스캠 : 기업 이메일 계정 도용하여 무역 거래 대금을 가로채는 사이버 범죄
    • 하트 블리드 : OpenSSL 암호화 라이브러리의 하트비트 모듈의 취약점을 이용하여 데이터를 탈취
    • 크라임웨어 : 주요 금융정보 또는 인증정보를 탈취하거나 유출
    • 토르 네트워크 : 네트워크 경로를 알 수 없도록 암호화 기법을 사용해 데이터를 전송하고, 익명으로 인터넷 사용
    • MITM 공격 : 네트워크 통신을 조작하여 통신 내용을 도청 및 조작
    • DNS 스푸핑 공격 : 공격 대상에게 전달되는 DNS 응답을 접촉하거나 캐시를 조작
    • 포트 스캐닝 : 공격자가 침입 전 대상 호스트에 어떤 포트사 활성화되어 있는지 확인하여 취약점 분석
    • 디렉터리 리스팅 취약점 : 서버의 미흡한 설정으로 인덱싱 기능이 활성화된 경우, 강제 브라우징을 통해 디렉토리 파악
    • 리버스 쉘 공격 : 타깃 서버가 클라이언트로 접속해서 클라이언트가 타깃 서버의 쉘을 획득
    • 익스플로잇 : 공격자가 의도한 동작이나 명령을 실행하도록 하는 코드 또는 행위
    • 스턱스넷 공격 : 주요 산업 기반 시설의 제어 시스템에 침투해서 오작동을 일으키는 악성 코드 공격
    • 크리덴셜 스터핑 : 다른 사이트의 로그인 정보를 다른 사이트에 대입하여 계정 탈취
    • 스피어피싱 : 다른 곳에서 유출된 로그인 정보를 다른 사이트에 대입해 계정 탈취
    • 스미싱 : 무자메시지를 이용해 개인 비밀정보나 소액 결제 유도
    • 큐싱 : QR 코드를 통해 악성 앱을 내려받도록 유도
    • 봇넷 : 악성 프로그램에 연결되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 상태
    • APT 공격 : 특정 타깃을 목표로 하여 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격 기법
    • 공급망 공격 : 소프트웨어 개발사의 네트워크에 침투하여 소프트웨어 파일 변경 혹은 악의적인 코드 삽입
    • 제로데이 공격 : 보안 취약점이 공표되기 전 해당 취약점을 악용해 이루어지는 보안 공격 기법
    • 바이러스 : 사용자 컴퓨터 내에서 프로그램이나 실행 가능한 부분을 변형해서 감염시키는 프로그램
    • 웜 : 스스로 복제하여 네트워크 등의 연결을 통하여 전파하는 악성 소프트웨어 컴퓨터 프로그램
    • 악성 봇 : 스스로 실행되지 못하고, 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 또는 코드
    • 랜섬웨어 : 감연된 시스템의 파일을 암호화하여 몸값을 요구하는 소프트웨어
    • 이블 트윈 공격 : 무선 Wifi 피싱 기법
    • 타이포스쿼팅 : 유사한 유명 도메인을 등록
    • 사회공학 : 사람들의 심리와 행동 양식을 교묘하게 이용해서 원하는 정보를 얻는 공격 기법
  • 주요 시스템 보안 공격기법
    • 포맷 스트링 공격 : 포맷 스트링을 인자로 하는 함수를 이용해 공격
    • 레이스 컨디션 공격 : 둘 이상의 프로세스나 스레드가 공유자원에 접근할 때 비정상적인 결과가 발생하는 상황
    • 키로거 공격 : 키보드 움직임을 탐지해 개인의 중요한 정보를 해킹
    • 루트킷 : 시스템 침입 후 차후의 침입을 위한 백도어
  • 보안 공격 대응 관련 용아
    • 보안 체계 및 모델
      • CC : 정보기술의 보안 기능과 보증에 대한 평가 기준
      • ISMS : 조직의 주요 정보자산을 보호하기 위해 정보보호 관리 절차 과정을 체계적으로 수립 및 관리
      • PIMS : 기업이 보호조치 체계를 구축했는지 여부를 점검, 평가하여 기업에게 부여하는 인증제도
      • PIA : 개인정보를 활용하는 새로운 정보시스템의 도입이나 기존 시스템 변경 시 개선 방안을 도출
      • 사이버 킬체인 : 사이버 공격에 대해 7단계 프로세스별 공격 분석 및 대응을 체계화한 APT 공격 방어 분석 모델
    • 취약점 식별
      • OWASP Top 10 : 웹 애플리케이션 취약점 중 공격 빈도가 높고 위험한 10가지 취약점에 대한 대응 방안
      • CVE : MITRE 사에서 공개적으로 알려진 소프트웨어의 보안 취약점을 표준화한 식별자 목록
      • CWE : MITRE 사가 중심이 되어 소프트웨어에서 공통적으로 발생하는 약점을 체계적으로 분류한 목록
    • 기술 및 시스템
      • 핑거프린팅 : 콘텐츠 불법 배포자에 대한 위치 추적이 가능한 기술
      • 워터마킹 : 디지털 콘텐츠에 저작권자 정보를 삽입한 콘텐츠 보호 기술
      • 트러스트존 : 프로세서 안에 독립적인 보안 구역을 두어 중요한 정보를 보호하는 기술
      • 장착형 인증 모듈 : 리눅스 시스템 내에서 사용되는 인증 라이브러리
      • 허니팟 : 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템
      • 이상금융거래 탐지시스템 : 전자금융거래에 사용되는 의심 거래 탐지, 차단 시스템
      • 사이버 위협정보 분석 공유시스템 : 사이버 위협정보를 체계적으로 수립해서 자동화된 정보공유를 할 수 있는 시스템
      • TKIP : 임시 키 무결성 프로토콜

 


# 회고

 

용어 넘 많아