Skip to content

fix(ci): explicit OWASP data.directory + disable irrelevant analyzers - #3

Merged
ahincho merged 2 commits into
mainfrom
fix/owasp-data-directory-analyzers
Jul 13, 2026
Merged

fix(ci): explicit OWASP data.directory + disable irrelevant analyzers#3
ahincho merged 2 commits into
mainfrom
fix/owasp-data-directory-analyzers

Conversation

@ahincho

@ahincho ahincho commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Qu\u00e9

Aplica la investigaci\u00f3n de performance de OWASP documentada en docs/java/06-semantic-versioning-en-java.md a este repo:

  1. data.directory expl\u00edcito apuntando a ~/.dependency-check-data, la ruta que ahora cachea/restaura reusable-owasp-check.yml (incluyendo el mirror NVD centralizado de nova-devops). El default impl\u00edcito del plugin nunca fue verificado/documentado.
  2. Analizadores irrelevantes deshabilitados (assembly/.NET, golang, swift, cocoapods, composer/PHP, cpan/Perl, cmake/autoconf, bundleAudit/rubygems, python, dart, retirejs) - cero p\u00e9rdida de detecci\u00f3n ya que ninguno de esos tipos de archivo existe en este repo. Node/nodeAudit se mantienen activos (package.json real con commitlint/lefthook).
  3. Nombres de propiedad verificados contra el jar del plugin 12.2.2 instalado localmente (javap), no asumidos de la documentaci\u00f3n.

Por qu\u00e9

OWASP estaba tomando 30-50+ min por PR. Causa ra\u00edz: el cache de GitHub Actions est\u00e1 scoped por rama/PR y nunca se compart\u00eda entre ramas nuevas, forzando un sync completo (~365k registros NVD) en cada PR. Fix completo (cache + mirror centralizado) vive en reusable-owasp-check.yml (nova-devops).

Validaci\u00f3n

  • Compila localmente (gradlew help) - verificado.
  • Sin cambios funcionales, solo configuraci\u00f3n de CI/OWASP.

ahincho added 2 commits July 12, 2026 21:33
- data.directory now points at the shared, build-tool-agnostic path
  (~/.dependency-check-data) that reusable-owasp-check.yml caches and
  restores the centralized nova-devops NVD mirror into. The plugin's
  implicit default was never verified/documented; previous cache sizes
  (15-57MB) strongly suggest it did not match what was being cached.
- Disabled analyzers for ecosystems that plainly do not exist in this
  repo (assembly/nuspec/nugetconf/msbuild/.NET, golang, swift, cocoapods,
  composer/PHP, cpan/Perl, cmake/autoconf, bundleAudit/rubygems, python,
  dart, retirejs) - zero detection-feature cost since none of these file
  types are present. Node/nodeAudit analyzers are NOT disabled (package.json
  is real - commitlint/lefthook devDependencies).
- Verified property names against the actually-installed 12.2.2 Gradle
  plugin jar (javap on AnalyzerExtension.class) rather than assumed from
  docs - e.g. carthageAnalyzerEnabled does not exist in this version.

See docs/java/06-semantic-versioning-en-java.md for the investigation
into why OWASP scans were taking 30-50+ min.
End-to-end validation confirmed the same 4 CVEs affect all Nova libraries
that use the shared Gradle plugin set (jgit/grgit transitives):

- CVE-2026-54428 (7.5) and CVE-2026-54399 (7.5) - DoS in httpcore/httpcore5
- CVE-2025-67030 (8.8) - RCE in plexus-utils
- CVE-2025-48734 (8.8) - RCE in commons-beanutils

Two layers of fix (same as mask-utils commit f133fa2):

1. scanConfigurations = [compileClasspath, runtimeClasspath]
   Restricts analysis to what propagates to consumers.

2. resolutionStrategy.eachDependency constraints
   Patches the vulnerable deps to their CVE-free minimums.

Verified locally: 'gradlew dependencyCheckAnalyze' reports 0 vulnerabilities.
@ahincho
ahincho merged commit 19a3656 into main Jul 13, 2026
7 checks passed
@ahincho
ahincho deleted the fix/owasp-data-directory-analyzers branch July 13, 2026 15:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant