Secure testing gap analysis map
This issue shall map features present in Secure against current testing resources.
Any gaps should arise and be raised/triaged for action accordingly.
For the purposes of this ticket, the following are defined:
-
Unit test, typically under
/specs
, testing code functions -
Integration test could either be tests under
/specs
that test the integration of functions, or tests of projects under the Security Test projects https://gitlab.com/gitlab-org/security-products/tests/ -
E2E test - typically UI driven and live under https://gitlab.com/gitlab-org/gitlab/-/tree/master/qa/qa/specs/features/ee/browser_ui/secure
Scanners
Scanner | Unit test | Integration test | E2E test |
---|---|---|---|
Container Scanning - PROTECT STAGE | |||
Threat Monitoring | |||
Dependency Scanning |
Threat Monitoring
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Container Network Policy |
|
Dependency Scanning
Feature | Unit test (see matching language/framework in dir) | Integration test (see *-qa jobs in linked ci files) | E2E test |
---|---|---|---|
Ruby Bundler |
|
|
|
PHP Composer |
|
|
|
C Conan |
|
|
|
C++ Conan |
|
|
|
Go Golang |
|
|
|
Maven |
|
|
|
Gradle |
|
|
|
SBT |
|
|
|
Javascript NPM |
|
|
|
.NET nuget |
|
|
|
Javascript Yarn |
|
|
|
C# nuget |
|
|
|
Python setuptools | |||
Python pip gitlab-org/quality/testcases#1091 (closed) |
|
|
|
Python pipenv gitlab-org/quality/testcases#1091 (closed) |
|
|
|
Python poetry gitlab-org/gitlab#7006 (closed) |
|
|
|
Maven (test building java 8 to 14) |
|
||
Gradle (test building java 8 to 14) |
|
||
Scala SBT (test building java 8 to 14) |
|
||
Javascript NPM using retire.js scanner |
|
||
Ruby Bundler using bundler-audit scanner |
|
||
Environment Variables gitlab-org/gitlab#294208 (closed) , gitlab-org/gitlab#294207 (closed) | |||
Omnibus (GitLab only) with gitlab-depscan |
|
||
Offline java projects (mvn, gradle, scala) |
offline-FREEZE branch in java-maven , java-gradle , scala-sbt test projects) |
||
Offline python projects (pip, pipenv, setuptools |
offline-FREEZE branch in python-pip , python-pipenv test projects) |
||
Offline js project (npm, yarn) |
offline-FREEZE branch in js-npm , js-yarn test projects) |
||
Offline ruby project (bundler) |
offline-FREEZE branch in rub-bundler test project) |
||
Private mvn repo | |||
Private pypi repo | |||
Private npm repo | |||
Private gem repo | |||
Remediation |
|
||
Enable within the UI ( gitlab-org/gitlab#284108 (closed) ) |
|
||
Use a different stage (instead of default "test") |
Dependency List
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Project level list |
|
frontend: |
|
Click arrow to view dependencies |
|
frontend: |
|
Dependency Paths |
|
frontend: |
|
Licenses are shown in same list |
|
frontend: |
|
Empty state UI |
|
frontend: |
gitlab-org/quality/testcases#1128 (closed) |
Vulnerablities related to dependency |
|
backend: |
SAST
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Project level list | |||
.NET Core | |||
.NET Framework | |||
Apex Salesforce | |||
C/C++ | |||
Elixir | |||
Go | |||
Groovy Ant | |||
Groovy Gradle | |||
Groovy Maven | |||
Groovy SBT | |||
Helm Charts | |||
Java Ant | |||
Java Gradle | |||
Java Maven | |||
Java SBT | |||
Java Android | |||
JS | |||
Kotlin Android | |||
K8s manifests | |||
NodeJS | |||
ObjectiveC iOS | |||
PHP | |||
Python PIP | |||
React | |||
Ruby on Rails | |||
Scala Ant | |||
Scala Gradle | |||
Scala Maven | |||
Scala SBT | |||
Swift iOS | |||
Typescript | |||
Tier support (CE/Core vs EE/Ultimate) | |||
Environment variables | |||
Kubesec | |||
Offline | |||
bandit | |||
brakeman | |||
eslint | |||
flawfinder | |||
gosec | |||
kubesec | |||
mobsf | |||
nodejs-scan | |||
phpcs-security-audit | |||
pmd-apex | |||
security-code-scan | |||
Enable via UI |
|
|
|
Use a different stage (instead of default "test") | |||
False positives https://gitlab.com/gitlab-org/gitlab/-/issues/292686 |
|
Secret Detection
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Gitleaks ruleset https://docs.gitlab.com/ee/user/application_security/secret_detection/#supported-secrets | |||
Environment variables including Full History Secret Scan | |||
Custom ruleset | |||
Offline | |||
Use a different stage (instead of default "test") |
Auto Remediation
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Create remediation MR |
|
||
Show solutions in Vulnerability report | Frontend: UI-heavy component, covered by the integration tests; backend |
|
|
Settings |
|
|
|
Available MRs in Project Security Dashboard header |
|
|
DAST
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Project level View details of a DAST vulnerability | |||
Environment Variables | |||
Full / API / URL scans | |||
DAST on demand scans |
|
gitlab-org/quality/testcases#1122 | |
DAST profiles |
|
gitlab-org/quality/testcases#1122 | |
Use a different stage (instead of default "dast") |
API Fuzzing
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Fuzzing scan | |||
OpenAPI | |||
HTTP Archive | |||
Postman | |||
Environment Variables | |||
Overrides | |||
Header fuzzing | |||
Turn off a check/assertion | |||
Offline | |||
Vulnerability MR widget |
|
||
Vulnerability Detail Page |
|
||
Pipeline Security Tab |
|
||
Security Dashboard |
|
||
Artifacts Download |
|
||
Artifacts | |||
Use a different stage (instead of default "fuzz") |
Coverage fuzz testing
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
C/C++ | |||
GoLang | |||
Swift | |||
Rust | |||
Java JQF | |||
Java javafuzz | |||
Full fuzz | |||
Regression fuzz | |||
Environment variables | |||
Offline | |||
Continuous Fuzzing | |||
Vulnerability MR widget |
|
||
Vulnerability Detail Page |
|
||
Security Dashboard |
|
||
Pipeline Security Tab |
|
||
Fuzzing artifacts |
|
||
Artifacts | |||
Use a different stage (instead of default "fuzz") |
License Compliance
License Compliance
Dashboards / UI driven
Other?
Feature
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
CI YAML templates present/not? | |||
CI for MRs | |||
Autodevops | |||
Feature flag enable/disable MR security widget | frontend specs | ||
Change vulnerability status |
Schemas
https://gitlab.com/gitlab-org/security-products/security-report-schemas/
Likely E2E candidates:
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Test against minimal fields returned | |||
Test against all possible fields returned |
Dashboard
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Dismiss vulnerability | |||
Create issue | |||
Automatic Remediation |
Offline
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Private Maven repo | |||
Fuzzing |
Out of Scope (Protect Stage)
Container Scanning
Feature | Unit test | Integration test | E2E test |
---|---|---|---|
Environment variables | |||
Vulnerability allowlisting | |||
Offline |
Edited by Will Meek