v1.4.1 — Release de seguridad
Security
- Un listado de terceros (mcp-marketplace.io) marcó el paquete con "Use Caution" señalando path traversal en descargas y falta de confirmación al enviar. A partir de ahí, una auditoría propia encontró y cerró además una fuga de sesión más seria:
- El cliente HTTP mandaba la cookie de sesión y el token XSRF del estudiante como headers por defecto, y los seguía enviando aunque la URL de la petición fuera absoluta y apuntara a otro host.
blackboard_raw_api,blackboard_download_file_url,blackboard_download_attachmenty el comandocampus apipodían ser inducidos (por ejemplo, contenido de un curso con instrucciones ocultas para el agente) a mandar la sesión completa a un servidor externo. Ahora cualquier URL absoluta se valida contra el host real de Blackboard antes de salir — la comprobación vive en un solo lugar central, no repetida por cada tool. - Path traversal (CWE-22) en las descargas: un nombre de archivo con
../que Blackboard reportara ya no puede escribir fuera de la carpeta de destino. blackboard_submit_attemptyblackboard_upload_attempt_fileahora exigen una confirmación explícita (confirmed: true) que el propio protocolo MCP valida, en vez de depender solo de que el agente obedezca la instrucción del prompt — cierra la puerta a que contenido malicioso de un curso empuje una entrega o una subida de archivo local sin que el estudiante la vea antes.blackboard_list_peopleya no devuelve el email de un compañero de curso al buscarlo por nombre; solo lo hacía en la vista general, así que la búsqueda quedaba como excepción.- 8 vulnerabilidades de dependencias resueltas (
npm audit fix, sin romper compatibilidad).
Added
Dockerfilepara los verificadores de directorios MCP. Glama y similares arrancan el servidor y le pidentools/list; la imagen no descarga el navegador de Playwright porque el login real ocurre en la máquina del estudiante, no en un contenedor.
Fixed
- El servidor MCP anunciaba
version: 1.0.0en el handshake, escrita a mano y congelada desde entonces. Ahora sale delpackage.json, así que cada cliente y cada directorio ve la versión real.
PR: #16
npm: https://www.npmjs.com/package/campus-cli/v/1.4.1