은팡이의 이것저것

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

자격증/정보처리기사

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

은팡이 2022. 7. 20. 22:47
728x90
반응형

오늘은 소프트웨어 개발 보안 구축 두번째 입니다!

 

오늘도 화이팅해봅시다!😉


1.소프트웨어 개발 보안 구현()

1)시큐어 코딩 가이드

: 설계 및 구현 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 보안 취약점을 사전ㅇ ㅔ제거하고, 외부 공격으로부터 안전한 소프트웨어를 개발하는 기법

: 입력데이터 검증 및 표현, 보안 기능, 시간 및 상태, 에러 처리, 코드 오류, 캡슐화, API오용

*입력데이터 검증 및 표현
: 프로그램 입력값에 대한 검증 누락·부적절한 검증, 잘못된 형식 지정

*보안 기능
: 보안 기능의 부적절한 구현

*시간 및 상태
: 거의 동시에 수행 지원하는 병렬 시스템 또는 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리

*에러 처리
: 에러 미처리, 불충분한 처리 등으로 에러메시지에 중요정보가 포함

*코드 오류
: 개발자가 범할 수 있는 코딩 오류로 인해 유발

*캡슐화
: 기능성이 불충분한 캡슐화로 인해 인가되지 않은 사용자에게 데이터 누출

*API 오용
: 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API의 사용

 

2)입력 데이터 검증 및 표현

: 입력 데이터로 인해 발생하는 문제들을 예방하기 위해 구현 단계에서 검증해야 하는 보안 점검 항목들

[입력 데이터 검증 및 표현 취약점]
*XSS
: 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우, 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격
: Stored XSS, Reflected XSS, DOM XSS

*사이트 간 요청 위조
: 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격

*SQL 삽입
: 응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 데이터베이스의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격기법

 

3)보안 기능

: 소프트웨어 개발 단계에서 인증, 접근제어, 기밀성, 암호화, 권한 관리 등을 적절하게 구현하기 위한 보안 점검 항목들

[보안 기능 취약점]
*적절한 인증 없이 중요 기능 허용
: 보안 검사를 우회하여 인증과정 없이 중요정보 또는 기능에 접근 및 변경이 가능

*부적절한 인가
: 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한 탈취

*취약한 암호화 알고리즘 사용
: 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요정보 탈취

*중요 정보 평문 저장 및 전송
: 암호화되지 않은 평문 데이터를 탈취하여 중요 정보 획득 가능

*하드 코드 된 비밀 번호
: 프로그램 코드 내부에 패스워드 포함시 관리자 정보가 노출될 수 있는 보안 취약점

 

4)에러 처리

: 프로그램 실행 시 발생하는 에러를 예외 처리하지 못하거나, 에러 정보에 중요한 정보가 포함될 때 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들

[에러 처리 취약점]
*취약한 패스워드 요구 조건
: 취약한 사용자 패스워드 조합 규칙에 따른 사용자 계정 보안 취약점

*오류 메시지 통한 정보 노출
: 프로그램이 실행환경, 사용자, 관련데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 공격자의 악성 행위를 도와주는 보안 취약점

*오류 상황 대응 부재
: 오류가 발생할 수 있는 부분을 확인 하였으나, 이러한 오류에 대하여 예외 처리를 하지 않았거나 미비로 인해 발생하는 보안 약점

*적절하지 않은 예외 처리
: 프로그램 수행 중에 함수는 결괏값에 대한 적절한 처리 또는 예외상황에 대한 조건을 적절하게 검사하지 않을 경우, 예기치 않은 문제를 일으킬 수 있는 보안 약점

 

5)세션 통제

: 다른 세션 간 데이터 공유 등 세션과 관련되어 발생할 수 있는 취약점을 예방하기 위한 보안 점검 항목들

[세션 통제 취약점]
*불충분한 세션 관리
: 인증 시 일정한 규칙이 존재하는 세션 ID를 발급
: 세션 타임아웃을 길게 설정한 경우 공격자에 의해 사용자 권한이 도용

 

