ScholarGate
어시스턴트

소프트웨어 및 애플리케이션 보안

소프트웨어 및 애플리케이션 보안은 프로그램이 작성되고 배포되는 방식에서 발생하는 취약점과 이를 찾아내고, 예방하며, 악용하는 방법을 다룹니다. 대부분의 보안 침해는 암호화 오류보다는 소프트웨어 결함에서 비롯된다는 점을 인식합니다.

PaperMind(으)로 주제 찾기곧 제공Find papers & topics
Tools & resources
슬라이드 다운로드
Learn & explore
동영상곧 제공

Definition

소프트웨어 및 애플리케이션 보안은 소프트웨어의 보안 취약점을 식별하고, 예방하며, 완화하는 것과 공격자가 이를 어떻게 발견하고 악용하는지 이해하는 것과 관련된 분야입니다.

Scope

이 분야는 소프트웨어 자체의 보안을 다룹니다. 즉, 취약점 유형(메모리 안전 오류, 인젝션, 논리적 결함)과 악용 방식, 안전한 소프트웨어 구축을 위한 관행(보안 설계, 코드 검토, 테스트, 퍼징), 악성 소프트웨어 분석, 웹 애플리케이션의 특정 문제 등을 포함합니다. 공격 및 방어 관점을 함께 다루며, 암호화 알고리즘, 네트워크 및 접근 제어 인프라는 관련 분야에서 다룹니다.

Sub-topics

Core questions

  • 어떤 종류의 프로그래밍 결함이 악용 가능한 취약점으로 이어지는가?
  • 공격자는 취약점을 어떻게 코드 실행이나 데이터 절도로 전환하는가?
  • 소프트웨어는 처음부터 안전하게 설계, 작성 및 테스트될 수 있는가?
  • 악성 소프트웨어는 어떻게 분석되고 방어되는가?
  • 수십 년간의 인식에도 불구하고 동일한 취약점 유형이 반복되는 이유는 무엇인가?

Key concepts

  • 취약점 유형
  • 메모리 안전성
  • 버퍼 오버플로우
  • 인젝션 공격
  • 악용 및 완화
  • 보안 개발 수명 주기
  • 정적 및 동적 분석
  • 퍼징
  • 악성코드 분석

Key theories

메모리 안전성 및 악용
메모리 안전성이 없는 언어는 버퍼 오버플로우와 같은 오류를 허용하여 공격자가 제어 데이터를 덮어쓰고 실행을 가로챌 수 있게 합니다. 악용(및 ASLR, DEP, 스택 카나리와 같은 완화책)을 이해하는 것은 소프트웨어 보안의 핵심입니다.
보안 내재화
보안은 개발 수명 주기 전반에 걸쳐(위협 모델링, 보안 코딩, 코드 검토, 테스트를 통해) 통합될 때 가장 효과적이며, 나중에 추가하는 것보다 결함을 더 저렴하게 수정할 수 있는 개발 초기 단계로 옮기는 것이 중요합니다.

Clinical relevance

소프트웨어 취약점은 실제 보안 사고의 대부분을 차지합니다. C/C++의 메모리 안전 버그는 주요 취약점의 상당 부분을 차지하며, 인젝션 결함은 데이터베이스를 손상시키고, 공급망 공격(SolarWinds, Log4Shell)은 종속성을 통해 전파됩니다. 이 분야는 운영 체제, 브라우저 및 애플리케이션이 강화되는 방식과 취약점 공개, 패치, 버그 바운티 생태계가 작동하는 방식에 직접적인 영향을 미칩니다.

Evidence & guidelines

이 분야는 공유된 지식 기반을 중심으로 구성됩니다. OWASP Top Ten과 CWE는 일반적인 취약점을 분류하고, CVE/NVD 시스템은 CVSS 심각도 점수와 함께 공개된 취약점을 추적하며, MITRE ATT&CK 프레임워크는 공격자 기술을 매핑합니다. 보안 개발 프레임워크(Microsoft SDL, NIST SSDF / SP 800-218)와 메모리 안전 언어(Rust)는 현재의 모범 사례 지침을 대표합니다.

History

소프트웨어 보안은 네트워크 시스템이 프로그램을 원격 공격자에게 노출시키면서 등장했습니다. 1988년 모리스 웜은 버퍼 오버플로우를 악용했고, Aleph One의 1996년 '스택 스매싱(Smashing the Stack)'은 악용 기술을 대중화하여 완화책(스택 카나리, 실행 불가능 메모리, ASLR)을 촉발했습니다. 2000년대에는 보안 개발(2002년 신뢰할 수 있는 컴퓨팅 메모 이후 Microsoft의 SDL)이 공식화되었고, 하트블리드(Heartbleed), 로그포셸(Log4Shell)과 같은 반복되는 위기는 이 분야를 계속해서 중요하게 만들었으며, 현재는 메모리 안전 언어의 채택을 주도하고 있습니다.

Key figures

  • Gary McGraw
  • Ross Anderson
  • Elias Levy (Aleph One)
  • Dan Geer

Related topics

Seminal works

  • anderson2020
  • mcgraw2006
  • aleph1996

Frequently asked questions

버퍼 오버플로우와 같은 동일한 취약점이 계속 나타나는 이유는 무엇입니까?
많은 중요한 소프트웨어가 메모리 안전하지 않은 언어로 작성되고, 마감 기한과 복잡성으로 인해 실수가 발생하며, 오래된 코드가 수십 년 동안 지속되기 때문입니다. 인식이 있더라도 단 하나의 간과된 검사도 악용될 수 있으므로, 이 분야에서는 메모리 안전 언어와 자동화된 분석을 점점 더 선호하고 있습니다.
애플리케이션 보안은 암호화와 별개입니까?
상호 보완적입니다. 암호화는 올바르게 사용될 경우 데이터를 보호하지만, 애플리케이션은 일반적으로 논리적 결함, 인젝션 또는 메모리 오류를 통해 손상되며, 이는 암호화를 완전히 우회합니다. 암호화 보호가 실제로 유지되려면 강력한 소프트웨어 보안이 필요합니다.

Methods for this concept

Related concepts