Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 위험관리
- study
- 클라우드
- 자격증공부
- Shell
- Linux
- Review
- it자격증
- 취약점진단
- Security
- 정보처리기사
- 워게임
- 공부
- wargame
- reivew
- DreamHack
- webhacking
- 리눅스
- 웹해킹
- 케이쉴드주니어
- 복습
- 드림핵
- 자격증
- 기록
- 보안
- keyword
- 보안용어
- 리눅스마스터2급
- IT
- 정리
Archives
- Today
- Total
IT Memory Note
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 구현(2) 본문
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 | 결과 분석 / 보고서 작성 | • 점검 항목에 대해 취약점 점수 지정 및 결과값 산출 • 결과 분석 및 보고서 작성을 통해 진단 완료 |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 애플리케이션 테스트 관리 : 애플리케이션 테스트 케이스 설계(1) (0) | 2024.08.30 |
---|---|
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 구현(3) (2) | 2024.08.29 |
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 구현(1) (0) | 2024.08.29 |
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(3) (0) | 2024.08.27 |
[정보처리기사] 소프트웨어 개발 보안 구축 : 소프트웨어 개발 보안 설계(2) (0) | 2024.08.27 |