6)코드 오류

: 소프트웨어 구현 단계에서 프로그램 변환 시 오류, 서버의 리소스자원의 부적절한 반환 등 개발자가 흔하게 실수하는 프로그램 오류를 예방하기 위한 보안 점검 항목들

[코드 오류 취약점]
*널 포인터 역참조
: 일반적으로 '그 객체가 NULL이 될 수 없다' 라고 하는 가정을 위반했을 때 발생

*정수를 문자로 변환
: 정수를 문자로 변환하면서 표현할 수 없는 범위의 값이 잘려나가 문자에 대한 저장 값이 올바르지 않은 보안 취약점

*부적절한 자원 해제
: 힙 메모리, 소켓 등 프로그램 자원 사용 후, 프로그램 오류로 인해 종료된 자원을 반환하지 못했을 때 발생할 수 있는 보안 취약점

*초기화되지 않은 변수 사용
: 변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생 할 수 있는 보안 취약점

 

7)캡슐화

: 외부에 은닉이 필요한 중요한 데이터와 필요한 기능성을 불충분하게 캡슐화 했을 때 인가되지 않은 사용자에게 데이터 유출, 권한 문제 등이 발생할 수 있는 보안 취약점 예방을 위한 보안 검증 항목들

[캡슐화 취약점]
*잘못된 세션에 의한 데이터 정보 노출
: 다중 스레드 환경에서 싱글톤 객체 필드에서 경쟁 조건으로 인해 동기화 오류가 발생하거나, 멤버 변수의 정보가 노출되는 보안 취약점

*제거되지 않고 남은 디버그 코드
: 디버깅 목적으로 삽입된 코드가 제거되지 않음으로 인해 공격자에게 의도하지 않은 정보와 제어 정보가 누출된 수 있는 보안 취약점

*민감한 데이터를 가진 내부 클래스 사용
: 권한이 없는 클래스를 사용하고자 할때 발생하는 취약점

*시스템 데이터 정보 노출
: 시스템·관리자 DB 정보 등 시스템의 내부 데이터를 시스템 메시지 등을 통해 외부로 출력하도록 코딩했을 때 발생하는 보안 취약점

 

8)API 오용

: 서비스에서 제공되는 이용에 반하는 방법으로 API를 이용하거나 보안에 취약한 API를 오용하여 발생할 수 있는 보안 취약점 예방을 위한보안 검증 항목들

[API 오용 취약점]
*DNS Lookup에 의존한 보안 결정
: 도메인명에 의존하여 인증이나 접근통제 등의 보안 결정을 내리는 경우 발생하는 보안 약점

*위험하다고 알려진 함수 사용
: 보안 취약점을 고려하지 않고 개발되어, 사용자체가 취약한 함수들의 보안 취약점

*널 매개변수 미검사
: 자바표준에서 특정 메서드 사용시 매개변수가 널인 경우 지정된 값을 반환하지 못해 발생하는 예기치 못한 동작에 대한 보안 취약점

2.시스템 보안 구현()

1)유닉스/리눅스 주요 로그 파일

: wtmp(x), utmp(x), btmp(x), lastlog, sulog, acct/pacct, xferlog, messages, secure

*wtmp(x) : 사용자 로그인/로그아웃 정보

*utmp(x) : 현재 시스템에 로그인한 사용자 정보

*btmp(x) : 로그인에 실패한 정보

*lastlog : 사용자별 최근 로그인 시간 및 접근한 소스 호스트에 대한 정보

*sulog : su 명령어 실행 성공/실패 결과에 대한 정보

*acct/pacct : 사용자별로 실행되는 모든 명령어에 대한 로그

*xferlog : FTP 서비스 데이터 전송 기록 로그

*messages : 부트 메시지 등 시스템의 가장 기본적인 시스템 로그 파일로, 운영에 대한 전반적인 메시지를 저장

*secure : 보안과 관련된 주요 로그를 기록, 사용자 인증과 관련된 로그를 기록

 

