Elena Digital López

Protegiendo VS Code Contra Inyecciones de Comandos

La extensión Copilot Chat para Visual Studio Code ha experimentado una rápida evolución en los últimos meses, incorporando una amplia gama de nuevas funcionalidades. Entre sus novedades, destaca un modo de agente que permite utilizar múltiples modelos de lenguaje, herramientas integradas y servidores MCP para escribir código, realizar solicitudes de confirmación de cambios e integrarse con sistemas externos. Esta flexibilidad permite a los usuarios personalizar las herramientas y servidores que desean utilizar para acelerar el desarrollo.

Sin embargo, desde una perspectiva de seguridad, es crucial considerar los riesgos asociados a la inclusión de datos externos en las sesiones de chat. Por ejemplo, un usuario podría consultar sobre un problema específico en GitHub que contenga instrucciones maliciosas. En tales casos, el modelo podría ser engañado no solo para proporcionar una respuesta incorrecta, sino también para realizar acciones sensibles de manera encubierta.

Durante una evaluación de seguridad reciente de la extensión Copilot Chat, se identificaron varias vulnerabilidades, particularmente en relación con el modo de agente. Estas fallas podrían haber permitido a atacantes filtrar tokens de GitHub locales, acceder a archivos sensibles o incluso ejecutar código arbitrario sin necesidad de confirmación del usuario. Las correcciones pertinentes han sido implementadas en colaboración con el equipo de VS Code. Además, se explorarán patrones adicionales para aumentar la seguridad al leer y editar código en VS Code.

Una de las novedades más destacadas es el modo de agente, donde cuando un usuario abre el chat y realiza una consulta específica, VS Code no solo envía la solicitud al modelo de lenguaje correspondiente, sino que también compila información contextual relevante del proyecto en uso. Esto incluye la carga de archivos relevantes y definiciones de herramientas disponibles, lo que crea un bucle de retroalimentación que puede desencadenar otras llamadas a herramientas.

Sin embargo, se detectó que incluso modelos avanzados podían ser induci dos a respuestas inapropiadas o a realizar acciones no intencionadas. Se observaron exploitaciones en herramientas como «fetch_webpage», que permite enviar solicitudes HTTP, pero cuyo mecanismo de confianza tenía fallas que podían resultar en la filtración de datos sensibles. Tras detectar esta vulnerabilidad, se implementaron cambios para requerir confirmaciones antes de acceder a URLs no confiadas.

Otras herramientas como «Simple Browser» y «editFile» también presentaron riesgos similares, permitiendo potencialmente que datos locales fueran enviados a servidores externos sin la debida confirmación. Las acciones de edición, aunque notificadas a los usuarios, podían tener efectos inmediatos en el sistema, como abrir aplicaciones sin la intervención del usuario.

Para abordar estas consideraciones, se ha trabajado en mejoras de seguridad que permiten a los usuarios tener mayor control sobre las herramientas disponibles para el modelo, así como la implementación de confirmaciones cuando se accede o modifica archivos sensibles. Además, se fomentan buenas prácticas de seguridad, como el uso de entornos aislados a través de contenedores de desarrollo o utilizando GitHub Codespaces.

La capacidad de los modelos de lenguaje para distinguir entre instrucciones legítimas y maliciosas continúa siendo un desafío, y las actualizaciones recientes se centran en proporcionar transparencias a los usuarios sobre el funcionamiento interno de las herramientas. La responsabilidad de la seguridad reside tanto en los desarrolladores de software como en los usuarios mismos, quienes deben ser conscientes de los riesgos potenciales al interactuar con estas tecnologías avanzadas.
vía: GitHub Security

Scroll al inicio