본문 바로가기
Computer Science/CS

[전산 공부] 소프트웨어 개발 보안

by HelloJudy 2024. 4. 6.

🔹 소프트웨어 개발 보안

 ✔️ Secure SDLC

  • CLASP: SDLC의 초기 단계에서 보안을 강화하기 위해 개발된 방법론
  • Seven Touchpoints: 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론

 

 ✔️ 소프트웨어 개발 보안 요소

1) 기밀성(Confidentiality)

  • 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용됨
  • 정보가 전송 중에 노출되더라도 데이터를 읽을 수 없음

2) 무결성(Integrity)

시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음

 

3) 가용성(Availability)

인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있음

 

4) 인증(Authentication)

  • 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위
  • 대표적 방법: 패스워드, 인증용 카드, 지문 검사 등

5) 부인 방지(NonRepudiation)

데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공함

 

 

 ✔️ 입력 데이터 검증 및 표현 보안 약점

1) SQL 삽입(Injection)

웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점

-> 동적 쿼리에 사용되는 입력 데이터에 예약어 및 특수문자가 입 력되지 않게 필터링 되도록 설정하여 방지할 수 있음

 

2) 경로 조작 및 자원 삽입

데이터 입출력 경로를 조작하여 서버 자원을 수정 삭제할 수 있는 보안 약점

-> 사용자 입력값을 식별자로 사용하는 경우, 경로 순회 공격을 막는 필터를 사용하여 방지할 있음

 

3) 크로스사이트 스크립팅(XSS)

웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안 약점

-> HTML 태그의 사용을 제한하거나 스크립트에 삽입되지 않도록 '<', '>', '&' 등의 문자를 다른 문자로 치환함으로써 방지할 수

있음

 

4) 운영체제 명령어 삽입

외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한 을 탈취하거나 시스템 장애를 유발하는 보안 약점

-> 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로써 방지할 있음

 

5) 위험한 형식 파일 업로드

악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시 스템에 손상을 주거나, 시스템을 제어할 수 있는 보안 약점

-> 업로드 되는 파일의 확장자 제한, 파일명의 암호화. 웹사이트와 파일 서버의 경로 분리, 실행 속성을 제거하는 등의 방법으로 지할 있음

 

6) 신뢰하지 않는 URL 주소로 자동접속 연결

입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도하는 보안 약점

-> 연결되는 외부 사이트의 주소를 화이트 리스트로 관리함으로써 방지할 있음

 

7) 메모리 버퍼 오버플로우

연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점

-> 메모리 버퍼를 사용할 경우 적절한 버퍼의 크기를 설정하고, 정된 범위의 메모리 내에서 올바르게 읽거나 있도록 함으 로써 방지할 있음

 

 

 ✔️ 보안 기능의 보안 약점

1) 널 포인터 역참조

널 포인터가 가리키는 메모리의 위치에 값을 저장할 때 발생하는 보안 약점

 

2) 부적절한 지원 해제

자원을 반환하는 코드를 누락하거나 프로그램 오류로 할당된 자원을 반환하지 못했을 때 발생하는 보안 약점

 

3) 해제된 자원 사용

이미 사용이 종료되어 반환된 메모리를 참조하는 경우 발생하는 보안 약점

 

4) 초기화되지 않은 변수 사용

변수 선언 후 값이 부여되지 않은 변수를 사용할 때 발생하는 보안 약점

 

[ 스택 가드(Stack Guard) ]

널 포인터 역참조와 같이 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술 중 하나이다.

 

 

 ✔️ 암호 알고리즘

 

[ 양방향 알고리즘 ]

 

1) 개인키(대칭키)

동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법
  • 블럭 방식: DES(64비트), AES, SEED(한국인터넷진흥원), ARIA
    • 고정 길이의 블록을 할당하여 암호화하는 방식
  • 스트림 방식: LFSR, RC4, TKIP(무선랜 WEP보완)
    • 유사 난수를 연속적으로 생성하여 암호문을 생성하는 방식

 

2) 공개키(비대칭키)

암호화할 때 사용하는 공개키는 사용자에게 공개하고, 복호화할 때 비밀키는 관리자가 비밀리에 관리하는 암호화 기법
  • RSA (MIT), 소인수 분해 문제를 이용한

 

[ 단방향 알고리즘 ]

MD4, MD5(MD4 대체), SHA-1

 

 

 ✔️ 서비스 공격 유형

[ 서비스 거부(DoS) 공격 ]

 

1) Ping of Death(죽음의 핑): 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크를 마비시키는 서비스 거부 공격 방법

 

2) 스머핑 (SMURFING) : IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터 를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능상태로 만드는 공격 방법

  • 스머프(Smurf) 공격: 브로드캐스트 활용

3) SYN Flooding: 3-way-handshake 과정을 의도적으로 중단시킴으로써 공격 대상자인 서버가 대기 상태로 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법

 

4) Ddos: 여러 곳에 분산된 공격 지점에서 한 곳의 서버에 분산 서비스 공격

 

  • 관련 공격: Tribe Flood Network