2)보안 솔루션

:네트워크 보안 솔루션, 시스템 보안 솔루션, 콘텐츠 유출 방지 보안 솔루션

[네트워크 보안 솔루션]
: 네트워크 보안 장비는 접근 통제, 침입차단 및 탐지, DDoS 탐지 등을 수행하는 일체형 장비들이 포함된다.

*방화벽
: 기업 내부, 외부 간 트래픽을 모니터링 하여 시스템의 접근을 허용하거나 차단하는 시스템

*웹 방화벽
: 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안장비

*네트워크 접근 제어
: 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션

*침입 탐지 시스템
: 네트워크에서 발생하는 이벤트를 모니터링하고 비인가 사용자에 의한 자원접근과 보안정책 위반 행위를 실시간을 ㅗ탐지하는 시스템

*침입 방지 시스템
: 네트워크에 대한 공격이나 침입을 실시간적으로 차단하고, 유해트레픽에 대한 조치를 능동적으로 처리하는 시스템

*무선 침입 방지 시스템
: 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단하고 보안에 취약한 무선 공유기를 탐지하는 시스템

*통합 보안 시스템
: 방화벽, 침입 탐지 시스템, 침입 방지 시스템, VPN, 안티 바이러스, 이메일 필터링 등 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템

*가상사설망
: 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔루션

[시스템 보안 솔루션]
*스팸 차단 솔루션
: 메일 서버 앞단에 위치하여 프록시 메일 서버로 동작

*보안 운영체제
: 컴퓨터 운영체제의 커널에 보안 기능을 추가한 솔루션

[콘텐츠 유출 방지 보안 솔루션]
*보안 USB
: 정보 유출 방지 등의 보안 기능을 갖춘 USB 메모리

*데이터 유출 방지
: 조직 내부의 중요 자료가 외부로 빠져나가는 것을 탐지하고 차단하는 솔루션

*디지털 저작권 관리
: MP3, E-Book과 같은 디지털 저작물에 대한 보호와 관리를 위한 솔루션

 

3)취약점 분석

: 자신이 가지고 있는 보안상의 결점 또는 취약한 속성을 파악하여 위험을 낮추는 활동

[취약점 분석대상]
*환경 및 시설
: 문, 창문 등 물리적 보호 결여, 불안정한 전원 설비, 재해를 입기 쉬운 입지조건

*하드웨어
: 온/습도의 변화, 기억매체의 유지보수 부족

*소프트웨어
: 명세서의 미준비, 부적절한 패스워드, 백업부족

[취약점 분석 절차]
1.자산 조사 및 분석
2.진단 대상 선정
3.제약사항 확인
4.진단 수행
5.결과 분석/보고서 작성

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

1)소프트웨어 개발 보안 테스트란?

: 소프트웨어 보안 요구사항이 반영되어 있음을 보증, 취약점을 발견하고 개선하여 안전한 소프트웨어를 개발하기 위한 활동

[소프트웨어 개발 보안테스트 유형]
*정적 분석
: SW를 실행하지 않고 보안 약점을 분석, SW 개발 단계에서 주로 사용

*동적 분석
: SW 실행환경에서 보안 약점 분석, SW 시험 단계에서 주로 사용

[소프트웨어 개발 보안테스트 절차]
1.준비 단계 : 대상 선정, 일정 수립
2.실행 단계 : 테스트 수행
3.개선 단계 : 보고서 발행, 지적사항 해결
4.관리 단계 : 결함 해결 사항 보고, 점검된 소스 코드 관리
5.종료 단계 : 보안 상황 보고

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

1)비즈니스 연속성 계획이란?

: 각종 재해, 장애, 재난으로부터 위기관리를 기반으로 재해복구, 업무복구 및 재개, 비상계획 등을 통해 비즈니스 연속성을 보장하는 체계

[비즈니스 연속성 계획 관련 주요 용어]
*BIA(Business Impact Analysis)
: 장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정하여 시간 흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 비즈니스 영향분석

