• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • Inicio
  • Auditoría
  • Eventos
  • Formación
  • General
  • Malware
  • Vulnerabilidades
  • Un blog de

Una al Día

Boletín de noticias de Seguridad Informática ofrecido por Hispasec

You are here: Home / Vulnerabilidades / VENOM. El huésped despierta

VENOM. El huésped despierta

14 mayo, 2015 Por Hispasec Leave a Comment

Hoy vamos a hablar sobre Venom, una vulnerabilidad descubierta por Jason Geffner de CrowdStrike y que afecta a todos los sistemas de virtualización basados en QEMU, el popular emulador de fuente abierta.
Lo primero que nos va a llamar la atención es donde se ha encontrado el fallo: La emulación del controlador de discos flexibles (si, discos de 3.5”, por ejemplo). Curioso porque resulta ser un componente emulado que rara vez se utiliza, salvo en sistemas virtualizados que usen ambientes heredados con cierta edad, aunque no es necesario que dicho dispositivo real esté presente para explotar el fallo, es más ni siquiera desactivando la emulación de la unidad virtual evitaría la explotación.
QEMU soporta la emulación de esta unidad basándose en el chipset de Intel 82078, documentado aquí. La lectura del documento nos proporcionará dos cosas: cómo funciona internamente el controlador de disco flexible y la justificación más exacta de la frase: «La abstracción es ignorancia selectiva«.
Para efectuar las distintas operaciones con la unidad de discos se emiten comandos (desde el sistema virtualizado o huésped) del tipo ‘FD_CMD_READ‘ lectura o ‘FD_CMD_WRITE‘ escritura. Los comandos que llegan al controlador del cliente son almacenados en un búfer junto con la información de sus parámetros. Este búfer del tipo FIFO posee un tamaño estático y está definido como miembro de la estructura FDCtrl. En dicha estructura los miembros fifo (uint8_t*) y fifo_size (int32_t) definen el puntero a memoria donde comienza el búfer y el tamaño asignado (512 hasta donde hemos visto).
Como todo buen array en C que se precie, el mayor problema viene con el índice. El cálculo para obtener el acceso al lugar adecuado dentro del array puede llegar a complicarse tanto, que la propia lógica que compone el índice puede ofuscarse en el código. Y llegar a comprometer, como es el caso, la seguridad del proceso si estos valores son controlables desde el exterior (entiéndase, a través de valores procedentes del exterior del proceso).
La vulnerabilidad se asienta sobre este hecho en particular. Tenemos unos comandos que va a procesar el controlador emulado, unos parámetros asignables desde fuera (cliente) y un búfer de tamaño fijo con un índice cuyo valor es «influenciable» con ciertas llamadas.
El controlador se encarga de limpiar y resetear el búfer cuando los comandos son procesados, dejándolo preparado para la siguiente tanda de comandos. Esto se efectúa correctamente salvo cuando se procesan dos comandos:
«FD_CMD_READ_ID» y «FD_CMD_DRIVE_SPECIFICATION_COMMAND«.
En los casos de estos comandos el búfer no se deja en un estado apropiado, lo que permite que las siguientes operaciones de escritura puedan escribir fuera de los límites del tamaño asociado al búfer con el completo control del atacante sobre lo que se está escribiendo (shellcode por supuesto).
El parche que solventa el problema está publicado aquí 
 