5) LAN attack: 패킷을 전송할 때 송신 ip와 수신 ip 주소를 모두 공격 대상의 ip주소로 하여 공격 대상에게 전송하는 것

 

[ 네트워크 침해 공격 유형 ]

 

1) 세션 하이재킹 (Session Hijacking) : 서버에 접속하고 있는 클라이언트들의 세션 정보를 가로채는 공격 기법

  • 탐지 방법: 비동기화 상태 탐지, ACK STORM 탐지, 패킷의 유실 및 재전송 증가 탐지

2) ARP 스푸핑: 자신의 물리적 주소(MAC)를 공격대상의 것으로 변조하여 공격 대상에게 도달해야 하는 데이터 패킷을 가로채거나 방해함

 

3) 스미싱 (Smishing) : SMS 를 이용해 개인 신용 정보 훔침

 

4) 사회 공학: 컴퓨터 보안에 있어서, 인간 상호 작용의 깊은 신뢰를 바탕으로 사람들을 속여 정상 보안 절차를 깨트리기 위해 비기술적 시스템 침입 수단

 

5) 다크 데이터: 특정 목적을 가지고 데이터를 수집했으나, 이후 활용되지 않고 저장만 되어 있는 대량 데이터

 

6) 타이포스쿼팅: 사이트 접속 시 주소를 잘못 입력하는 실수를 이용하여 유사한 유명 도메인을 미리 등록하는 일

 

7) APT: 다양한 기술과 방식을 이용해 조직적으로 특정 기업이나 조직 네트워크에 침투해 활동 거점을 마련한 뒤 때를 기다리면서 보안을 무력화시키고 정보를 수집한 다음 외부로 빼돌리는 형태의 공격

 

8) 스니핑: 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형

 

9) Qshing : QR 코드를 통해 금융 사기

 

 

[ 정보 보안 침해 공격 유형 ]

 

1) 키로거 (Key Logger) : 사용자의 키보드 움직임을 탐지해 개인 정보 빼냄

 

2) 랜섬웨어 (Ransomware) : 문서나 파일을 암호화

 

3) 웜 (Worm) : 네트워크를 통해 연속적으로 자신을 복제해 시스템 다운 시킴

 

4) 제로데이공격 (Zero Day Attack) : 보안 취약점이 발견되었을 때 발견된 취약점의 존재 자체가 널리 공표되기도 전에 해당 취약점을 통하여 이루어지는 보안 공격으로, 공격의 신속성 을 의미함

 

5) 백도어: 시스템 설계자가 서비스 기술자나 유지보수 프로그램 작성자의 엑세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로로, 컴퓨터 범죄에 악용되기도 함

  • 탐지 방법: 무결성 검사, 프로세스 및 열린 포트 확인, 로그 분석, SetUID 파일 검사
  • tripwire: 크래커가 침입하여 백도어를 만들어 놓거나, 설정 파일을 변경 했을 때 분석하는 도구

 

6) 워터링홀: 목표 조직이 자주 방문하는 웹 사이트에 사전 감염시켜 목적 조직의 일원이 방문했을 때 감염시키는 웹 기반 공격

 

 

 ✔️ 보안 솔루션

[ 방화벽 ]

 

Screen Subnet(스크린 서브넷): 외부 네트워크와 내부 네트워크 사이에 두는 완충적인 통신망

 

 

[ 침입 탐지 시스템, IDS ]

컴퓨터 시스템의 비정상적인 사용, 오용, 남용을 실시간으로 탐지하는 시스템

  • 이상 탐지: 모르다가 비정상적이면 알려줌, Behavior, Statistical Detection
  • 오용 탐지: 미리 알고 있던 패턴 감지, Signature Base, Knowledge Base

 

[ 침입 방지 시스템, IPS ]

비정상적인 트래픽을 능동적으로 차단하고 격리하는 보안 솔루션

 

[ SIEM(Security Information & Event Management) ]

로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션, 로그 및 이벤트를 수집하여 시각화, 경보, 검색, 보고서 등으로 나타날 수 있는 추가 분석을 위해 이 데이터를 정규화

 

[ 오라클 감사 뷰(view) ]

  • dba_stmt_audit_opts : 문장 감사의 옵션을 확인
  • dba_priv_audit_opts : 권한 감사의 옵션을 확인
  • dba_obj_audit_opts : 객체 감사의 옵션을 확인
  • dba_audit_trail : 모든 감사 로그를 출력
  • dba_audit_object : 객체와 관련된 모든 감사 로그를 출력
  • user_audit_obejct : 현재 사용자의 객체와 관련된 모든 감사 로그를 출력
  • dba_audit_session : 사용자의 로그인/로그오프
  • dba_audit_statment : 문장 감사 로그를 출력
반응형

'Computer Science > CS' 카테고리의 다른 글

[전산공부] 소프트웨어공학 + 최신기술  (2) 2024.03.17
[전산공부] 데이터베이스  (4) 2024.02.25
[전산공부] 운영체제  (0) 2024.02.18
[전산 공부] 데이터 통신  (0) 2024.02.02

댓글