SDL 보안 도구 자동화 살펴보기
개발자가 코드 개발 중 및 릴리스 후에 보안 요구 사항을 구현하도록 지원하기 위해 Microsoft는 보안 결함 및 취약성에 대해 소스 코드를 자동으로 검사하는 보안 개발 도구 제품군을 제공합니다. Microsoft는 기본 제공 보안 검사와 함께 컴파일러 및 개발 환경과 같이 개발자가 사용할 수 있는 승인된 도구 목록을 정의하고 게시합니다. Microsoft의 개발자는 최신 버전의 승인된 도구를 사용하여 새로운 보안 기능을 활용합니다.
보안 개발 도구를 제공하는 것 외에도 Microsoft는 자동화된 보안 도구를 사용하여 SDL 코드 분석 요구 사항을 구현하고 시행합니다. 이러한 도구 중 다수는 커밋 파이프라인에 내장되어 있으며 체크인 및 새 빌드가 컴파일 및 테스트될 때 보안 결함에 대한 코드를 자동으로 분석합니다. 새 빌드가 보안 검토를 통과하고 릴리스 승인을 받기 전에 자동화된 보안 도구로 발견된 문제를 수정해야 합니다.
Microsoft의 자동화된 보안 도구는 코드가 프로덕션 환경에서 작동하기 위해 릴리스될 때까지 커밋된 시간부터 다양한 개발 단계에서 코드를 테스트하기 위한 몇 가지 광범위한 범주로 나뉩니다. 아래 표에는 Microsoft에서 SDL 코드 분석을 위해 사용하는 도구 유형이 요약되어 있습니다.
보안 도구 | 설명 |
---|---|
정적 코드 분석 | 코드에 자격 증명의 존재를 포함하여 잠재적인 보안 결함에 대해 소스 코드를 분석합니다. |
이진 분석 | 이진 코드 수준에서 취약점을 평가하여 코드가 프로덕션 준비가 되었는지 확인합니다. |
암호화 검사 | 소스스 코드 및 코드 실행에서 암호화 모범 사례를 검증합니다. |
구성 유효성 검사 | 보안 표준 및 모범 사례에 따라 프로덕션 시스템의 구성을 분석합니다. |
정적 코드 분석 및 이진 분석
컴파일 전에 소스 코드를 분석하면 확장성이 뛰어난 보안 코드 검토 방법을 제공하고 보안 코딩 정책을 준수하는지 확인할 수 있습니다. 정적 코드 분석 도구는 소스 코드에서 일반적인 취약성, 안전하지 않은 함수와 같은 보안 결함, 소스 코드에 포함된 자격 증명 및 기타 비밀을 검사합니다. 이러한 도구에서 발견된 결함은 개발자가 수정할 수 있는 버그로 플래그가 지정됩니다.
대부분의 정적 코드 분석 도구는 커밋 파이프라인에 통합되어 소프트웨어가 빌드될 때마다 취약점을 식별하고 안전하지 않은 코드가 체크인되는 것을 방지합니다. 또한 정적 코드 분석 도구를 개발자 환경에 통합하여 안전하지 않은 기능의 존재와 같은 특정 결함을 발견하고 개발자가 적극적으로 코딩하는 동안 안전하지 않은 코드를 더 안전한 대안으로 바꿉니다.
소스 코드의 정적 분석 외에도 자동화된 도구를 사용하여 컴파일러/링커 설정 및 기타 보안 관련 이진 특성과 같은 이진 수준에서 컴파일된 코드에서 보안 결함을 검사합니다. Microsoft의 이진 분석 도구는 각 빌드에서 실행되어 이진 보안 결함을 감지하고 빌드가 릴리스되기 전에 수정을 위해 플래그를 지정합니다.
암호화 검사
Microsoft는 보안에 민감한 정보, 관리 및 제어 데이터를 포함한 모든 데이터가 강력한 암호화를 사용하여 전송 또는 저장될 때 의도하지 않은 공개 또는 변경으로부터 보호되도록 주의합니다. SDL은 개발자가 암호화를 안정적이고 안전하게 구현하는 승인된 암호화 모듈로 제한합니다. 이 정책을 시행하기 위해 Google 도구는 소스 코드와 코드 실행 중에 암호화 구현을 검사하고 검증합니다. 암호화의 안전하지 않은 사용은 수정을 위해 플래그가 지정되고 보안 검토 중에 유효성이 검사됩니다.
구성 유효성 검사
Microsoft에서 운영 팀은 DevOps 모델을 사용하여 개발 팀과 통합됩니다. DevOps의 일환으로 빌드가 프로덕션 환경에 릴리스된 후 코드의 보안 작동을 계속 검증합니다. 운영 팀은 보안 배포 체크리스트, 기본 구성 검사, 취약성 검사 및 호스트 기반 침입 탐지 시스템을 사용하여 소프트웨어가 보안 모범 사례에 따라 구성 및 운영되는지 확인합니다. 운영 팀에서 감지한 구성 결함은 수정을 위해 플래그가 지정되고 운영 팀에서 발견한 모든 버그는 코드 수준에서 수정하도록 적절한 개발 팀에 할당됩니다. 운영 보안을 SDL 요구 사항에 통합함으로써 릴리스 후에도 제품 및 서비스의 지속적인 보안을 보장하도록 돕습니다.