ScholarGate
어시스턴트

보안 소프트웨어 개발

보안 소프트웨어 개발은 위협 모델링 및 보안 설계부터 코딩 표준, 테스트 및 검토에 이르기까지 소프트웨어 구축의 모든 단계에 보안을 통합하여, 출시 후 패치하는 대신 취약점을 사전에 방지하는 것을 목표로 합니다.

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

Definition

보안 소프트웨어 개발은 제공되는 소프트웨어의 취약점 수와 심각도를 줄이기 위해 소프트웨어 개발 수명 주기 전반에 걸쳐 보안 활동 및 제어를 통합하는 학문입니다.

Scope

이 주제는 보안 소프트웨어를 생산하는 관행과 프로세스를 다룹니다: 위협 모델링, 보안 설계 원칙, 보안 코딩 표준, 정적 및 동적 분석, 퍼징, 보안 테스트, 코드 검토, 그리고 보안 개발 수명 주기 및 DevSecOps. 또한 공급망 및 종속성 보안도 다룹니다. 이 주제는 공격적인 익스플로잇 연구와 악성코드의 출시 후 분석은 제외하며, 이는 관련 주제에서 다룹니다.

Core questions

  • 보안은 나중에 추가하는 것이 아니라 처음부터 소프트웨어에 어떻게 설계되는가?
  • 위협 모델링이란 무엇이며, 보안 설계를 어떻게 안내하는가?
  • 정적 분석, 동적 분석, 퍼징은 출시 전에 취약점을 어떻게 찾아내는가?
  • 보안 개발 활동은 최신 CI/CD 파이프라인(DevSecOps)에 어떻게 통합되는가?
  • 타사 종속성 및 소프트웨어 공급망의 위험은 어떻게 관리되는가?

Key concepts

  • 위협 모델링
  • 보안 설계 원칙
  • 보안 코딩 표준
  • 정적 애플리케이션 보안 테스트 (SAST)
  • 동적 분석 (DAST)
  • 퍼징
  • 코드 검토
  • 보안 개발 수명 주기
  • 공급망 보안

Key theories

보안 개발 수명 주기
구조화된 프로세스는 요구 사항, 설계(위협 모델링), 구현(보안 코딩, 분석), 검증(테스트, 퍼징), 출시 등 각 개발 단계에 보안 게이트를 통합하여, 출시되는 취약점을 측정 가능하게 줄입니다.
쉬프트 레프트(Shift-left) 및 자동화된 보증
결함을 조기에 발견하고 수정하는 것('쉬프트 레프트')은 배포 후보다 훨씬 저렴합니다. 지속적 통합에 내장된 자동화된 정적/동적 분석 및 퍼징은 확장 가능하고 반복 가능한 보증을 제공합니다.

Mechanisms

보안 개발은 위협 모델링(예: STRIDE)으로 시작하여 발생할 수 있는 문제점을 식별하고, 최소 권한 및 다층 방어(defense in depth)를 적용하는 설계를 수립합니다. 구현 단계에서는 보안 코딩 표준과 정적 분석이 위험한 패턴을 식별하고, 동적 분석과 퍼징은 비정상적인 입력을 통해 실행 중인 프로그램을 테스트하여 충돌 및 메모리 오류를 찾아냅니다. 코드 검토와 보안 테스트는 출시 전에 이루어지며, DevSecOps에서는 이러한 검사가 빌드 파이프라인에서 자동으로 실행되고, 종속성 스캔 및 서명된 빌드가 공급망을 보호합니다.

Clinical relevance

보안 개발은 사람들이 사용하는 거의 모든 소프트웨어의 기본 보안을 결정합니다. 2002년 이후 Microsoft의 SDL 채택은 제품의 취약점을 현저히 줄였고, 지속적인 퍼징(Google의 OSS-Fuzz)은 널리 사용되는 오픈 소스 코드에서 수천 개의 버그를 발견했으며, SolarWinds 및 Log4Shell과 같은 공격 이후 공급망 관행이 시급해졌습니다. 이러한 관행은 규제 기대치와 조달 요구 사항을 형성합니다.

Evidence & guidelines

프레임워크에는 Microsoft SDL, OWASP SAMM 및 ASVS, BSIMM(실제 프로그램 측정), 그리고 NIST의 보안 소프트웨어 개발 프레임워크(SSDF, SP 800-218)가 포함됩니다. 미국 행정 지침은 이제 정부 소프트웨어 공급업체에 SSDF 증명을 요구하며, SBOM(소프트웨어 자재 명세서) 표준은 공급망 투명성을 지원합니다.

History

보안 개발은 1990년대 후반과 2000년대 초반에 출시된 소프트웨어의 패치가 확장성이 없다는 인식이 확산되면서 발전했습니다. Microsoft의 2002년 Trustworthy Computing 이니셔티브는 보안 개발 수명 주기(Security Development Lifecycle)를 탄생시켰고, McGraw의 'Software Security'(2006)는 '보안 내재화(building security in)'를 체계화했습니다. 2010년대에는 이러한 관행이 애자일 및 DevOps 워크플로우(DevSecOps)에 통합되었고, 주요 공급망 사고 이후 종속성 및 빌드 무결성으로 확장되었습니다.

Key figures

  • Gary McGraw
  • Michael Howard
  • Steve Lipner
  • Ross Anderson

Related topics

Seminal works

  • howard2006
  • mcgraw2006
  • anderson2020

Frequently asked questions

위협 모델링이란 무엇인가요?
위협 모델링은 설계 단계에서 공격자가 무엇을 목표로 삼을 수 있고 어떻게 공격할 수 있는지에 대한 구조화된 분석입니다. 팀은 시스템을 도식화하고, 위협을 열거하며(종종 STRIDE와 같은 체크리스트를 사용), 코드를 작성하기 전에 완화 방법을 결정하여 보안이 아키텍처에 내장되도록 합니다.
보안 스캐너를 실행하는 것만으로는 충분하지 않은 이유는 무엇인가요?
자동화된 스캐너는 많은 알려진 패턴을 감지하지만, 설계 결함, 비즈니스 로직 오류, 새로운 문제는 놓치며, 오탐(false positives)을 생성하기도 합니다. 효과적인 프로그램은 자동화된 분석과 위협 모델링, 수동 검토, 그리고 전체 수명 주기에 걸친 테스트를 결합합니다.

Methods for this concept

Related concepts