*RTO(Recovery Time Objective)
: 업무중단 시점부터 업무가 복구되어 다시 가동될 때까지의 시간

*RPO(Recovery Point Objective)
: 업무중단 시점부터 데이터가 복구되어 다시 정상가동될 때 데이터의 손실허용 시점

*DRP(Disaster Recovery Plan)
: 재난으로 장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구계획

*DRS(Disaster Recovery System)
: 재해복구계획의 원활한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적, 물적 자원 및 이들에 대한 지속적인 관리체계가 통합된 재해복구센터

5.보안 중요 용어

1)보안 공격 관련 중요 용어

*부 채널 공격
: 암호화 알고리즘의 실행 시기의 전력 소비, 전자기파 방사 등의 물리적 특성을 측정하여 암호 키 등 내부 비밀 정보를 부 채널에서 획득하는 공격 기법

*드라이브 바이 다운로드
: 악의적인 해커가 불특정 웹 서버와 웹 페이지에 악성 스크립트를 설치하고, 불특정 사용자 접속 시 사용자 동의 없이  실행되어 의도된 서버로 연결하여 감염시키는 공격기법

*워터링홀
: 특정인에 대한 표적 공격을 목적으로 특정인이 잘 방문하는 웹 사이트에 악성코드를 심거나 악성코드를 배포하는 URL로 자동으로 유인하여 감염시키는 공격기법

*스캠 공격
: 기업 이메일 계정 도용하여 무역 거래 대금 가로채는 사이버 범죄

*하트 블리드
: OpenSSL 암호화 라이브러리의 하트비트라는 확장 모듈에서 클라이언트 요청 메시지를 처리할 때 데이터 길이에 대한 검증을 수행하지 않는 취약점을 이용하여 시스템 메모리에 저장된 64kb 크기의 데이터를 외부에서 아무런 제한 없이 탈취할 수 있도록 하는 취약점

*크라임웨어
: 중요한 금융정보 또는 인증정보를 탈취하거나 유출을 유도하여 금전적인 이익 등의 범죄행위를 목적으로 하는 악성코드

*프로토콜 취약점
: 단순 서비스 검색 프로토콜의 특성을 활용하여 IoT Device를 좀비 PC로 이용한 분산 서비스 거부 공격

*윈드토커
: 와이파이/핫스팟 연결 디바이스의 터치스크린, 키보드 타이핑 등의 CSI 무선신호패턴을 스니핑 하여 해킹하는 기술

*토르 네트워크
: 네트워크 경로를 알 수 없도록 암호화 기법을 사용하여 데이터를 전송하며, 익명으로 인터넷을 사용할 수 있는 가상 네트워크

*멜트다운
: 인텔 x86 아키텍처에서 CPU 파이프라인의 비순차 명령 실행 시 발생하는 버그를 악용해서 커널 사용자 영역의 우회를 통해 시스템 메모리에 접근하여 내용을 확인할 수 있는 취약점

*스펙터
: 실패한 분기 예측으로 인해 메모리 데이터가 관찰될 수 있는 취약점을 이용하여 사용자 프로그램이 다른 사용자 프로그램의 메모리 영역을 훔쳐보고 정보를 탈취할 수 있는 취약점

*MITM 공격
: 네트워크 통신을 조작하여 통신 내용을 도청 및 조작하는 공격기법

*DNS 스푸핑 공격
: 공격 대상에게 전달되는 DNS 응답을 조작하거나 DNS 서버의 캐시 정보를 조작하여 희생자가 의도하지 않은 주소로 접속하게 만드는 공격기법

*포트 스캐닝
: 공격자가 침입 전 대상 호스트에 어떤 포트가 활성화되어 있는지 확인하는 기법으로 침입 전 취약점을 분석하기 위한 사전 작업

*디렉토리 리스팅
: 웹 애플리케이션을 사용하고 있는 서버의 미흡한 설정으로 인해 인덱싱 기능이 활성화되어 있을 경우, 공격자가 강제 브라우징을 통해서 서버 내의 모든 디렉토리 및 파일 목록을 볼 수 있는 취약점

