Fortify SCA는 무엇이며 어떻게 설치합니까?

Fortify 정적 코드 분석기(SCA)는 프로그램 코드를 면밀히 검토하여 보안상의 허점을 찾아내고, 그 원인을 정확하게 파악하는 데 도움을 줍니다.

Fortify 스캔은 발견된 문제 중 가장 심각한 것부터 우선순위를 정하고, 개발자가 각 문제에 대한 해결책을 찾도록 안내합니다.

강화된 정적 코드 분석 도구

Fortify Static Code Analyzer는 버퍼, 콘텐츠, 제어 흐름, 데이터 흐름, 의미, 구성 및 구조 분석 등 다양한 취약점 분석 기능을 제공합니다. 각 분석기는 고유한 규칙 세트를 적용하여, 수행되는 분석 유형에 필요한 정보를 정확히 파악합니다.

Fortify Static Code Analyzer는 다음과 같은 구성 요소로 이루어져 있습니다.

  • 강화된 스캔 마법사: 분석 전후에 스크립트를 실행할 수 있는 기능을 제공하는 도구입니다.
  • 감사 작업대: 분석 결과를 체계적으로 정리하고 관리할 수 있는 GUI 기반의 응용 프로그램입니다.
  • 사용자 지정 규칙 편집기: 개발자가 분석을 위해 자신만의 규칙을 만들고 편집할 수 있는 도구입니다.
  • IntelliJ 및 Android Studio용 플러그인: IDE 환경 내에서 분석 결과를 직접 확인할 수 있는 플러그인입니다.
  • Eclipse용 플러그인: Eclipse IDE와 통합되어 개발 환경 내에서 결과를 편리하게 확인할 수 있도록 해줍니다.
  • Bamboo 플러그인: Bamboo 작업에서 실행된 분석 결과를 수집하는 플러그인입니다.
  • Jenkins 플러그인: Jenkins 작업에서 분석 결과를 모아주는 플러그인입니다.

Fortify SCA의 주요 기능

#1. 다양한 프로그래밍 언어 지원

Fortify SCA는 ABAP/BSP, ActionScript, ASP(VBScript 포함), COBOL, ColdFusion, Apex, ASP.NET, C#(.NET), C/C++, Classic, VB.NET, VBScript, CFML, Go, HTML, Java(Android 포함), JavaScript/AJAX, JSP, Kotlin, Visual Basic, MXML(Flex), Objective C/C++, PHP, PL/SQL, Python, Ruby, Swift, T-SQL, XML 등 여러 언어를 지원합니다.

#2. 유연한 배포 옵션

  • Fortify On-Premise: 조직이 Fortify SCA의 모든 측면을 완벽하게 제어할 수 있는 환경을 제공합니다.
  • Fortify On Demand: 개발자가 SaaS(Software as a Service) 환경에서 작업할 수 있도록 지원합니다.
  • Fortify Hosted: 온디맨드와 온프레미스 환경의 장점을 결합하여, 개발자가 완전한 데이터 제어가 가능한 격리된 가상 환경에서 작업할 수 있게 해줍니다.

#3. CI/CD 도구와의 간편한 통합

  • 주요 IDE와의 통합: Fortify SCA는 Visual Studio, Eclipse와 같은 주요 IDE와 쉽게 통합됩니다.
  • 오픈 소스 도구 통합: Sonatype, WhiteSource, Snyk, BlackDuck과 같은 오픈 소스 도구와 통합되어 개발자가 다양한 작업을 관리할 수 있습니다.
  • 원격 코드 저장소 통합: Bitbucket, GitHub와 같은 원격 코드 저장소와도 Fortify SCA를 통합할 수 있어, 코드 푸시 시 취약점을 검사하고 보고서를 생성할 수 있습니다.

#4. 실시간 알림

Fortify SCA는 코드 작성 중에도 실시간으로 업데이트를 제공하므로, 코드 작성이 끝날 때까지 테스트를 기다릴 필요가 없습니다. 이 도구는 속도와 효율성을 위해 특별히 설계된 구성 및 구조 분석기를 포함하고 있으며, 보안에 강한 응용 프로그램을 만드는 데 도움이 됩니다.

#5. 머신 러닝 기반 감사 도우미

머신 러닝 알고리즘을 기반으로 하는 감사 도우미는 시스템 감사를 더욱 빠르게 처리할 수 있도록 돕습니다. 이 도우미는 모든 취약점을 식별하고, 신뢰 수준에 따라 우선순위를 지정하여, 조직이 보고서 생성 시 감사 비용을 절감할 수 있도록 지원합니다.