Como podemos observar la variable ‘pos‘ usada para almacenar la posición del bloque de datos dentro del búfer ha sido cambiada del tipo ‘int‘ al tipo ‘uint32_t‘.
El tipo ‘int‘ en la especificación del lenguaje C es del tipo «signed» y como mínimo de 16 bits para arriba (habitualmente 32 bits), mientras que el tipo que le es asignado está definido como entero SIN SIGNO de 32 bits. De hecho, la operación donde se establece ‘pos‘:
pos = fdctrl->data_pos;
Se hace una conversión implícita de uint32_t a int, con la consiguiente malinterpretación: a partir de un fdctrl->data_pos > (UINT_MAX/2) + 1. ‘pos‘ es negativo siempre que int = uint32_t = 32 bits.
Además se ha cambiado la forma en la que se usa e interpreta ‘fdctrl->data_pos‘ como índice.
–    fdctrl->fifo[fdctrl->data_pos++] = value;
+    pos = fdctrl->data_pos++;
+    pos %= FD_SECTOR_LEN;
+    fdctrl->fifo[pos] = value;
Ya no se usa directamente el miembro de la estructura para indexar el búfer fifo. Ahora vemos como ese valor se pasa a ‘pos‘ (ya correctamente definido como ‘uint32_t‘) y su valor filtrado al módulo de FD_SECTOR_LEN, por lo que no podrá ser indexado más allá de 512, coincide con el tamaño del búfer.
Esta vulnerabilidad, con CVE-2015-3456, permitiría «virtualmente» causar el acceso al proceso de virtualización en la máquina real, permitiendo de manera efectiva un escape desde el sistema huésped al anfitrión. Teniendo en cuenta que los sistemas virtualizados corren bajo cuentas con privilegios (Administrador, root…), su explotación puede derivar en problemas serios.
No es la primera vulnerabilidad que permite salir del sistema virtual al anfitrión. Pero, tal y como reseñan en la web dedicada, esta no precisa de una configuración especial para que la virtualización sea vulnerable.
QEMU es usado por varias soluciones de virtualización, el propio QEMU, Xen, Citrix, etc. El problema es independiente de la plataforma huésped, la vulnerabilidad afectará a Windows, Linux u OSX de igual manera. Ya existe parchedisponible para solventar el problema. Por cierto, esto afecta a infraestructuras en nube, las cuales se caracterizan por el uso extensivo de virtualización y acceso relativamente abierto a sus clientes.
Por otro lado, VENOM sufre de la nueva corriente de presentación estelar de vulnerabilidades: Nombre pegadizo que es un acrónimo forzado, icono y web propia. ¡Ah!, aquellos archivos de texto con sus asciiarts…
Más información:
VENOM
http://venom.crowdstrike.com/
VENOM, don’t get bitten
https://securityblog.redhat.com/2015/05/13/venom-dont-get-bitten/
82078 44 PIN
CHMOS Single-Chip Floppy Disk Controller
http://wiki.qemu.org/images/f/f0/29047403.pdf
David García
dgarcia@hispasec.com
Twitter: @dgn1729

Compártelo:

  • Twitter
  • Facebook
  • LinkedIn
  • Reddit
  • Telegram
  • WhatsApp

Publicaciones relacionadas

Filed Under: Vulnerabilidades

Reader Interactions

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Primary Sidebar

Buscador

Email Newsletter

Suscríbase y reciba Una al Día en su correo.

UADCAST

Populares de UAD

  • FedexBanker: El nuevo troyano bancario para Android que utiliza tus paquetes para robarte las credenciales
  • Nuevo 0-day en Google Chrome
  • Hackeado el foro ruso de cibercrimen Maza
  • Dos nuevos fallos críticos en Zoom permiten hackear los dispositivos de los usuarios
  • Un bug permite "romper" el WhatsApp de todos los miembros de un grupo

Entradas recientes

  • Hackeado el foro ruso de cibercrimen Maza
  • Nuevo 0-day en Google Chrome
  • FedexBanker: El nuevo troyano bancario para Android que utiliza tus paquetes para robarte las credenciales
  • Descubiertos varios exploits «in-the-wild» basados en Spectre
  • Gootkit RAT utiliza SEO para distribuir malware
  • Descubiertas nuevas versiones del troyano bancario EventBot
  • Liberados parches de seguridad de Cisco que corrigen vulnerabilidades críticas y altas en varios de sus productos
  • Correo electrónico
  • Facebook
  • LinkedIn
  • RSS
  • Twitter

Footer

Una al Día

Una-al-día nació a raíz de un inocente comentario en un canal IRC hace casi 19 años. A través de los archivos, un lector curioso puede ver cómo ha cambiado (o no) la seguridad de la información desde entonces.

Entradas recientes

  • Hackeado el foro ruso de cibercrimen Maza
  • Nuevo 0-day en Google Chrome
  • FedexBanker: El nuevo troyano bancario para Android que utiliza tus paquetes para robarte las credenciales
  • Descubiertos varios exploits «in-the-wild» basados en Spectre
  • Gootkit RAT utiliza SEO para distribuir malware

Etiquetas

