Extensiones Maliciosas en Visual Studio Code: ¿Qué Debes Saber?
Heads up!
This summary and transcript were automatically generated using AI with the Free YouTube Transcript Summary Tool by LunaNotes.
Generate a summary for freeIf you found this summary useful, consider buying us a coffee. It would help us a lot!
Introducción
En el mundo del desarrollo de software, Visual Studio Code (VS Code) se ha establecido como uno de los editores más populares y versátiles entre los programadores. Sin embargo, recientes investigaciones han revelado preocupaciones sobre la seguridad de las extensiones disponibles en su marketplace. Este artículo explora los peligros de las extensiones maliciosas en VS Code, cómo un grupo de investigadores logró explotar esta vulnerabilidad creando una extensión que se hacía pasar por un tema oficial, y qué medidas puedes tomar para protegerte.
¿Qué son las extensiones de Visual Studio Code?
Las extensiones son pequeñas herramientas que se integran en VS Code para aportar funcionalidades adicionales a los desarrolladores. Desde nuevos lenguajes de programación hasta herramientas de depuración y personalización de la interfaz, estas herramientas enriquecen la experiencia de desarrollo. Sin embargo, cada vez que instalas una extensión, introduces un posible riesgo de seguridad.
Investigación Reciente sobre Extensiones Maliciosas
En un estudio reciente llevado a cabo por investigadores israelíes, se descubrieron múltiples extensiones maliciosas en el marketplace de VS Code que lograron infectar a más de 100 organizaciones. Estas extensiones se caracterizaron por su capacidad para recopilar información sensible de los sistemas donde estaban instaladas.
El Caso del Tema Drácula
Uno de los casos más impactantes fue el de una copia alterada del popular tema Drácula, que posee más de 7 millones de instalaciones. Los investigadores registraron un plugin con un nombre similar al original y usaron un dominio que se parecía al oficial. Este tipo de táctica se denomina typosquatting, donde un atacante registra variantes de nombre que pueden engañar a los usuarios.
Cómo Operó el Ataque
La extensión aparentemente legítima utilizaba el código original del tema Drácula, pero también contenía un script malicioso que recopilaba información del sistema, incluyendo:
- Nombre de host
- Cantidad de extensiones instaladas
- Nombre de dominio del dispositivo
- Plataforma del sistema operativo
Esto evidencia serias falencias en los controles de seguridad y revisión de código por parte de Microsoft.
La Vulnerabilidad de VS Code
Falta de Certificación Rigurosa
La principal problemática radica en que la revisión de las extensiones en el marketplace de VS Code no es lo suficientemente rigurosa. Al tratarse de un entorno de desarrollo y prueba, muchas de las herramientas de detección de malware son indulgentes, lo que permite que extensiones maliciosas pasen desapercibidas.
Impacto en Organizaciones
Como resultado, extensiones maliciosas han sido instaladas erróneamente por múltiples empresas, incluidas organizaciones de alto perfil con una capitalización de mercado significativa. Esto refleja que la falta de controles adecuados puede resultar en consecuencias devastadoras.
Creación de una Extensión Maliciosa: Un Laboratorio Práctico
Para demostrar cómo se puede crear una extensión maliciosa en VS Code, los investigadores llevaron a cabo un laboratorio controlado:
- Instalación de Node y Git: Para inicializar la creación de la extensión.
- Generación de la Extensión: Utilizando generator-code se creó la estructura básica de la extensión.
- Incorporación de Funcionalidades Maliciosas: Se modificaron los archivos de configuración para activar características que podrían ejecutar comandos peligrosos desde el VS Code.
- Simulación de un Ataque: Mediante el uso de comandos específicos, se logró registrar un regreso de shell o realizar ataques de ping sin el conocimiento del usuario.
Precauciones al Usar Extensiones de VS Code
Para proteger tu entorno de desarrollo de posibles extensiones maliciosas, aquí te dejamos algunos consejos:
- Investiga Antes de Instalar: Verifica las críticas y puntuaciones de las extensiones que deseas instalar.
- Revisa los Permisos: Al instalar extensiones, asegúrate de que los permisos solicitados sean razonables.
- Actualiza Regularmente: Mantén tu VS Code y tus extensiones actualizadas para beneficiarte de parches de seguridad recientes.
- Desinstala lo Innecesario: Elimina extensiones que no utilices y que puedan ser un vector de ataque.
Conclusiones
La seguridad en el desarrollo de software es un tema serio y los desarrolladores deben ser conscientes de los riesgos que pueden surgir al instalar extensiones de terceros. La reciente preocupación por extensiones maliciosas en Visual Studio Code destaca la importancia de practicar una buena higiene de ciberseguridad. Mantente informado y siempre verifica la procedencia de las herramientas que utilizas.
Juntos, podemos crear un entorno de desarrollo más seguro en VS Code y proteger nuestra información sensible. Recuerda, siempre existe un riesgo, pero con precauciones adecuadas, podemos mitigar significativamente esos peligros.
Tengo una pregunta para vosotros quién de vosotros utiliza vs code visual Studio code para crear sus proyectos y
sus herramientas que diga yo o yo sí en el chat pues más de los que me pensaba todos usáis visual Studio
code para crear vuestras herramientas vuestros proyectos y demás no Bueno más de los que me pensaba habréis visto lo
que ha pasado recientemente no ha habido por ahí informaciones que han llegado a nuestros oídos de que ciertas
extensiones maliciosas de vs code pues han sido descubiertas y se ha tensado por tanto toca echarle un ojo a esa
noticia no para ver qué tan real es y cómo puede afectarnos a todos yo no uso visual Studio code Pero bueno dado que
muchos utilizáis visual Studio code vamos a ver en qué consiste esto que ha pasado y vamos a intentar crear una
extensión maliciosa para que veáis el impacto del lado de un atacante pues lo que puede llegar a ser hay una noticia
que publicaron en bliing computer hay múltiples por ahí dice extensiones iosas de vc code con millones de instalaciones
descubiertas millones de instalaciones eh cuidado bueno pone un grupo de investigadores israelíes exploró la
seguridad del mercado de visual Studio code y logró infectar a más de 100 organizaciones troyan zando una copia
del popular tema Drácula oficial para incluir código riesgoso para su reciente experimento Los investigadores amid
aaraaf y Tai crook e idam dardik Man crearon una extensión que escribe el tema Drácula oficial bueno Esto está en
inglés eh está traducido al español pero bueno un esquema de color popular para varias aplicaciones que tiene más de 7
millones de instalaciones en vsco de marketplace lo que hicieron fue registrar una aplicación con un nombre
similar en vez de Drácula oficial que era la oficial pues registraron darula oficial también registraron un dominio
similar al oficial en vez de dracul cen.com pues darul zen.com para conseguir el verificado y que diese más
el pego a ese concepto se le llama typ squating eh o bueno tipo squating eso que es básicamente cuando un atacante
pues registra por ejemplo un dominio muy similar cometiendo horrores o sea horrores errores ortográficos de forma
que bueno da el pego para que la víctima pues sea más vulnerable a caer ante la descarga de la aplicación o lo que
corresponda no la confundes Y poco más Cuál es la idea su extensión utiliza el código Real del tema legítimo de bueno
de Drácula pero también incluye un Script adicional que copía información del sistema incluido el nombre de Host
la cantidad de extensiones instaladas el nombre de dominio del dispositivo y la plataforma del sistema operativo no
bueno en cuanto a extensiones para visual Studio code hay un porrón y diréis vale hay un control por detrás de
todo esto de forma que alguien tendrá que revisar todas las extensiones que se suben a este mercado No para asegurarse
de que no haya código con vulnerabilidades o que estén por ahí circulando otr lanos o movidas raras
Bueno pues ahí es donde está el el problema porque fijaros Bueno si leemos un poquito más pone los investigadores
señalan que el código malicioso no es detectado por las herramientas de respuesta y detección de puntos finales
edr ya que vs code se trata con indulgencia debido a su naturaleza como sistema de desarrollo y prueba la
extensión rápidamente ganó fuerza siendo instalada por error por múltiples objetivos de alto valor incluida una
empresa que cotiza en bolsa con una capitalización de Mercado de 483,000 millones de dó el punto crítico pues es
esto no la F de controles estrictos y mecanismos de revisión de código por parte de Microsoft Porque recordad que
visual Studio code para el que no lo sepa es un editor de código que ha sido desarrollado por Microsoft Vale pues eso
la falta de controles estrictos y mecanismos de revisión de código por parte de Microsoft en visual Studio code
marketplace permite a los actores de amenazas realizar un abuso desenfrenado bueno desenfrenado de la plataforma que
empeora a medida que la plataforma se utiliza cada vez más entonces bueno la idea en resumen es esa que un par de
chavales pues utilizaron código legítimo oficial de una aplicación que estaba en el marketplace la alteraron metir un
código malicioso y lograron crear una extensión que al subirla al marketplace Pues que ahí se quedó y era maliciosa y
se determinó que lo dicho que no hay controles de revisión de forma Que obviamente se determinó de que hay un
montón de extensiones maliciosas entonces bueno La idea es que vamos a hacer un pequeño ejemplo para que veáis
Cómo es el tinglado Cómo es el asunto yo aquí tengo una máquina Linux que es mi parrot y tengo una máquina Windows 10
que es donde vamos a instalar el visual Studio code todo desde cero un pequeño laboratorio que nos vamos a montar y
vamos a intentar instalar una extensión que vamos a crear nosotros para que veáis cómo podemos llegar a ejecutar
acciones maliciosas aquí el defender lo he dicho está en un principio activo lo voy a dejar así Si pinchamos Aquí vamos
a darle a administrar la configuración Pues lo he dicho protección en tiempo real protección basada en la nube todo
correcto no lo primero que tenemos que hacer es instalar node que tenemos que instalar un par de cositas vamos a poner
Studio code obviamente Y luego vemos cómo crear nuestra extensión vale vamos a descargarnos esto primero que nada
node y ahora que el node esté instalado tenemos que instalar geoman y el generador de extensiones de visual
Studio code que eso nos va a ayudar a crear la estructura básica de lo que va a ser nuestra extens vale Ahí está vamos
a pinchar y bien Welcome to the node js Setup wizard Pues nada esto es next he leído los términos siguiente siguiente
siguiente siguiente instalar vale Finish vamos a instalar también jit vamos a tenerlo ya todo instalado mejor antes de
proceder vale 64 bits git for Windows vamos a descargarnos esto Vamos a darle a next siguiente siguiente siguiente
siguiente todo siguiente por defecto instalar vale vamos a quitar esto Finish y esto yo creo que ya está vamos a irnos
al escritorio vamos a abrirnos por aquí cmd y lo dicho como os comenté antes vamos a esto maximizarlo un poquito
fuente 24 vamos a instalarnos yo y generator code npm install men G yo y generator code Esto va a tardar un
poquito así que paciencia para ganar tiempo vamos a ir descargando el visual Studio sí no sé qué hago con Edge
abierto cuando tengo Chrome me he vuelto loco me vais a disculpar vamos a descargarnos el visual Studio visual
Studio code Download yo lo he dicho el visual Studio nunca Bueno lo he usado pero tampoco me llama tanto la verdad y
ahora que empleamos el tema este env chat para neovim y demás pues ya con eso andando con eso va todo genial Pero está
bien puedes lo dicho instalar extensiones vale Bueno ahí ya cargó no esto no os preocupéis npm warm de precat
esto nada no no pasa nada Vamos a darle a acepto el acuerdo siguiente siguiente siguiente voy a crear un acceso directo
en el escritorio por si acaso siguiente instalar bien pues esto está instalado npm install todo esto Vale pues lo que
vamos a hacer ejecutar visual Studio code esto ya lo podemos abrir en un principio y bien la idea Ahora va a ser
podemos hacer control más para aumentar un poquito esto y que lo veáis mejor vamos a hacer por aquí esto vamos a
poner yo code y Esto va a ir todo de forma automatizada nos va a ir preguntando ahora Oye quieres crear una
extensión para visual Studio code tal y te va a ir guiando todo paso a paso fijaros pone Welcome to de visual Studio
code extension generator más cómodo imposible Bueno pues ahí tenemos no New extension typescript javascript yo voy a
jugar con typescript Vamos a darle al enter Cuál es el nombre de tu extensión bueno imaginaros que yo por ejemplo a mi
extensión la llamo extension y cuál es el identificador de tu extensión extension también esto es importante
porque en el código tanto en el archivo packages json como en el archivo.ts vamos a tener que hacer alusión a este
nombre o sea que si ponéis otro Vais a tener que poner por aquí ese nombre vale para hacerle referencia enter y bueno
Cuál es la descripción de tu extensión pues podríamos poner rc poc extension for vs code por ejemplo enter
inicializar el repositorio de jit bueno por eso había que tener instalado jit como herramienta como utilidad yo ya la
tengo Así que enter y vale por aquí Vamos a darle a un bandl enter npm enter y nada esto es esperar un poquito te
crea la carpeta extension y ahora vamos a ver cómo retocar ciertos archivos para incorporar la extensión dentro de El
visual Studio code vale bien pues fijaros tendríamos esto ya todo correcto no ha habido ningún problema así que
bien qué voy a hacer ahora voy a abrirme el visual Studio code Entonces nada La idea es decirle file Open folder en este
caso voy a irme al escritorio y este directorio extension voy a seleccionarlo como carpeta y ahora ya me lo va a abrir
el visual Studio code bien Cuál es la idea en el package.js La idea es que aquí activation events bueno imaginaros
que yo por ejemplo Quiero que mi extensión en vez de esto de Hello World Por ejemplo yo lo que voy a hacer es
crear una funcionalidad con nombre Run cmd para mi extensión que primeramente a modo de prueba de concepto vamos a
intentar hacer que me envíe un Pink a mi máquina de atacante vale o sea yo lo que voy a hacer es que con tcp dam voy a
ponerme en escucha por mi interfaz ns 33 en escucha de trazas ismp no quiero que me aplique resolución de ns y este es el
router que me está Vale bueno el router está enviando Ah bueno Esta es la 11 vale esto creo que pasa porque Claro en
la máquina virtual se comparte la misma interfaz y puedes capturar tráfico proveniente de la máquina Windows
también pues vale lo que podemos hacer es que con tshark vamos a esnifar por la interfaz de red ns 33 y bueno podríamos
tratar de crear un filtro para decirle que queremos capturar por tráfico icmp tramas icmp donde además el source de ip
es la máquina Windows que vamos a ver cuál es la ip que tiene esta máquina Windows a ver IP config vale la 111.11
pues la idea va a ser eso vamos a intentar capturar paquetes donde sea trazas ymp que venga de una IP de origen
que me está haciendo un Pink que es la 111.11 hacia el destino yo que sería la 11143 no que es la ip Esta que está por
aquí arriba si le doy al enter Ahí estamos capturando de forma que ahora no deberíamos de ver más trayas vale esto
de Run cmd tú le puedes poner el nombre que quieras vale yo en este caso le voy a llamar room cmd a mi utilidad de forma
que cuando me abra esto con control shift p aquí pondremos room cmd y esto me ejecutará pues determinada operatoria
vamos a llamar a esto por ejemplo como título pues censa poned lo que queráis control S y bien una vez con esto hecho
que esto tiene que coincidir con el nombre que habíamos puesto a la hora de con y code desde la terminal Pues el
nombre que nos pidieron tiene que ser el mismo que el que figura por aquí ahora la idea serían source irnos a
extension.txt cositas que por defecto figuran para en un principio la extensión Hello World que era la
anterior que había solo que ahora va a ser room cmd de forma que claro si yo quiero llegar a ejecutar comandos La
idea es por aquí definir pues la funcionalidad de lo que queremos que haga No yo lo que voy a hacer para
ejecutar un comando que se va a encargar de enviarme el Pink vamos a intentar primeramente abrir la terminal para que
cuando agarro un cmd me abra la terminal entonces ahí ya veréis como del visual Studio code saltamos a operaciones fuera
de El visual Studio code que afectan a nivel de sistema si tú pones por ejemplo no de js execute command pues por
ejemplo execute a command Line binary with no js vale en un principio vamos a tener que esto está bien pero vamos a
incorporarlo Aquí vamos a importarlo por aquí más que de esta forma vamos a decirle import exec from Child process
de forma que ahora vamos a poder utilizar la utilidad exec para poder ejecutar comandos y Vale ahora la idea
sería aquí por ejemplo nos comparten con exec una ejecución de comando que están aplicando en Linux en este caso no pero
yo en este caso como es Windows lo que quiero utilizar lo que podríamos hacer esto de console punto loock No lo voy a
estar utilizando voy a pegarle directamente esto que aquí luego esto habría que cerrarlo así quiero pensar
pues más que esto imaginaros que yo me quiero abrir una consola una consola interactiva tú podrías poner por aquí
Start cmd.exe para abrirme la terminal si tú Aha guardas con control S pues bueno si todo está bien ya habrías
creado tu primera utilidad que esto no tiene que ir aquí cuidado era para ver si estabais atentos cuando tú ejecutes
la utilidad Run cmd qué quiero que pase pues esto ahora entonces nada control S vamos a guardarlo de resto creo que está
todo correcto quiero pensar tú le puedes dar ahora a room Start the bugging Ahí está building vamos a ver si hay algún
problema si no nos va a abrir una ventanita y en esta nueva ventana es donde podemos probar ahora pues las
funcionalidades de esta extensión vale Y en un principio sin problema Pues fijaros esta ventanita que se abre Lo
dicho imaginaros que vosotros habéis importado vuestra extensión a vuestro visual Studio code control shift p si tú
pones room cmd vale room cmd command si yo pincho para utilizar esta utilidad de la extensión ojito
pincho cuidado eh acabamos de abrir una terminal desde el visual Studio code y dirás vale Y puedes ejecutar un comando
Pues sí si tú por ejemplo quisieras ejecutar Pon p tendríamos que irnos a extension punts si tú quisieras enviarte
ponerle por aquí k a ver si es que igual necesita esto que le indiquemos para poder ver el comando Start de bug
control shift p Run cmd command a ver ahora vale me vengo para acá y fijaros ahí estoy recibiendo la traza no Cuál es
la idea Esto no es crítico dirás tú Bueno pero esto es un Pink No pasa nada vamos a intentar entablar una revers
shel para que cuando ejecutemos cierta utilidad de esta extensión ganemos acceso al sistema yo me voy a poner por
aquí en escucha por el puerto 443 voy a meterle estos parámetros para poder maniobrar cómodamente y fijaros recordad
que aquí el defender está activado si nos vamos aquí a seguridad de Windows nos venimos aquí a Protección antivirus
tal administrar la configuración activado protección en tiempo real protección basada en la nube envío de
muestras automático tal todo esto Vale pues con ayuda de chat gpt me hice antes un poc para poder entablar una revers
shel sin que me detectara el defender esto fuera pum Vale pues esto se va a encargar de enviarme una revers shell a
la 11.43 por el puerto 443 control S vamos a ver si funciona room estar de bugin Entonces lo dicho imaginaros que
eh Ahora se viene la buena todos atentos que se va a tensar rmd juam cuidado eh IP config se tensa eh
Nada de loco esto es espectacular a través del visual Studio code la buena reversal que nos acabamos de montar Sí
señor Pues nada Eso es donde aquí es donde reside la criticidad Porque estos desarrolladores subieron al marketplace
pues su propia extensión maliciosa que no sé hasta qué punto te ponían que te recolectaban información del equipo pero
ese pog que adjuntaba también de rever shell vamos a echarle un ojo a ver si era de ellos o una que detectaron por
código encontrado Ah en una extensión maliciosa de visual Studio code marketplace O sea no es la de ellos es
una que encontraron eh que abre una shell inversa en el servidor del ciberdelincuente bueno como se
puede ver por los números hay una gran cantidad de extensiones que plantean riesgos para las organizaciones tal las
extensiones vc code son un ataque vertical expuesto ya abusado y nada Esto es lo que ha pasado con visual Studio
code Cuidado con las extensiones que descargá por ahí de randoms porque hasta ni de Paco de la esquina es que vete tú
a saber de extensiones que muchos utilicemos pues lo que se esconde en el código yo le echaría alguna que otra
oead al código de aquello que estemos empleando a nivel de extensión pero igual son un porrón de líneas y está por
ahí oculto o se lo pasas a chat gpt o tiras algún tipo de ayuda cona pero eso Esto es lo que ha sucedido Así que ahí