Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
element-vector-drive-letter — Element Desktop v1.12.29 - Alta - Local - Archivo - vector: el protocolo lee archivos de Windows fuera de la jaula asar | Kitploit
Herramientas/GitHubGitHub/abraxas/element-vector-drive-letter
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebVirtualización de SeguridadPruebas de PenetraciónLabs y Práctica
GitHubabraxas/element-vector-drive-letter

element-vector-drive-letter

Element Desktop v1.12.29 - Alta - Local - Archivo - vector: el protocolo lee archivos de Windows fuera de la jaula asar

Ver Repositorio
12hace 9 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - element-vector-drive-letter

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  element-vector-drive-letter

Análisis: https://abraxaslabs.tech/research/element-vector-drive-letter

element-vector-drive-letter

Element Desktop v1.12.29 - Element Creations Ltd

Clase: Lectura de archivos Alcance: Local

apps/desktop/src/electron-main.ts registra vector: como un protocolo de archivo privilegiado. La jaula es solo relTarget.startsWith("..") después de path.normalize(path.join(...pathname.split("/").slice(2))). En Windows, una unión de C:, Windows, win.ini ya es C:\Windows\win.ini. Las rutas absolutas no comienzan con .., por lo que la comprobación las deja pasar. La propia nota de protocolo personalizado de Electron también rechaza path.isAbsolute. El path.join de POSIX no trata C: como absoluto, por lo que Linux y macOS no se ven afectados por este residuo. will-navigate permite el paso de vector:.

Un XSS en el renderer, DevTools u otro proceso local puede ejecutar fetch("vector://vector/webapp/C:/Windows/win.ini") y leer archivos que el proceso de Element puede abrir.

IDaún sin CVE
CWECWE-22 / CWE-73
CVSSAlto: 8.3 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N
Productoelement-web Desktop (apps/desktop)
Afectadov1.12.29 (2d90d6b7b601ecb9ccdf81239a43b4396b4b0c9e). Solo Windows.
Autenticaciónrenderer local (DevTools / XSS)
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1

Qué puede hacer un atacante

XSS en el renderer, DevTools u otro proceso local que pueda alcanzar vector:. No se ejecutó Element Desktop nativo de Windows. El gadget copia el analizador de URL del pin y usa path.win32 de Node.

PrivilegioMétodo / sinkReconocimiento / integridad / disponibilidadDemostrado en laboratorio o inferido
Leer un archivo que el proceso de Element puede abrirfetch("vector://vector/webapp/C:/Windows/win.ini"). La jaula es solo relTarget.startsWith(".."). La unión con letra de unidad es absoluta, por lo que la comprobación pasa. path.win32.resolve(asar, relTarget) es C:\Windows\win.iniReconocimientoDemostrado en laboratorio con el gadget del analizador de URL. El cuerpo es ELEMENT-VECTOR-DRIVE-LETTER-WITNESS. No se ejecutó el Desktop nativo
La misma lectura de electron-config, perfiles, archivos de otros usuarios en la misma ACLLa misma petición vector://vector/webapp/C:/...ReconocimientoInferido. El laboratorio colocó win.ini, no secretos reales
ATO de Matrix si el marco principal carga HTML del atacante ya presente en discowill-navigate permite el paso de vector:. El HTML hostil en vector://vector obtiene preload / window.electron (tokens, Seshat, clearStorage)IntegridadInferido a partir de webcontents-handler.ts y el preload. El laboratorio no navegó un BrowserWindow
Recorrido ../ del árbol asarvector://vector/webapp/../n/aCerrado aquí. La URL WHATWG lo colapsa; el manejador devuelve FILE_NOT_FOUND (-6)
Petición con letra de unidad en POSIX / macOS / Linuxpath.posix.join deja C:/Windows/win.ini bajo asarn/aCerrado aquí. El gadget posix devuelve 404, sin testigo
RCE / LPE del sistema operativonodeIntegration: false, app.enableSandbox()n/aCerrado. No es este residuo

Restos del mismo pin: fragment guest wipe, Univention ICS javascript: href.

Cómo lo encontré

Fijé element-hq/element-web v1.12.29 tras la release de GitHub del 22 de septiembre de 2026. El XSS de la línea de tiempo, el XSS de la exportación HTML (GHSA-wqmv), el HTML de la página de inicio (GHSA-wrcp), el token de medios del widget (GHSA-3jm3) y las claves de Element Call (GHSA-69q3) están cerrados en esta etiqueta. El protocolo personalizado de Desktop todavía solo comprueba startsWith("..").

new URL("vector://vector/webapp/C:/Windows/win.ini") mantiene C: como segmento de ruta. path.win32.join("C:", "Windows", "win.ini") es C:\Windows\win.ini. El path.win32.join(asar, abs) de Node concatena; path.win32.resolve descarta la raíz del asar.

Falsos caminos ya registrados: tratar ../ como el resto (WHATWG lo colapsa, el handler devuelve 404); llamar al C: POSIX el mismo bug (el join posix se queda bajo el asar); inflar la lectura de archivos a RCE del sistema operativo (el sandbox y nodeIntegration: false siguen activos). Una reverse shell. Teatro.

Laboratorio

Gadget del parser de URL. path.win32 de Node frente a path.posix. Ningún proceso de Element Desktop en Windows. El /lab/oracle/win.ini plantado hace las veces de C:\Windows\win.ini. /lab/asar/index.html es la jaula del asar.

python3 element-vector-drive-letter-Abraxas-Labs.py

o

cd lab
./run.sh

Dirígete solo a http://127.0.0.1:19610. Compón el proyecto element-vector-drive-letter. El stack se desmonta después de la ejecución.

SUCCESS element-vector-drive-letter how=gadget win32-drive-letter=200 posix-drive-letter=404 control-dotdot=404 patched-isabs=404 ELEMENT-VECTOR-DRIVE-LETTER-WITNESS

La corrección

Después de normalizar, rechazar path.isAbsolute(relTarget) y exigir que path.resolve(baseDir, relTarget) permanezca bajo path.resolve(baseDir) (path.relative, rechazar ..).

Referencias

  • github.com/element-hq/element-web etiqueta v1.12.29
  • electron-main.ts (registerFileProtocol)
  • webcontents-handler.ts (will-navigate)
  • Parcheado cercano (no esta jaula): GHSA-wqmv · GHSA-wrcp
  • Mismo pin: element-fragment-guest · element-ics-javascript
  • CWE-22

Licencia

GNU Affero GPL v3.0. Véase LICENSE. Solo laboratorio de loopback. Sin garantía.

Descargar herramienta