#bugbounty #ddos #sphinx 0-day 0-zay 0day 0v1ru$ 2FA 4g 5g 10kblaze 888 RAT accellion account hijack ace acrobat acrobat reader actualizacion Actualización actualizar adb address bar AdMaxim Adobe Adobe Bridge Adware Afeter Effects Agencia Tributaria agoda Agora Alemania Alexa Alien Aliznet alphabet Amadeus Amazingco Amazon amd among us Anatova Andr/Xgen2-CY Android Android lowcost androMut AngryPolarBearBug2 anonymous antivirus anubis any.run apache api apk app Apple Apple CVE Apple exploit apps APT apt-c-23 apt39 APT41 apt framework Aptoide apuestas archive_tar arp asp asus ata ataque Atlantis ATP attack Audio Australia autenticación Authentication bypass autodesk avaddon avira azure backdoor Baltimore ban bancario bancos bandook bank banker barcode scanner barra navegacion base de datos BBC BGP BIG-IP bill gates binary defense binaryedge bing biometrica biometría bios bird bitbucket bitcoin bitdefender blackhat bladabindi BLE bleedingtooth BLESA blink blockchain bluekeep blueleaks Bluetooth Bluetooth Low Energy bluez boca bof boletín booking bootstrap-sass borrado bot botnet bots Bot Tegram Brave breach brecha Brikerbot british airways bruteforce BSD bsides buffer overflow Bug Bug bounty bugbounty Bulgaria bypass C&C c2 C2C camaras seguridad cambridge camera Campaign canada cannabis canon capcom car carbanak carding ccleaner cctv CDN cd projekt CDRThief cem censura centurylink cerberus Certifados certificacion Certificates challenge Checkers checkpoint Check Point China chingari Chrome chromium CI Ciberataque Cibercrimen cibercriminal ciber delincuentes ciberdelincuentes ciberespionaje ciberguerra ciberseguridad cifrado cinnamon CISA Cisco Citrix clave privada cloud CloudCMS cloudfare cmd cms cng.sys code execution CoderWare coinhive ColdFusion comrat conferencia confidencial congreso congresos conti contraseñas Cookies copy-on-write Corea del Norte coronavirus covid Covid19 cow cpu Crack Credential-Stuffing CriptoCert criptografía criptomoneda Criptomonedas criptored critical Cross-Site Request Forgery CrowdStrike crypt32 cryptojacking Cryptolocker cryptominado cryptomonedas críticas CSP CSRF ctf customer support cve CVE-202-6109 CVE-2015-4670 CVE-2017-0199 CVE-2019-1619 CVE-2019-1620 CVE-2019-2633 CVE-2019-2638 CVE-2019-2725 CVE-2019-3719 CVE-2019-5096 CVE-2019-5544 CVE-2019-7838 CVE-2019-7839 CVE-2019-7840 CVE-2019-7845 CVE-2019-7850 CVE-2019-11043 CVE-2019-11510 CVE-2019-11707 CVE-2019-11932 CVE-2019-12268 CVE-2019-12592 cve-2019-12815 CVE-2019-12922 CVE-2019-14287 CVE-2019-14899 CVE-2019-15126 CVE-2019-15295 CVE-2019-15316 CVE-2019-16928 cve-2019-19519 cve-2019-19520 cve-2019-19521 CVE-2019-19522 CVE-2019-19639 CVE-2019-19743 CVE-2019-19781 CVE-2019–11396 CVE-2020-0601 CVE-2020-0796 CVE-2020-0915 CVE-2020-0916 CVE-2020-0986 cve-2020-13-50 CVE-2020-724 CVE-2020-1206 cve-2020-1530 cve-2020-1537 CVE-2020-2765 CVE-2020-3142 CVE-2020-3566 CVE-2020-3764 CVE-2020-3952 CVE-2020-3953 CVE-2020-3954 CVE-2020-3956 CVE-2020-6008 CVE-2020-6009 CVE-2020-6010 CVE-2020-6110 CVE-2020-7473 CVE-2020-7961 CVE-2020-8419 CVE-2020-8420\ CVE-2020-8421 cve-2020-8982 CVE-2020-8983 CVE-2020-10148 CVE-2020-11511 CVE-2020-11651 CVE-2020-12351 CVE-2020-12352 CVE-2020-14750 CVE-2020-15466 CVE-2020-25212 CVE-2020-25645 CVE-2020-28188 cve-2020-29491 cve-2020-29492 CVE-2021-1051 CVE-2021-3007 CVE-2021-3156 cvss CyberArk cyberataque cyberattack cyberpunk cyberpunk 2077 cylance CyrusOne código arbitrario D-Link Dark Halo DarkHotel darkirc dark markets darknet darkside darkweb dark web darpa DART Database data breach Data Center Network Manager data leak dataspii DB DCNM ddos ddosecrets Debian decrypter deepfake deep web defacement defcon defender defiant Dell Dell System Detect dell wyse demanda denegacion de servicio Denegación de servicio Denial of Service dependencias dereferencing devfest DHS digilocker digitalocean DigitalRevolution directory traversal disclosure discord Dispositivos IoT django Django Rest Framework DJI DNS DNS over HTTPS docker dockerhub dogecoin DoH doki dolphin dolphinattack donald trump Doogee BL7000 doorbell dos DoubleGun downgrade DrayTek drivers droga dropper drupal duplicado SIM duplicator DVMRP E-Business e-learning EA echobot ecommerce ecsc EDA Edge EEUU egregor ejecución de código ejecución de código arbitrario ekans ElasticSearch elecciones electronica elevacion de privilegios Elevación de privilegios elon musk emotet empire enisa ergegor eris loris error escalada escalada de privilegios ESET ESNI españa estados unidos Estafa esteganografia eternalblue Europa europol eventbot evento eventos Evernote Evernote Web Clipper evilcorp evilgnome Evilnum EvilQuest excel exim Experience Manager exploit extension extorsión exxpedia F5 faceapp Facebook Facebook leaks Facebook Messenger FakeSpy fallos fallout fancy bear Fast Flux fbi fedex fifa20 Filtración filtración de datos fingerprint finspy Firebase FireEye firefox Firefox Private Network Firefox Test Pilot Firewall firma digital flash Flash Player FlawedAmmy flipboard foreshadow formacion Forminator foros FOSSA fotos foxit pdf fpga Framemaker framework fraud Fraude FreakOut FSB fta ftc FTP fuerza bruta Fuga de información Fusion gadget GandCrab garmin gdg gdpr gehealtcare gem GHIDRA gif git github gmail GnuPG go GoAhead godaddy golang goldbrute goldenspy goo Google Google Analytics google app engine google chrome Google Docs Google Hangouts google nest google play googleplay Google Titan gootkit gosms gosmspro goznym gpu Grandoreiro grandstream graph great firewall gsm guacamole guildma hack hackeo hacker hacking hacktivist hardware hash Heap Overflow Heartbleed HEVC hiberus Hijacking hisilicon hispasec historia honda hospital hostinger hotelbeds hoteles hotels http httpd HTTPS huawei Hyper-V hyperv iBaby iBaby Monitor M6S IBM ICAR iCloud ico ie IGMP ilegal iLnkP2P iMessage impresoras india infection infinite loop Infiniti NCAR infosec injection innerSloth insider instagram intel intelligence Internet Explorer intezer labs in the wild Investigación Inyeción SQL IOC iomega iOS IOS XR iot iPad ipados iPhone iPod ipp iran isp Italia iterm2 ITG18 jabber jailbreak java javascript Jenkis JMT Trader joker joomla joomla! jquery js kaiji Karkoff karpersky kaspersky kde kde plasma Keecoo P11 keepass kernel Kernel Linux keyless keylogger kill-switch kindle Koodous Kr00k krebsonsecurity kubeflow kubernete kubernetes la 9 las vegas latinoamerica Lazarus leak Leaks LearnDash LearnPress lenovo Let'sEncrypt ley lfi LG libgcrypt libreoffice libssh licencias LifterLMS Line LinkedIn Linknat linux linux kernel linux mint liquid LMS loader lockbit logitech longwatch lookout lte luisiana Lukas Stefanko lxc M-Horse Pure 1 m1 Maas mac machete MacOS mac os macros magecart magento Mail malaga malspam malvertising malware malware macos apple Manipulación de ficheros market martes martes de parches marzo masmovil masslogger MATA matrix maze mdm mds Media Encoder Media File Jacking MediaTek medicina meldown meltdown MEMS menor mensajería instantánea meow MessageTap messenger metasploit Mi Browser Microsoft Microsoft Edge microsoft excel Microsoft Teams Microsoft Word mijia mikrotik minero mining Mint Browser mirai mit mitre mitron mobileiron modsecurity mod_copy monero MongoDB monitor Moodle MosaicRegressos Motorola mousejack Mozart Mozilla MQTT MSTIC ms word mukashi mySQL móvil NAC Nagios NanocoreRAT nas Navegador Tor nbip nca Nessus netcat Netgear Netlab360 netwalker NetWeaver NeverQuest nginx Nintendo nissan Nissan ASIST NjRAT Nnissan connect things node nordvpn NOTROBIN npm nsa NSACrypt NVIDIA ObjectInjection Obsolescencia programada oceanlotus OFAC Office office 365 oilrig okcupid omnibees omnirat OneDrive onion ONO ONTSI OpenBSD OpenOffice opensouthcode OpenSSH OpenSSL openSuSE openwrt Opera opsec Oracle origin orion oscomerce oscorp osi OS X OTRS outlok Outlook overflow owasp p30 package manager pakistan Paloalto parche parches password password checkup Passwords paswords Patch Tuesday path transversal Path Traversal patrón Payday paypal pdf pear pegasus pewdiepie PhantomNet Pharming Phishing phising Photoshop PHP php-fpm phpmyadmin Picreel piercer pila bluetooth PirateMatryoshka Pixel Play Store plugin Plugins plutotv Poc pod policia policykit policía polkit porn portabilidad PoS PostgreSQL powershell ppp Predator the Thief prensa Privacidad privacy privadas privesc privilege escalation privilegios ProCC ProffPoint proftpd Project Zero Promethium prosegur proxy prueba de concepto psg PsiXBot ptp puerto rico pulsesecure Pulse Secure putty pwn Pwn2Own PyRAT python python3 python 3.8.0 PyVil Qakbot Qbot QNAP QSnatch qualcomm QuickTime quora raas ragnar ragnar locker Ramsay Healt Care RAM scraping ramsonware rana rankmatch ransom ransomware rapid7 RAT RATs ratsnif razer rce rconfig rdp RDS realtek recaptcha reconocimiento facial red.es redes Red Hat red team relay Release relleno de contraseñas remote remote code execution Reporte retpoline retrohuinting revelación de información sensible RevengeHotels RevengeRAT reversing reversinglabs REvil Revocation ReVoLTE Rich Mirch rick-rolling rick astley ridl ring riot robo datos robo de cuenta robo de información root Rooted router routeros RTL8195A ruby RubyGems ruffle rumania Rusia rust rutas ryuk sack panic safari safe mode safety detective salto de restricciones saltstack SAML samsung sandbox SandboxEscaper Sangfor sap scam screensaver Secuestro SIM security security bypass Security Discovery Security Patch security update segmentation fault seguridad seguridad física selinux seo server servidor web sextorción sextorsion sha-1 ShadowPad SHAREit SHAttered Shell ShinyHunters shodan side-channel sigred Silence Silex Silkkitie sim simswapping SIM Swapping siri sistema interno Site Isolation skills skimming skype slack Smanager Smartbuilding Smartphone smartwa Smartwatch smb SMBGhost SMBleed smbv3 smishing sms SMTPD snake snapd Snatch SNI sodin Sodinokibi software libre solar Solarwinds Solorigate sonicwall sop sophos source code SourceFourge spam Spearphone spectre speculative spoofing spotify Spy spyware SQL SQL injection Squid ssh ssid ssl ssltrip ssrf stack overflow Stanislav steal stealer steam stop ransomware strandhogg strongpity studio code sudo Sudo apple suecia Sumbrust supercomputador SupportAssist surfingattack symantec symbotic SymCrypt sysinternals SysTech ta505 takeover talleres tarjetas Tarjetas de crédito tchap TCP/IP tcp sack teclado tecnología Telecom Telegram teletrabajo tenyearchallenge tesla tesoro The Community the great suspender ThemeGrill The North Face the witcher 3 thin client ThinOS Thoth thunderbird Thunderbolt ThunderSpy Tianfu Cup ticketmaster tiktok tik tok timbre timing attack Titan M Titan Security Key tls TMUI tmux Tokopedia tomcat tonedeaf tool TOR torbrowser Tor Browser Torisma torpedo TP-Link TraceTogether Trassion Treck Triada trickbot trojan TroubleGrabber troyano TrueBot trusteer rapport turlaapt tvOS twiiter Twitter typosquatting uad uad360 uad360 congreso malaga uam uber ubuntu UEFI ultrasonido uma unaalmes unauthorized access UNC Under the Breach unifying universidad unix Update updates url ursniff use-after-free user-after-free v8 valorant valuevault valve vault 7 vbulletin vcenter server VictoryGate videocamaras videoportero videos vietnam vim virus virustotal visa vishing Visual Studio VKworld Mix Plus vlc vmware VMware Cloud Foundation VMware ESXi vnc voice assistants voip VOS2009 VOS3000 voto vpn vt vulnera vulnerabilidad vulnerabilidades vulnerability Wacom waf wallet Wall Street Market wastedlocker watchOS wav web WebArx WebEx Weblogic Webmin webrtc web share api wechat welcart WhatsApp Wifi Win32k Windows Windows 10 windows defender windows phone Winnti winrar Wireshark wordfence WordPress WordpressTerror Workstation wpa2 wpa3 wroba wyze X.509 XCode xenmobile Xhelper xiaomi XML xmpp xmr XMRig xnu xor ddos XORpass xploit XSS xssi Yellow Pencil Yves Rocher zaeroday zdnet zendesk Zero-Day zero click zero day zerodium zeus zombieload ZoneAlarm zoom zyxel

Copyright © 2021 · Hispasec