InfoGrab DocsInfoGrab Docs

Advanced SAST Swift 및 Objective-C 구성

요약

GitLab Advanced SAST는 교차 파일, 교차 함수 오염 분석을 사용하여 Swift 및 Objective-C 코드를 분석하며, 이를 통해 GitLab Advanced SAST 커버리지를 iOS 애플리케이션까지 확장합니다.

히스토리

GitLab Advanced SAST는 교차 파일, 교차 함수 오염 분석을 사용하여 Swift 및 Objective-C 코드를 분석하며, 이를 통해 GitLab Advanced SAST 커버리지를 iOS 애플리케이션까지 확장합니다.

Swift 및 Objective-C 분석은 자체 컨테이너 이미지로 제공되는 별도의 CI/CD 잡인 gitlab-advanced-sast-ext로 실행됩니다. 추가 구성은 필요하지 않습니다. GitLab Advanced SAST가 켜져 있으면 리포지터리에 Swift(.swift), Objective-C(.m) 또는 Objective-C++(.mm) 파일이 포함된 경우 해당 잡이 실행됩니다.

GitLab Advanced SAST Swift 및 Objective-C 분석 켜기#

전제 조건:

Swift 및 Objective-C 분석은 지원되는 다른 언어와 동일한 활성화 변수를 사용합니다:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  GITLAB_ADVANCED_SAST_ENABLED: "true"

이 변수가 설정되어 있고 리포지터리에 Swift 또는 Objective-C 파일이 포함되어 있으면 GitLab은 파이프라인의 test 스테이지에 gitlab-advanced-sast-ext 잡을 추가합니다.

GitLab Advanced SAST Swift 및 Objective-C 분석 끄기#

다른 언어에 대해서는 GitLab Advanced SAST를 켠 상태로 유지하면서 Swift 및 Objective-C 분석만 끄려면 SAST_EXCLUDED_ANALYZERS 변수에 gitlab-advanced-sast-ext를 추가합니다:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  GITLAB_ADVANCED_SAST_ENABLED: "true"
  SAST_EXCLUDED_ANALYZERS: "gitlab-advanced-sast-ext"

Swift 및 Objective-C 분석을 포함하여 GitLab Advanced SAST를 완전히 끄려면 GITLAB_ADVANCED_SAST_ENABLED"false"로 설정합니다.

GITLAB_ADVANCED_SAST_ENABLED가 그룹 CI/CD 변수로 설정되어 있으면 프로젝트의 .gitlab-ci.yml 파일에 있는 값이 이를 재정의하지 않습니다. 그룹 변수를 재정의하려면 같은 이름의 프로젝트 CI/CD 변수를 정의합니다. 자세한 내용은 CI/CD 변수 우선순위를 참조하세요.

증분 스캔#

증분 스캔은 기본적으로 켜져 있습니다. 분석기는 파이프라인 실행 간에 오염 분석 저장소를 캐시한 다음, 코드가 변경되었거나 종속성이 변경된 파일만 다시 분석하고, 변경되지 않은 코드에 대해서는 캐시된 결과를 재사용합니다. 이를 통해 커밋 간에 대부분의 코드가 변경되지 않는 대규모 코드베이스에서 스캔 시간을 줄입니다.

다른 GitLab Advanced SAST 언어의 경우 이에 해당하는 기능은 증분 스캔이며, 기본적으로 꺼져 있고 서로 다른 CI/CD 변수로 구성합니다.

gitlab-advanced-sast-ext 잡은 잡의 cache:를 사용하여 파이프라인 간에 저장소를 이어가며, 기본 브랜치를 폴백으로 하여 브랜치를 키로 사용합니다.

캐시를 재사용하려면 러너가 이전 캐시에 액세스할 수 있어야 합니다. 인스턴스가 분산 캐싱 없이 여러 러너를 사용하는 경우, 저장소를 사용하지 못해 분석기가 전체 스캔을 수행할 수 있습니다.

증분 스캔 끄기#

증분 스캔을 끄고 실행할 때마다 모든 코드를 스캔하려면 GITLAB_ADVANCED_SAST_EXT_INCREMENTAL_ENABLED 변수를 "false"로 설정합니다:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  GITLAB_ADVANCED_SAST_ENABLED: "true"
  GITLAB_ADVANCED_SAST_EXT_INCREMENTAL_ENABLED: "false"

캐시 비활성화#

증분 스캔을 꺼도 cache:는 계속 활성화되어 있으므로 모든 파이프라인이 여전히 저장소를 업로드하고 다운로드합니다. 저장소가 준비된 상태로 유지되므로 증분 스캔을 다시 켜서 즉시 재사용할 수 있습니다.

모든 파이프라인에서 캐시 비용까지 제거하려면 빈 cache:로 잡을 재정의합니다:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  GITLAB_ADVANCED_SAST_ENABLED: "true"