#6. 유연성

사용자는 필요에 따라 수행할 검사 유형을 선택할 수 있습니다. 예를 들어, 더 정확하고 상세한 검사를 원할 경우, 종합 스캔 옵션을 선택할 수 있습니다. 반대로 주요 위협만 빠르게 감지하고 싶다면 빠른 검색 옵션을 선택할 수 있습니다.

Fortify SCA의 역할

Fortify SCA는 일반적인 개발 환경에서 다양한 역할을 수행합니다. 몇 가지 주요 역할은 다음과 같습니다.

정적 테스트를 통한 코드 품질 향상

SAST(Static Application Security Testing)는 개발 초기 단계에서 보안 취약점을 식별하는 데 중요한 역할을 합니다. 개발 초기에 발견된 보안 문제는 비교적 낮은 비용으로 수정할 수 있습니다.

이러한 접근 방식은 개발 과정에서 코드에 발생한 문제에 대한 즉각적인 피드백을 제공하여, 애플리케이션의 보안 위험을 줄입니다.

또한 개발자는 정적 애플리케이션 보안 테스트를 통해 보안 지식을 습득하고, 안전한 소프트웨어 개발을 시작할 수 있게 됩니다.

Fortify SCA는 광범위한 보안 코딩 규칙과 다양한 알고리즘을 기반으로 소프트웨어 응용 프로그램의 소스 코드에서 보안 취약점을 분석합니다. 데이터 및 실행 경로를 분석하여 취약점을 찾아내고 해결책을 제시합니다.

보안 문제 조기 발견

Fortify SCA는 컴파일러와 유사한 방식으로 작동합니다. 스캔 후 소스 코드 파일을 읽고, 보안 분석을 위해 중간 구조로 변환합니다.

이 중간 형식에서 모든 보안 취약점을 쉽게 찾아낼 수 있습니다. 또한 보안 코딩 규칙에 따라 코드가 보안 코딩 모범 사례를 따르는지 분석하는 전문 분석 엔진을 제공합니다.

Fortify SCA는 정적 분석 기능을 확장하고 사용자 정의 규칙을 포함하려는 경우, 규칙 빌더를 함께 제공합니다. 설정 결과는 작업 및 대상에 따라 다양한 형식으로 확인할 수 있습니다.

Fortify Software Security Center (SSC)를 통한 결과 관리

Fortify Software Security Center (SSC)는 조직 전체의 애플리케이션 보안 프로그램에 대한 가시성을 제공하는 중앙 관리 저장소입니다. SSC를 통해 사용자는 보안 위협이 식별되면, 문제 해결 노력을 감사, 검토, 우선 순위 지정 및 관리할 수 있습니다.

Fortify SSC는 조직의 애플리케이션 보안 상태에 대한 정확한 범위와 그림을 제공합니다. SSC는 중앙 서버에 상주하며, 실시간, 동적, 정적 분석 등 다양한 애플리케이션 보안 테스트 활동의 결과를 수집합니다.

Fortify SCA에서 제공하는 코드 분석 유형

Fortify 스캔은 코드 분석을 수행할 때 다양한 보안 취약점 영역을 고려합니다. 다음은 Fortify SCA가 제공하는 분석 유형입니다.

  • 입력 유효성 검사 및 표현: 입력 유효성 검사 및 표현과 관련된 문제는 대체 인코딩, 숫자 표현 및 메타 문자에서 발생합니다. 이러한 문제의 예로는 사용자의 입력을 신뢰할 때 발생하는 “버퍼 오버플로”, “교차 사이트 스크립팅(XSS)” 공격 및 “SQL 주입”이 있습니다.
  • API 남용: API 계약을 따르지 않는 호출은 API 남용의 가장 일반적인 예입니다.
  • 보안 기능: 이 테스트는 소프트웨어 보안과 보안 소프트웨어를 구분합니다. 인증, 권한 관리, 액세스 제어, 기밀성 및 암호화 문제를 집중적으로 분석합니다.
  • 시간 및 상태: 컴퓨터는 여러 작업 간에 매우 빠르게 전환할 수 있습니다. 시간 및 상태 분석은 스레드, 정보, 프로세스 및 시간 간의 예기치 않은 상호 작용으로 인해 발생하는 오류를 감지합니다.
  • 오류: Fortify SCA는 오류 메시지가 잠재적인 공격자에게 너무 많은 정보를 제공하는지 확인합니다.
  • 코드 품질: 코드 품질이 좋지 않으면 예측할 수 없는 동작이 발생할 수 있습니다. 공격자는 잘못 작성된 코드를 발견하면 이를 악용하여 응용 프로그램을 조작할 수 있습니다.
  • 캡슐화: 이것은 데이터를 격리하고 보호하는 과정입니다. 이 분석은 검증된 데이터와 검증되지 않은 데이터를 구분하는 데 초점을 맞춥니다.

