Skip to content

fix(security): escribir las tres guardas de #725 en la forma que CodeQL modela - #737

Merged
beyondnetPeru merged 1 commit into
developfrom
security/codeql-recognized-guards
Sep 19, 2026
Merged

beyondnetPeru merged 1 commit into
developfrom
security/codeql-recognized-guards

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Seguimiento de #725. La corrida de CodeQL sobre main (50121746) cerró 20 de 37 alertas; quedaron 9 js/path-injection y 1 js/prototype-pollution-utility porque el motor no reconoce la forma de las guardas, no porque falte contención:

  • resolveLegacyPath: path.resolve + un solo startsWith(root + sep) — la forma exacta de resolve() en el mismo fichero, que sí pasa. Deja de admitir el propio root como satélite (no lo es).
  • InitializeProjectUseCase: además del regex, includes('..') y path.isAbsolute sobre una sola variable (los dos guards que TaintedPath modela).
  • evolith-config-set: comparación literal con __proto__/constructor/prototype sobre el segmento escrito; import sin uso fuera (cierra el unused-local-variable nuevo).

Sin cambio de comportamiento; 56 tests verdes en los tres sitios, tsc -b limpio. Las 7 de Scorecard Token-Permissions se cierran en su scan semanal.

🤖 Generated with Claude Code

…QL modela

La corrida de CodeQL sobre main (5012174) cerró 20 de las 37 alertas de #725 y dejó
abiertas 9 js/path-injection y 1 js/prototype-pollution-utility: la contención es
real pero el motor no la reconocía como sanitizador.

- `resolveLegacyPath`: `path.resolve` + UN `startsWith(root + sep)`, la misma forma
  que `resolve()` en el mismo fichero (que sí pasa); la condición compuesta
  `resolved !== root && …` no se modela. El root no es un satélite, nada se pierde.
- `InitializeProjectUseCase`: el nombre pasa a una sola variable y, además del regex,
  se comprueban `includes('..')` y `path.isAbsolute` — los dos guards que TaintedPath
  modela; el regex solo no cuenta como barrera.
- `evolith-config-set`: la comparación literal con `__proto__`/`constructor`/`prototype`
  se hace sobre el segmento que se escribe (un Set en otra función no se modela);
  se quita el import sin uso de `sanitizePathInput`.

Sin cambio de comportamiento: los mismos 56 tests de los tres sitios siguen verdes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner September 19, 2026 11:38
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

Copy link
Copy Markdown
Contributor

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 0
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 527
Total ES files 497
Paired files 0
Coverage 0%

✅ Good: All EN changes have ES counterparts.


Generated by GitHub Actions

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