gitlab-advanced-sast-ext:
  cache: []

캐시를 비활성화하면 모든 파이프라인이 전체 스캔을 실행하며 캐시 비용은 발생하지 않습니다. 그런 다음 증분 스캔을 다시 켜려면 저장소를 다시 준비하기 위해 한 번의 전체 스캔이 필요합니다.

취약점 커버리지#

분석기는 파일과 함수를 넘나들며 소스에서 취약한 싱크까지 신뢰할 수 없는 입력을 추적합니다. SQL 인젝션 및 민감한 정보의 평문 전송과 같은 일반적인 약점 유형 외에도, 다음을 포함한 iOS 전용 API와 데이터 흐름을 모델링합니다:

  • 신뢰할 수 없는 입력 소스로서의 딥 링크 및 사용자 지정 URL 스킴.

  • 키체인 항목 접근성 클래스.

  • UserDefaults, 페이스트보드, 로컬 파일에 대한 민감한 데이터 저장.

  • WebKit 및 UIWebView 콘텐츠 로딩.

분석기가 탐지하는 약점 유형의 전체 목록은 Swift 및 Objective-C CWE 커버리지를 참조하세요.

FIPS 파이프라인#

베타 기간 동안 Swift 및 Objective-C 분석에는 FIPS 지원 이미지를 사용할 수 없습니다. 다른 분석기와 마찬가지로 FIPS를 준수하는 이미지는 GitLab Advanced SAST와 Semgrep 기반 분석기에만 제공됩니다.

FIPS 지원 이미지를 사용하는 파이프라인에서는 gitlab-advanced-sast-ext 잡이 여전히 실행되지만, FIPS 지원 이미지를 가져올 수 없어 실패합니다. FIPS를 준수하는 방식으로 SAST를 사용하려면 Swift 및 Objective-C 분석을 끄세요.

알려진 문제#

베타 기간 동안 Swift 및 Objective-C 분석에는 다음과 같은 알려진 문제가 있습니다:

  • 오프라인 환경은 지원되지 않습니다.

  • 결과는 Semgrep 기반 SAST 분석기의 결과와 중복 제거되지 않습니다. 두 분석기가 Swift 또는 Objective-C 파일에서 동일한 취약점을 탐지하면 두 결과가 모두 보고됩니다.

  • 사용자 지정 룰셋은 지원되지 않습니다.

  • 차등 스캔은 지원되지 않습니다.

Advanced SAST Swift 및 Objective-C 구성

GitLab v19.3
Tier: Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기

요약

GitLab Advanced SAST는 교차 파일, 교차 함수 오염 분석을 사용하여 Swift 및 Objective-C 코드를 분석하며, 이를 통해 GitLab Advanced SAST 커버리지를 iOS 애플리케이션까지 확장합니다.

히스토리

GitLab Advanced SAST는 교차 파일, 교차 함수 오염 분석을 사용하여 Swift 및 Objective-C 코드를 분석하며, 이를 통해 GitLab Advanced SAST 커버리지를 iOS 애플리케이션까지 확장합니다.

Swift 및 Objective-C 분석은 자체 컨테이너 이미지로 제공되는 별도의 CI/CD 잡인 gitlab-advanced-sast-ext로 실행됩니다. 추가 구성은 필요하지 않습니다. GitLab Advanced SAST가 켜져 있으면 리포지터리에 Swift(.swift), Objective-C(.m) 또는 Objective-C++(.mm) 파일이 포함된 경우 해당 잡이 실행됩니다.

GitLab Advanced SAST Swift 및 Objective-C 분석 켜기#

전제 조건:

Swift 및 Objective-C 분석은 지원되는 다른 언어와 동일한 활성화 변수를 사용합니다:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  GITLAB_ADVANCED_SAST_ENABLED: "true"

이 변수가 설정되어 있고 리포지터리에 Swift 또는 Objective-C 파일이 포함되어 있으면 GitLab은 파이프라인의 test 스테이지에 gitlab-advanced-sast-ext 잡을 추가합니다.

GitLab Advanced SAST Swift 및 Objective-C 분석 끄기#

다른 언어에 대해서는 GitLab Advanced SAST를 켠 상태로 유지하면서 Swift 및 Objective-C 분석만 끄려면 SAST_EXCLUDED_ANALYZERS 변수에 gitlab-advanced-sast-ext를 추가합니다:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  GITLAB_ADVANCED_SAST_ENABLED: "true"
  SAST_EXCLUDED_ANALYZERS: "gitlab-advanced-sast-ext"

Swift 및 Objective-C 분석을 포함하여 GitLab Advanced SAST를 완전히 끄려면 GITLAB_ADVANCED_SAST_ENABLED"false"로 설정합니다.

