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
/specsthat 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