Scanner: parche acotado de source-map-js — noche del 19 octubre 2026¶
Preparado localmente para revisión del coordinador. Sin commit/push, despliegue, recreación, pull de imágenes ni ejecución de scanner/hunter/limpiadores. La lectura remota se limita a inspect con campos seleccionados, hashes, metadatos Git y comprobaciones de archivos del contenedor. No se consultaron ni activaron API de descargas, TV, Put.io o ARR.
Cambio y fuente primaria¶
Dependabot33 apunta a
homelab-stacks/custom/plundrio/upstream/scanner/frontend/package-lock.json.
Se sustituyen únicamente version, resolved e integrity de
node_modules/source-map-js: 1.2.1 → 1.2.2. package.json y todos los demás
bloques del lock permanecen idénticos, comprobado comparando JSON completo con
HEAD. Las dependencias actuales de Vue compiler y PostCSS admiten ^1.2.1;
1.2.2 satisface esos rangos sin overrides ni nuevas dependencias directas.
Advisory GHSA-68fv-2mgg-jv7q identifica versiones >=1.0.0 y <1.2.2, con denegación de servicio al procesar source maps indexados maliciosos. El mantenedor documenta la corrección en release1.2.2 y PR79. URL de tarball e integrity se obtuvieron del registro oficial1.2.2, sin construir manualmente el hash de integridad del paquete.
Fuente frente a runtime¶
Checkout local stacks: master, HEAD inicial 6b4f72d; limpio antes del cambio.
Checkout de VM208: HEAD <REDACTED>, sin cambios
locales bajo custom/plundrio. No se resetea ni actualiza ese checkout.
El scanner activo usa media-plundrio-scanner:cleanup-20260911, imagen
sha256:<REDACTED>.
Su Compose construye desde /home/monxas/plundrio-review-20260911 y el Dockerfile
custom hereda media-plundrio-scanner:before-polish-20260911, copiando solo
scanner.py→/app/app.py y arrapi.py→/app/plundrio_shared/arrapi.py. Reconstruir ese
Dockerfile no reconstruye el frontend de upstream ni aplica este lock.
El Dockerfile upstream separa compilación Node de imagen Python final y copia solo static al runtime. En el contenedor observado no existe comando node, no hay /app/node_modules y no se encontraron node_modules bajo /app (profundidad3), ni archivos .map en static. Los tres archivos estáticos producidos con el lock parcheado son idénticos byte a byte al build baseline y a los tres del contenedor. Esto sustenta que el módulo afectado pertenece al flujo de compilación observado; no demuestra inexistencia de otras vulnerabilidades en la imagen completa. No es necesario recrear el scanner activo para publicar este arreglo de fuente. No se ha construido imagen nueva: hacerlo con upstream sin integrar el custom app.py perdería las protecciones de cleanup, journals e idempotencia.
Hashes local, contexto real de build remoto y código dentro del contenedor coinciden:
- scanner.py/app.py:
<REDACTED>. - arrapi.py:
<REDACTED>. - Dockerfile custom (local/contexto remoto):
<REDACTED>.
Lock previo local y remoto:
<REDACTED>.
Lock corregido:
<REDACTED>.
Validación real y límites¶
Instalación y build realizados en un directorio temporal aislado, con Node26.9.0, npm11.19.1, Vue3.5.26 y Vite5.4.21. No se usó el Node20 del Dockerfile ni se construyó una imagen completa; el build Linux/Node20 queda fuera de esta prueba.
npm ci --ignore-scripts --no-audit --no-fund: correcto,31paquetes.npm run build: correcto,10módulos, HTML/CSS/JS generados.npm ls source-map-js: una única1.2.2 deduplicada, usada por PostCSS y Vue compiler.- Build baseline con lock original y build corregido: los tres archivos son idénticos byte a byte. El segundo build usa salida separada para comparar.
- Comprobación local del paquete parcheado: un indexed section offset.line=1e8 se rechaza con excepción; no se ejecuta la prueba contra la versión vulnerable.
- Pruebas existentes de seguridad/reintentos del scanner: 35 pasan, con HTTP de prueba únicamente en127.0.0.1 y filesystem sintético. La primera ejecución falló al importar requests ausente en Python local; se creó venv temporal con requests y se repitió toda la suite correctamente, sin cambiar el sistema.
git diff --check: correcto; único cambio stacks: tres líneas del lock.
Hashes estáticos comunes a baseline, build corregido y runtime:
| Archivo | SHA256 |
|---|---|
| index.html | <REDACTED> |
| assets/index-LWl0UuAA.js | <REDACTED> |
| assets/index-qMvYT-TO.css | <REDACTED> |
npm audit --package-lock-only --json ya no contiene source-map-js. No pasa
el audit completo: reporta8paquetes,6high y2moderate; nombres: @vitejs/plugin-vue,
@vue/server-renderer, esbuild, nanoid, postcss, rollup, vite y vue. No se han
actualizado esos paquetes. Algunas correcciones propuestas por npm implican
major de Vite/plugin y requieren otro cambio revisado. Son resultados del audit
consultado, no evidencia de explotación ni alcance en este runtime estático.
No se ejecutó audit fix.
Siguiente paso del coordinador¶
Revisar el diff de tres líneas, incorporar únicamente el lock y este informe a master/main respectivos y publicar sin tocar el contenedor. Confirmar después que Dependabot33 se cierra contra la rama por defecto. Si se decide reconstruir frontend/imagen posteriormente, integrar desde fuentes custom actuales y repetir los35tests; no sustituir scanner.py por upstream ni ejecutar cleanup como smoke test. Este trabajo no autoriza recreación de los servicios de descargas.
Fuente separada plundrio-ecosystem: Rollup, 22 octubre¶
La PR14 de monxas/plundrio-ecosystem
se integró a las 20:37:10 UTC como main
<REDACTED>. Es un repositorio distinto del
checkout de homelab-stacks y del ~/Dev/plundrio de paulirish; ambos se
conservaron intactos. No se atribuye esta actualización al runtime custom
descrito arriba.
Sólo cambia scanner/frontend/package-lock.json: Rollup 4.63.3 → 4.63.5 y sus
paquetes opcionales de plataforma, 26 entradas en total. La comparación JSON
completa confirma que sólo cambian version, resolved, integrity y las referencias
de optionalDependencies de Rollup; package.json y los demás paquetes permanecen
idénticos. Las descargas siguen apuntando al registro npm. El
changelog oficial
describe correcciones de lifecycle/watch y ejecuciones solapadas; no se presenta
como un arreglo de fallo observado en la aplicación productiva.
Validación aislada en Mac: Node 26.9.0 y npm 11.19.1, npm ci --ignore-scripts
--no-audit --no-fund correcto (31 paquetes) y npm run build correcto con Vite
5.4.21. Un preload de Node bloqueaba net.Socket.connect y dgram.Socket.send;
no era un firewall para los subprocesos nativos. No se abrió un navegador o
devserver ni se consultaron proveedores. Resolución comprobada:
Rollup 4.63.5 y esbuild 0.21.5. Lock antes/después y en main idéntico, SHA256
<REDACTED>.
No hay checks GitHub ni workflows de build/publicación en la fuente de este repositorio; no se omitió una CI existente. La automatización externa no se ha acreditado. Node 26 satisface el rango de Vite, pero la imagen del Dockerfile usa Node 20-alpine: no se ha probado una compilación Linux con esa imagen. Tampoco se ejecutó un audit completo, se publicó una imagen o se desplegó Scanner/Hunter. Su transición de runtime permanece separada; no se actualizó el checkout de producción ni se recrearon procesos con trabajo en vuelo.
Recibo local plundrio-rollup14-validation-9e4vo239/proof.json, SHA256
<REDACTED>.
Artefactos, node_modules y caché privados de esta prueba retirados después;
worktree de fuente limpio y recibo original conservado. Limpieza registrada
por separado en cleanup.json, SHA256
<REDACTED>.