GITLAB_ADVANCED_SAST_ENABLED가 그룹 CI/CD 변수로 설정되어 있으면 프로젝트의 .gitlab-ci.yml 파일에 있는 값이 이를 재정의하지 않습니다. 그룹 변수를 재정의하려면 같은 이름의 프로젝트 CI/CD 변수를 정의합니다. 자세한 내용은 CI/CD 변수 우선순위를 참조하세요.

증분 스캔#

증분 스캔은 기본적으로 켜져 있습니다. 분석기는 파이프라인 실행 간에 오염 분석 저장소를 캐시한 다음, 코드가 변경되었거나 종속성이 변경된 파일만 다시 분석하고, 변경되지 않은 코드에 대해서는 캐시된 결과를 재사용합니다. 이를 통해 커밋 간에 대부분의 코드가 변경되지 않는 대규모 코드베이스에서 스캔 시간을 줄입니다.

다른 GitLab Advanced SAST 언어의 경우 이에 해당하는 기능은 증분 스캔이며, 기본적으로 꺼져 있고 서로 다른 CI/CD 변수로 구성합니다.

gitlab-advanced-sast-ext 잡은 잡의 cache:를 사용하여 파이프라인 간에 저장소를 이어가며, 기본 브랜치를 폴백으로 하여 브랜치를 키로 사용합니다.

캐시를 재사용하려면 러너가 이전 캐시에 액세스할 수 있어야 합니다. 인스턴스가 분산 캐싱 없이 여러 러너를 사용하는 경우, 저장소를 사용하지 못해 분석기가 전체 스캔을 수행할 수 있습니다.

증분 스캔 끄기#

증분 스캔을 끄고 실행할 때마다 모든 코드를 스캔하려면 GITLAB_ADVANCED_SAST_EXT_INCREMENTAL_ENABLED 변수를 "false"로 설정합니다:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  GITLAB_ADVANCED_SAST_ENABLED: "true"
  GITLAB_ADVANCED_SAST_EXT_INCREMENTAL_ENABLED: "false"

캐시 비활성화#

증분 스캔을 꺼도 cache:는 계속 활성화되어 있으므로 모든 파이프라인이 여전히 저장소를 업로드하고 다운로드합니다. 저장소가 준비된 상태로 유지되므로 증분 스캔을 다시 켜서 즉시 재사용할 수 있습니다.

모든 파이프라인에서 캐시 비용까지 제거하려면 빈 cache:로 잡을 재정의합니다:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  GITLAB_ADVANCED_SAST_ENABLED: "true"

gitlab-advanced-sast-ext:
  cache: []

캐시를 비활성화하면 모든 파이프라인이 전체 스캔을 실행하며 캐시 비용은 발생하지 않습니다. 그런 다음 증분 스캔을 다시 켜려면 저장소를 다시 준비하기 위해 한 번의 전체 스캔이 필요합니다.

취약점 커버리지#

분석기는 파일과 함수를 넘나들며 소스에서 취약한 싱크까지 신뢰할 수 없는 입력을 추적합니다. SQL 인젝션 및 민감한 정보의 평문 전송과 같은 일반적인 약점 유형 외에도, 다음을 포함한 iOS 전용 API와 데이터 흐름을 모델링합니다:

  • 신뢰할 수 없는 입력 소스로서의 딥 링크 및 사용자 지정 URL 스킴.

  • 키체인 항목 접근성 클래스.

  • UserDefaults, 페이스트보드, 로컬 파일에 대한 민감한 데이터 저장.

  • WebKit 및 UIWebView 콘텐츠 로딩.

분석기가 탐지하는 약점 유형의 전체 목록은 Swift 및 Objective-C CWE 커버리지를 참조하세요.

FIPS 파이프라인#

베타 기간 동안 Swift 및 Objective-C 분석에는 FIPS 지원 이미지를 사용할 수 없습니다. 다른 분석기와 마찬가지로 FIPS를 준수하는 이미지는 GitLab Advanced SAST와 Semgrep 기반 분석기에만 제공됩니다.

FIPS 지원 이미지를 사용하는 파이프라인에서는 gitlab-advanced-sast-ext 잡이 여전히 실행되지만, FIPS 지원 이미지를 가져올 수 없어 실패합니다. FIPS를 준수하는 방식으로 SAST를 사용하려면 Swift 및 Objective-C 분석을 끄세요.

알려진 문제#

베타 기간 동안 Swift 및 Objective-C 분석에는 다음과 같은 알려진 문제가 있습니다:

  • 오프라인 환경은 지원되지 않습니다.

  • 결과는 Semgrep 기반 SAST 분석기의 결과와 중복 제거되지 않습니다. 두 분석기가 Swift 또는 Objective-C 파일에서 동일한 취약점을 탐지하면 두 결과가 모두 보고됩니다.

  • 사용자 지정 룰셋은 지원되지 않습니다.

  • 차등 스캔은 지원되지 않습니다.