1) 정적 애플리케이션 보안 도구(SAST: Static Application Security Testing), 동적 애플리케이션 보안 도구(DAST: Dynamic Application Security Testing)
💡 정적 애플리케이션 보안 도구(SAST: Static Application Security Testing), 동적 애플리케이션 보안 도구(DAST: Dynamic Application Security Testing), 분류 정적 애플리케이션 보안 도구(SAST: Static Application Security Testing) 동적 애플리케이션 보안 도구(DAST: Dynamic Application Security Testing)
목적
코드 품질, 보안 취약점 조기 발견
보안 취약점 탐색
실행 시점
코드를 실행하기 이전에 실행(빌드 전/ 개발 단계)
코드가 실행중인 단계에 실행(테스트/런타임 단계)
적용 단계
개발(Dev) / 빌드(CI) 단계
테스트(QA) / 배포 직전 또는 실제 서버(Pre-prod) 단계
주요 분석 범위
코드 결함, 보안 규칙 위반, 취약한 함수 탐지
SQL Injection, XSS, CSRF, 인증/인가 결함, 서버 설정 오류, 세션 취약점 등
1. 정적 애플리케이션 보안 도구(SAST: Static Application Security Testing)
💡 정적 애플리케이션 보안 도구(SAST: Static Application Security Testing) - '소스 코드나 프로그램을 실행하지 않고 소스 코드를 검사하는 방법'입니다. 즉, 애플리케이션이 실행되기 이전에 실행하는 보안 취약점을 식별하는 방법입니다. - 이 접근 방식에서는 자동화된 도구나 버그, 보안 취약점 또는 코딩 표준에서 벗어난 항목 등 잠재적인 문제를 검사하는 도구를 의미합니다.
- 아래와 같이 코드를 실행시키면, Sparrow SAST에서 사전에 발생할 수 있는 취약점에 해당하는 항목들이 출력됩니다.
💡 SonarQube를 이용한 웹 취약점 분석 예시
- 아래와 같이 코드를 실행시키면, SonarQube 사전에 발생할 수 있는 취약점에 해당하는 항목들이 출력됩니다.
2. 동적 애플리케이션 보안 도구(DAST: Dynamic Application Security Testing)
💡 동적 애플리케이션 보안 도구(DAST: Dynamic Application Security Testing)
- ‘런타임 단계’에서 소스 코드나 프로그램이 컴파일되어 런타임 단계에서 수행이 될 때 취약점을 검사를 하는 방법입니다.
- 이 단계에서는 메모리 사용, CPU 사용, 네트워크 트래픽 등 다양한 측면을 ‘보안 취약점을 분석’합니다. 실제 공격자처럼 침투하여서 문제를 찾는 도구로써 사용이 됩니다.
[더 알아보기]
💡 성능/부하테스트에서 사용하는 Apache JMeter도 DAST가 되지 않을까? - DAST의 경우는 보안 취약점 탐지(Injection, XSS, 취약한 인증 등)를 탐지하게 이용이 되지만, JMeter의 경우는 성능 및 부하테스트를 위해서 이용이 됩니다. 그렇기에 목적성으로 볼 때, DAST는 아니고 DAST의 보조적인 도구가 될 수 있습니다.
2) SonarQube
💡 SonarQube
- 소스 코드의 품질 및 코드 보안을 분석하고 관리하기 위한 오픈소스 플랫폼입니다. - 소스 코드 정적 분석을 수행하여 코드의 버그, 취약점, 코드 스멜(품질이 낮은 코드)을 NIST SSDF, OWASP, CWE, STIG, CASA 등 일반적인 코드 보안 표준을 준수하여 코드를 탐지하고 보고서를 제공합니다. 이를 통해 개발자들은 코드 품질을 향상하고 유지 보수성을 향상할 수 있습니다. - SonarQube의 제품으로는 SonarQube Server, Cloud, IDE, Advanced Security, MCP Server 등이 있습니다.
- 클라우드 애플리케이션 구성요소의 보안성 검증- 인증, 접근제어, 데이터 보호, 네트워크 정책 포함- DevSecOps 환경에서의 보안 기준 적용
클라우드 서비스, SaaS 보안 검증, CSP 평가 및 인증
1. SonarQube 종류
1.1. SonarQube Server : 자체 관리형
💡 SonarQube Server : 자체 관리형 - 온프레미스 또는 클라우드, 서버 등에 Docker 또는 Kubernetes를 통해 원하는 곳에 직접 배포를 할 수 있는 ‘자체 관리형’을 의미합니다. - 코드 품질 및 보안 검토를 자동화하고 실행 가능한 코드 인텔리전스를 제공하여 개발자가 더 나은 코드 개발에 집중하고 더 빠르게 작업할 수 있도록 지원합니다. - SonarQube IDE와 연결하여 코딩 정책을 준수하며 작업을 할 수 있습니다.
구분
Developer Edition
Enterprise Edition
Data Center Edition
가격
연간 $720부터
영업팀 문의 (Talk to sales)
영업팀 문의 (Talk to sales)
대상 규모
10만+ Lines of Code
100만+ Lines of Code
2천만+ Lines of Code
언어/프레임워크 지원
33개
39개
39개
지원 방식
상용 지원 가능 (Commercial support)
상용 지원 가능 (24/7 지원 가능)
상용 지원 포함 (24/7 white-glove 지원)
주요 기능
- AI 생성 코드 자동 탐지 - AI Code Assurance - 고급 버그 탐지(Advanced bug detection) - 비밀키 탐지(Secrets detection, 개선됨)
- Developer Edition의 모든 기능 포함 - AI CodeFix - 세부 프로젝트 건강 리포트- 향상된 인사이트 및 성능
- Enterprise Edition의 모든 기능 포함 - 요청 시 Autoscaling 지원 - 분산 환경 고성능 지원(High performance for distributed teams)
💡 SonarQube Cloud - SonarQube 서버를 별도로 설치 및 구성하지 않고, SonarQube Cloud를 활용한 ‘클라우드 기반형’을 의미합니다. - 동일하게 코드 품질 및 보안 검토를 자동화하고 실행 가능한 코드 인텔리전스를 제공하여 개발자가 더 나은 코드 개발에 집중하고 더 빠르게 작업할 수 있도록 지원합니다. - SonarQube IDE와 연결하여 코딩 정책을 준수하며 작업을 할 수 있습니다.
https://www.sonarsource.com/products/sonarcloud/
[더 알아보기] 💡 SonarQube의 LOC(Lines of Code, 코드 줄 수)는 어떻게 계산이 될까?
- LOC(Lines of Code, 코드 줄 수)의 경우는 ‘소스 코드에서 실제 로직이 담긴 코드 줄’을 의미합니다. 이는 ‘프로젝트 단위’로 LOC가 계산이 됩니다.
[예시 1] - 6K LOC의 프로젝트가 있다고 가정하는데, 한 달 동안 100번을 분석하는 경우 청구 금액은 6K로 계산이 됩니다.
[예시 2] - 10K LOC의 한계가 있다고 하면, 기간 동안 A 프로젝트에서 7K, B 프로젝트에서 3K를 사용할 수 있습니다. 그리고 모두 지우고 A, B, C에 각각 3K로 할당하여서 이용할 수 있습니다. 일종의 하드 디스크와 같은 개념입니다.
- LOC의 포함이 제외된 항목은 빈 줄은 LOC 계산에서 제외가 됩니다 주석은 LOC 계산에서 제외가 됩니다 프로젝트 설정 > 분석대상에서 제외한 파일에 대해서는 LOC 계산에서 제외할 수 있습니다.
https://www.sonarsource.com/ko/plans-and-pricing/
1.3. SonarQube IDE : SonarLint
💡 SonarQube IDE : SonarLint
- 구성한 SonarQube로 접속하여서 프로젝트 내에서 컴파일 시점에 문제를 확인할 수 있습니다. 이는 IDE툴 내의 마켓플레이스에서 다운로드를 하여서 바로 이용할 수 있는 무료 플러그인입니다. - SonarQube Server나 SonarQube Cloud에 구성된 SonarQube를 연결하여서 이용하는 구조입니다.
💡 아래와 같이, IDE 툴을 이용하는 중에 실시간으로 SonarQube의 취약점에 대해 보여줍니다.
- 정적 코드 분석을 이용하면 문제를 조기에 잠재적인 문제를 포착하고 스타일 일관성을 유지하며 코드 품질을 향상할 수 있습니다. - 예를 들어 파일을 닫는 것을 잊거나 새 변수를 잘못 지정한 경우, 정적 분석 도구는 문제가 발생하기 전에 이러한 문제를 플래그로 표시합니다.
2.2. 사용자 별로 커스텀 구성이 가능함.
💡 사용자 별로 커스텀 구성이 가능함.
- 정적 분석으로 단지 버그를 찾는 것이 아니라, 사용자가 의도한 대로 제품이나 조직이 성장함에 따라서 확장 가능한 코드 인프라를 만드는데 도움이 됩니다. - 또한 보안 취약점을 식별하고 규제 준수를 보장하며 맞지 않는 라이선스를 플래그로 표시하는 데 중요한 역할을 하므로 코드 품질과 법적 신뢰를 모두 보장하는 데 필수적입니다.
💡 아래와 같이 규칙으로 Rules를 정하여서 필요한 취약점 탐색을 취하고 불필요한 경우는 이를 제외할 수 있어서 사용자 별로 커스텀 환경을 이용할 수 있습니다.
2.3. 지속적인 통합(Continuous Integration)
💡 지속적인 통합(Continuous Integration)
- 정적 분석도구로 CI/CD 파이프라인에 직접 통합을 하면, 모든 커밋의 코딩 오류 표준을 자동으로 검사하게 되므로, 코드 품질을 높이고 유지관리하는데 도움을 줍니다.
2.4. 다양한 통합 플랫폼 & 언어 지원
💡 다양한 통합 플랫폼 & 언어 지원
- 다양한 CI/CD 통합 플랫폼을 지원하고, 다양한 언어에서 코드 품질을 평가할 수 있습니다. - Commuity 버전(무료)과 EnterPrice 버전(유료)에서 지원하는 언어들이 각각 다르기에 확인이 필요합니다.