Fortify SCA 다운로드 및 설치

설치 프로세스를 시작하기 전에 다음 단계를 따라야 합니다.

  • 공식 문서에서 시스템 요구 사항을 확인합니다.
  • Fortify 라이선스 파일을 확보합니다. Microfocus 다운로드 페이지에서 패키지를 선택합니다. Fortify Static Code Analyzer를 검색하고 계정을 생성하여 Fortify 라이선스 파일을 받습니다.

  • Visual Studio Code가 설치되어 있거나, 지원되는 다른 코드 편집기가 있는지 확인합니다.

Windows 환경에 설치하는 방법

Fortify_SCA_and_Apps_<version>_windows_x64.exe

참고: <version>은 소프트웨어 릴리스 버전을 나타냅니다.

  • 사용권 계약에 동의한 후 “다음”을 클릭합니다.
  • Fortify Static Code Analyzer를 설치할 위치를 선택하고 “다음”을 클릭합니다.
  • 설치할 구성 요소를 선택하고 “다음”을 클릭합니다.
  • Visual Studio 2015 또는 2017용 확장을 설치하는 경우 사용자를 지정합니다.
  • fortify.license 파일의 경로를 지정한 후 “다음”을 클릭합니다.
  • 보안 콘텐츠를 업데이트하는 데 필요한 설정을 지정합니다. URL을 https://update.fortify.com으로 지정하여 Fortify Rulepack 업데이트 서버를 사용할 수 있습니다. “다음”을 클릭합니다.
  • 샘플 소스 코드를 설치할지 여부를 선택합니다. “다음”을 클릭합니다.
  • “다음”을 클릭하여 Fortify SCA 및 애플리케이션을 설치합니다.
  • 설치 후 보안 콘텐츠 업데이트를 클릭하고 설치가 완료되면 “마침”을 클릭합니다.

Linux 환경에 설치하는 방법

Linux 기반 시스템에서도 동일한 단계를 따라 Fortify SCA를 설치할 수 있습니다. 하지만 첫 번째 단계에서는 설치 프로그램 파일을 실행해야 합니다.

Fortify_SCA_and_Apps__linux_x64.run

또는 명령줄 프롬프트를 사용하여 Fortify SCA를 설치할 수 있습니다.

터미널을 열고 다음 명령을 실행합니다.

./Fortify_SCA_and_Apps__linux_x64.run --mode text

설치 프로세스를 완료할 때까지 명령줄에 표시되는 지시에 따라 모든 프롬프트를 따릅니다.

Fortify 스캔 실행 방법

설치가 완료되면 보안 분석을 위한 도구를 설정해야 합니다.

  • 설치 디렉터리로 이동하여 명령 프롬프트를 사용해 bin 폴더로 이동합니다.
  • scapostinstall을 입력합니다. 그런 다음 s를 입력하여 설정을 표시할 수 있습니다.
  • 다음 명령을 사용하여 로케일을 설정합니다.

2를 입력하여 설정을 선택합니다.

1을 입력하여 일반을 선택합니다.

1을 입력하여 로케일을 선택합니다.

언어 설정에 English: en을 입력하여 언어를 영어로 설정합니다.

  • 보안 콘텐츠 업데이트를 구성합니다. 2를 입력하여 설정을 선택한 다음, 2를 다시 입력하여 Fortify Update를 선택합니다. 이제 URL을 https://update.fortify.com으로 지정하여 Fortify Rulepack 업데이트 서버를 사용할 수 있습니다.
  • 도구가 완전히 설치되었는지 확인하려면 sourceanalyzer를 입력합니다.

이제 Fortify SCA가 백그라운드에서 실행되며 모든 코드에서 보안 취약점을 확인합니다.

마무리

인터넷 시대에 시스템 해킹과 데이터 유출 사례가 빈번하게 발생하고 있습니다. Fortify Static Code Analyzer와 같은 도구는 코드 작성 시 보안 위협을 감지하고 경고를 보내며, 이러한 위협에 대한 대처 방법을 제시합니다. 다른 도구와 함께 사용할 경우, Fortify SCA는 생산성을 높이고 운영 비용을 절감하는 데 큰 도움을 줄 수 있습니다.

또한 SCA(Software Composition Analysis)를 통해 애플리케이션 보안을 향상시킬 수 있습니다.