*리버스 쉘 공격
: 타깃 서버가 클라이언트로 접속해서 클라이언트가 타깃 서버의 쉘을 획득해서 공격하는 기법

*익스플로잇
: 소프트웨어나 하드웨어의 버그 또는 취약점을 이용하여 공격자가 의도한동작이나 명령을 실행하도록 하는 코드 또는 그러한 행위

*스턱스텟 공격
: 독일 지멘스사의 SCADA 시스템을 공격 목표로 제작된 악성코드로 원자력, 전기, 철강, 반도체, 화학 등 주요 산업 기반 시설의 제어 시스템에 침투해서 오작동을 일으키는 악성코드 공격기법

*크리덴셜 스터핑
: 사용자 계정을 탈취해서 공격하는 유형 중 하나로, 다른 곳에서 유출된 아이디와 비밀번호 등의 로그인 정보를 다른 웹 사이트나 앱에 무작위로 대입해 로그인이 이루어지면 타인의 정보를 유출시키는 기법

 

2)보안 공격 대응 관련 중요 용어

*허니팟
: 비정상적인 접근을 탐지하기 위해 의도적으로 설치해 둔 시스템으로 일부러 허술하게 만들어서 해커에게 노출하는 유인시스템

*OWASP Top 10
: 웹 애플리케이션 취약점 중 공격 빈도가 높으며, 보안상 큰 영향을 줄수 있는 10가지 취약점에 대한 대응 방안을 제공하는 웹 보안 기술 가이드

*핑거프린팅
: 멀티미디어 콘텐츠에 저작권 정보와 구매한 사용자 정보를 삽입하여 콘텐츠 불법 배포자에 대한 위치 추적이 가능한 기술

*워터마킹
: 디지털 콘텐츠에 저작권자 정보를 삽입하여, 불법 복제 시 워터마크를 추출, 원소유자를 증명할 수 있는 콘텐츠 보호 기술

*이상금융거래탐지시스템
: 전자금융거래에 사용되는 단말기 정보, 접속 정보, 고래 정보 등을 종합적을 ㅗ분석하여 의심 거래를 탐지하고, 이상 거래를 차단하는 시스템

*CPTED(Crime Prevent Through Environment Design)
: 범죄 예방 환경 설계, 여러 학문 간 연계를 통해 도시 및 건축 공간 설계 시 범죄 기회를 제거하거나 최소화하는 방향으로 계획, 변경함으로서 범죄 및 불안감을 저감시키는 도시 설계 전략

*CC(Common Criteria)
: 정보기술 보안 기능과 보증에 대한 평가 기준, 정보보호 시스템의 보안 기능 요구사항과 보증 요구사항 평가를 위해 공통으로 제공되는 국제 평가 기준

*사이버 위협정보 분석 공유시스템
: 사이버 위협정보를 체계적 수립해서 인터넷진흥원 주관으로 관계 기관과 자동화된 정보공유를 할 수 있는 침해 예방 대응 시스템

*장착형 인증 모듈
: 리눅스 시스템 내에서 사용되는 각종 애플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러리

*CVE(Common Vulnerabilities and Exposures)
: 미국 비영리 회사인 MITRE 사에서 공개적으로 알려진 소프트웨어의 보안취약점을 표준화한 식별자 목록

*CWE(Common Weakness Enumeration)
: 미국 비영리 회사인 MITRE 사가 중심이 되어 소프트웨어에서 공통적으로 발생하는 약점을 체계적으로 분류한 목록으로, 소스 코드 취약점을 정의한 데이터베이스

*CVSS(Common Vulnerability Scoring System)
: 공통 취약점 등급 시스템으로 취약점 위험도를 계산할 수 있는 개방형 프레임워크

용어들이 엄청 많네요!🤔

 

자주 보면서 외워봐야겠습니다😢

 

도움이 되셨다면 공감버튼!💕

728x90
반응형