IT Memory Note

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

자격증/정보처리기사

[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 구현(2)

h00ddu 2024. 8. 29. 02:23

 

1️⃣ SW 개발 보안 구현

 


(5) 세션 통제(Session Control)

 

1. 세션 통제의 개념

 

  • 다른 세션 간 데이터 공유 등 세션과 관련되어 발생할 수 있는 취약점을 예방하기 위한 보안 점검 함목들
  • 이미 연결이 종료된 클라이언트의 정보가 사용 가능한 상태로 방치되는 경우 허가되지 않은 사용자가 시스템에 접근할 수 있는 보안 약점이 있음
  • 안전한 세션 통제 정책이 적용되기 위해 세션 정보를 안전하게 관리해야 함

2. 세션 통제 취약점

 

취약점 설명 대책
불충분한
세션 관리
인증 시 일정한 규칙이 존재하는 세션 ID를 발급
 세션 타임아웃을 길게 설정한 경우 공격자에 의해 사용자 권한이 도용 
클래스 변수는 세션 간에 공유되는 데이터가 되므로 클래스 설계 시 세션 정보를 읽고 쓰기가 가능한 변수를 사용하지 않도록 설계

 


 

(6) 코드 오류

 

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

2. 코드 오류 취약점

 

취약점 설명 대책
널 포인터 역참조 '일반적으로 그 객체가 NULL이 될 수 없다'라는 가정을 위반했을 때 발생
대부분 OS에서 널 포인터는 메모리의 첫 주소를 가리키며,해당 주소를 참조할 경우 소프트웨어가 비정상적으로 종료
공격자가 의도적으로 NULL 포인터 역참조를 실행하는 경우, 그 결과 발생하는 예외 사항을 추후에 공격자가 악용할 수 있음
NULL이 될 수 있는 Reference는 참조하기 전에 NULL 값인지를 검사하여 안전한 경우에만 사용
정수를
문자로 변환
정수를 문자로 변환하면서 표현할 수 없는 범위의 값이 잘려나가 문자에 대한 저장값이 올바르지 않은 보안 취약점 정수를 문자로 변환할 경우, 변환값의 크기가 변환값이 저장되는 변수의 크기보다 크지 않도록 함
부적절한
자원 해제
힙 메모리, 소켓 등 프로그램 자원 사용 후, 프로그램 오류로 인해 종료된 자원을 반환하지 못했을 때 발생할 수 있는 보안 취약점 자원을 획득하여 사용한 다음에는 Finally 블록에서 반드시 자원이 반환되도록 코딩함으로써 방지
초기화되지
않은 변수 사용
초기화되지 않은 변수 사용은 변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생할 수 있는 보안 취약점
변수가 선언되어 메모리가 할당되면 해당 메모리에 이전에 사용하던 내용이 계속 남아있어 변수가 외부에 노출되는 경우 중요 정보가 악용될 수 있음
변수 선언 시 할당된 메모리를 초기화함으로써 방지

※ 널 포인터(Null Pointer) : 포인터에 NULL이 저장되어 어떠한 곳도 가리키지 못하는 상태의 요소


 

(7) 캡슐화

 

1. 캡슐화의 개념

 

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

2. 캡슐화 취약점

 

취약점 설명 대책
잘못된 세션에
의한 데이터
정보 노출
다중 스레드 환경에서 싱글톤 객체 필드에서 경쟁 조건으로 인해 동기화 오류가 발생하거나, 멤버 변수의 정보가 노출되는 보안 취약점 싱글톤 패턴을 사용하는 경우, 변수 범위에 주의하고, 멤버 변수보다 지역 변수를 활용하여 변수의 범위를 제한함으로써 방지
제거되지 않고
남은 디버그 코드
디버깅 목적으로 삽입된 코드가 제거되지 않음으로 인해 공격자에게 의도하지 않은 정보와 제어 정보가 누출될 수 있는 보안 취약점 디버거 코드는 개발 완료 후, 삭제 처리
민감한 데이터를 가진 내부 클래스 사용 권한이 없는 클래스를 사용하고자 할 때 발생하는 취약점 내부 클래스 사용 시 외부 클래스의 접근 금지
시스템 데이터
정보 노출
시스템•관리자 DB 정보 등 시스템의 내부 데이터를 시스템 메시지 등을 통해 외부로 출력하도록 코딩했을 때 발생하는 보안 취약점 시스템 메시지를 통해 노출되는 메시지는 최소한의 정보만 제공함으로써 방지

※ 디버깅(Debugging) : 컴퓨터 프로그램이나 시스템의 정확성 또는 논리적인 오류(버그)를 검출하여 제거하는 과정


 

(8) API 오용

 

1. API 오용의 개념

 

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

2. API 오용 취약점

 

취약점 설명 대책
DNS Lookup에
의존한 보안 결정
도메인명에 의존하여 인증이나 접근 통제 등이 보안 결정을 내리는 경우 발생하는 보안 약점
DNS 엔트리를 속여 동일한 도메인에 속한 서버인 것처럼 위장하거나, 사용자와 서버 간의 네트워크 트래픽을 유도하여 악성 사이트를 경유하도록 조작할 수 있음
보안 결정에서 도메인명을 이용한 DNS Lookup을 하지 않도록 함
DNS 이름 검색 함수를 사용한 후 조건문에서 인증 여부를 수행하는 것보다 IP 주소를 이용하는 것이 DNS 이름을 직접 사용하는 것보다 안전
위험하다고 알려진
함수 사용
보안 취약점을 고려하지 않고 개발되어, 사용 자체가 취약한 함수들의 보안 취약점
예 : strcpy 함수(글자 수 상관없이 문자열 복사 가능하여 위험)
 안전한 함수 사용
예 : strncpy 함수(문자열 복사 시 글자 길이 지정)
널 매개변수
미검사
자바 표준에서 특정 메서드 사용 시 매개변수가 널인 경우 지정된 값을 반환하지 못해 발생하는 예기치 못한 동작에 대한 보안 취약점 널 여부를 점검하는 과정을 거친 후 사용해야 함

 


 

2️⃣ 시스템 보안 구현

 


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

 

  • 유닉스/리눅스 로그가 저장되는 경로는 시스템마다 조금씩 다른데, 일반적으로 유닉스는 /var/adm 디렉토리에 주로 저장되며, 리눅스는 /var/log 디렉토리에 주로 저장됨
  • 리눅스에서는 /var/log 디렉토리에서 시스템의 모든 로그를 기록 및 관리하고 있음
  • 시스템의 /etc/syslog.conf 파일에서 시스템 로그 파일들의 위치를 지정하고 있음
  • 다양한 로그를 바탕으로 해커를 추적하는 것이 가능함
로그 이름 설명 내용 확인 명령어
wtmp/wtmpx  사용자 로그인/로그아웃 정보
시스템 shutdown/reboot 정보
last 명령어
utmp/utmpx 현재 시스템에 로그인한 사용자 정보 who, w, users, finger 명령어
btmp/btmpx 로그인에 실패한 정보 lastb 명령어
lastlog 사용자별 최근 로그인 시간 및 접근한 소스 호스트에 대한 정보 lastlog 명령어
sulog su(Switch user) 명령어 실행 성공/실패 결과에 대한 정보 텍스트 파일이라서 별도 명령어 없음
acct/pacct 사용자별로 실행되는 모든 명령어에 대한 로그 lastcomm, acctcom 명령어
xferlog FTP 서비스 데이터 전송 기록 로그 텍스트 파일이라서 별도 명령어 없음
messages 부트 메시지 등 시스템의 가장 기본적인 시스템 로그 파일로, 운영에 대한 전반적인 메시지를 저장
secure 보안과 관련된 주요 로그를 기록, 사용자 인증과 관련된 로그를 기록

wtmp, utmp, btmp는 리눅스에서 사용하고, wtmpx, utmpx, btmpx는 유닉스에서 사용해서 wtmp(x), utmp(x), btmp(x)로 표기하기도 함


 

(2) 보안 솔루션

 

1. 네트워크 보안 솔루션

 

  • 네트워크 보안 장비는 접근 통제, 침입차단 및 탐지, DDoS 탐지 등을 수행하는 일체형 장비들이 포함됨
솔루션 설명
방화벽(Firewall) 기업 내부, 외부 간 트래픽을 모니터링하여 시스템의 접근을 허용하거나 차단하는 시스템
웹 방화벽(WAF, Web
Application Firewall)
 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화된 보안 장비
SQL 인젝션, XSS 등과 같은 웹 공격을 탐지하고 차단하는 기능
네트워크 접근 제어(NAC,
Network Access Control)
단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션
바이러스나 웜 등의 보안VPN 위협으로부터 네트워크 제어 및 통제 기능을 수행
침입 탐지 시스템(IDS,
Intrusion Detection System)
네트워크에 대한 공격이나 침입을 실시간적으로 차단하고, 유해 트래픽에 대한 조치를 능동적으로 처리하는 시스템
무선 침입 방지 시스템(WIPS,
Wireless Intrusion
Prevention System)
인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 파단하고 보안에 취약한 무선 공유기를 탐지하는 시스템
통합 보안 시스템(UTM,
Unified Threat Management)
방화벽, 침입 탐지 시스템(IDS), 침입 방지 시스템(IPS), VPN, 안티 바이러스, 이메일 필터링 등 다양한 보안 장비의 기능을 하나의 장비로 통합하여 제공하는 시스템
가상사설망(VPN,
Virtual Private Network)
인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔루션
SIEM(Security
Information and
Event Management)
다양한 보안 장비와 서버, 네트워크 장비 등으로부터 보안 로그와 이벤트 정보를 수집한 후 정보 간의 연관성을 분석하여 위협 상황을 인지하고, 침해사고에 신속하게 대응하는 보안 관제 솔루션
기업에서 생성되는 테라 바이트급의 정형•비정형 데이터와 방화벽, 안티 바이러스 시스템, 서버, 네트워크 장비 등으로부터 수집한 다양한 데이터 등을 빅데이터 기반의 로그 분석을 통하여 보안의 위협 징후를 빠르게 판단•대응할 수 있도록 해주는 보안 관제 솔루션
ESM(Enterprise
Security Management)
방화벽, 침입 탐지 시스템, UTM, VPN 등의 여러 보안 시스템으로부터 발생한 각종 이벤트 및 로그를 통합해서 관리, 분석, 대응하는 전사적 통합 보안 관리 시스템
서로 다른 기종의 보안 장비들을 통합 관리하는 기능과 네트워크 자원 현황의 보안 모니터링 기능이 있고, 주로 이벤트 위주의 단시간 위협 분석 및 DBMS 기반의 보안 관리 솔루션

VPN은 여러 공중 인터넷망을 하나의 사설망처럼 사용할 수 있는 기술로 공중망과 사설망의 중간 단계이고 방식으로는 SSL 방식과 IPSec 방식이 있음

 SSL VPN은 4계층에서 소프트웨어적으로 동작하므로 별도의 장치가 필요 없으며 가격이 저렴하고, IPSec VPN은 3계층에서 동작하므로 IP 헤더를 조작해야 하므로 별도의 하드웨어 장치가 필요하나 보안성이 뛰어남


2. 시스템 보안 솔루션

 

솔루션 설명
스팸 차단 솔루션
(Anti-Spam Solution)
 메일 서버 앞단에 위치하여 프록시 메일 서버로 동작하는 솔루션
메일 바이러스 검사, 내부 → 외부 본문 검색 기능 통한 내부 정보 유출 방지
보안 운영체제
(Secure OS)
컴퓨터 OS의 커널에 보안 기능을 추가한 솔루션
OS에 내재된 결함으로 인해 발생할 수 있는 각종 해킹 공격으로부터 시스템을 보호하기 위해 보안 기능이 통합된 보안 커널을 추가한 OS

※ 스팸(Spam) : 이메일이나 휴대폰 등 정보통신 서비스를 이용하는 이용자에게 본인이 원치 않음에도 불구하고 일방적으로 전송되는 영리목적의 광고성 정보


3. 콘텐츠 유출 방지 보안 솔루션

 

솔루션 설명
보안 USB 정보 유출 방지 등의 보안 기능을 갖춘 USB 메모리
사용자 식별/인증, 데이터 암/복호화, 임의 복제 방식, 분실 시 데이터 삭제 기능
데이터 유출 방지(DLP,
Data Loss Prevention)
조직 내부의 중요 자료가 외부로 빠져나가는 것을 탐지하고 차단하는 솔루션
정보 유출 방지를 위해 정보 흐름에 대한 모니터링과 실시간 차단 기능을 제공
디지털 저작권 관리(DRM,
Digital Right Management)
MP3, eBook과 같은 디지털 저작물에 대한 보호와 관리를 위한 솔루션
파일 자체에 암호를 걸어 권한 없는 사용자는 사용하지 못함
문서 보안 솔루션으로도 사용할 수 있고 문서를 저장할 때 암호화하여 저장하여 권한이 없는 사용자가 문서를 읽지 못하도록 함

 


 

(3) 취약점 분석

 

1. 취약점 분석의 개념

 

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

 

 


2. 취약점 분석의 대상

 

분석대상 예시 결과
환경 및 시설  문, 창문 등 물리적 보호 결어
 불안정한 전원 설비
 재해를 입기 쉬운 입지 조건
 도난
 정전/오작동
 천재지변
하드웨어(Hardware)  온/습도의 변화
 기억매체의 유지보수 부족
 고장/오작동
 데이터 유실
소프트웨어(Software)  명세서의 미준비
 부적절한 패스워드
백업(Backup) 부족
소프트웨어 장애
정보 유출
 데이터 소실

 


3. 취약점 분석 절차

 

순서 절차 설명
1 자산 조사 및 분석 어떤 자산에 대해 수행할지 선정
2 진단 대상 선정 자산규모가 작으면 전수 조사를 수행하고, 크면 샘플링 수행
3 제약사항 확인 진단 수행하는 시간의 제약사항 확인 및 일정 분배
4 진단 수행 체크리스트를 이용해 취약점 진단 수행
 - 기술적 관점 : 수동 진단 / 자동 진단
 - 관리적 관점 : 담당자 인터뷰
 - 물리적 관점 : 내부 실사
5 결과 분석 / 보고서 작성 점검 항목에 대해 취약점 점수 지정 및 결과값 산출
결과 분석 및 보고서 작성을 통해 진단 완료