{"id":1879,"date":"2026-02-06T18:32:52","date_gmt":"2026-02-06T21:32:52","guid":{"rendered":"https:\/\/www.nerdadas.com\/blog\/?p=1879"},"modified":"2026-02-08T18:55:33","modified_gmt":"2026-02-08T21:55:33","slug":"vulnerabilidades-de-hardware-101-rowhammer","status":"publish","type":"post","link":"https:\/\/www.nerdadas.com\/blog\/vulnerabilidades-de-hardware-101-rowhammer\/","title":{"rendered":"Vulnerabilidades de Hardware 101 | Rowhammer"},"content":{"rendered":"\n<p>Estamos acostumbrados a escuchar sobre vulnerabilidades de software, malas configuraciones o problemas en aplicaciones que se convierten r\u00e1pidamente en vectores de ciberseguridad. Hoy te quiero hablar de las vulnerabilidades de Hardware, en particular de una vulnerabilidad conocida como <strong>ROWHAMMER<\/strong>!<\/p>\n\n\n\n<p>La vulnerabilidad <strong>Rowhammer<\/strong> es uno de los bugs de seguridad m\u00e1s increibles con los que me he topado. No se trata de un error de software o c\u00f3digo mal escrito, sino de un bug muy dificil de mitigar en dispositivos electr\u00f3nicos en general, en este caso, las <strong>memorias RAM<\/strong>.<\/p>\n\n\n\n<p>Imaginate una biblioteca donde, si golpeas con mucha fuerza y rapidez un estante, las vibraciones hacen que un libro del estante de arriba se caiga o cambie de lugar. Eso es exactamente lo que hace <strong>Rowhammer<\/strong> con los datos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 es y c\u00f3mo funciona?<\/h2>\n\n\n\n<p>En la memoria DRAM, los datos se guardan en celdas (condensadores) dispuestas en una cuadr\u00edcula de filas y columnas. Debido a que los chips son cada vez m\u00e1s peque\u00f1os y densos, las celdas est\u00e1n demasiado cerca unas de otras.<\/p>\n\n\n\n<p>Cuando un programa accede a una fila de memoria (la \u00ababre\u00bb), se genera un peque\u00f1o campo <strong>electromagn\u00e9tico<\/strong>. Si un atacante accede a esa fila miles de veces por segundo (<strong>\u00abmartilleo\u00bb<\/strong> o <em>hammering<\/em>, de ah\u00ed la palabra), la interacci\u00f3n el\u00e9ctrica puede causar que las celdas de las filas adyacentes pierdan su carga y <strong>cambien su valor de 0 a 1 o viceversa<\/strong>. Esto se conoce como un <strong>bit flip<\/strong>.<\/p>\n\n\n\n<p>Esta \u00abinterferencia de fila\u00bb ya se conoc\u00eda, es un efecto f\u00edsico de equipos con ese tipo de electr\u00f3nica pero hasta ese momento se consideraba un problema de fiabilidad, no de seguridad.<\/p>\n\n\n\n<p>En 2014 unos investigadores de Intel y la universidad de Carnegie Mellon teorizaron y escrbieron un art\u00edculo sobre esto. Te dejo el link: <a href=\"https:\/\/people.inf.ethz.ch\/omutlu\/pub\/RowHammer-Retrospective_ieee_tcad19.pdf\"><em>\u201cFlipping Bits in Memory Without Accessing Them\u201d<\/em> (2014). <\/a>Sobre una teor\u00eda estos pibes demostraron que pod\u00edan corromper la memoria de una computadora com\u00fan sin necesidad de permisos especiales, simplemente ejecutando un c\u00f3digo que leyera memoria muy r\u00e1pido.<\/p>\n\n\n\n<p>Ni bien sali\u00f3 este art\u00edculo todo el mundo empez\u00f3 a tratar de demostrar que se pod\u00eda hackear us\u00e1ndolo.<\/p>\n\n\n\n<p>Los ataques fueron escalando, te dejo los m\u00e1s importantes que encontr\u00e9:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Escalada de Privilegios (2015)<\/h3>\n\n\n\n<p>Sino conoces Google Project Zero pegate una vuelta por ac\u00e1: <a href=\"https:\/\/projectzero.google\/\">https:\/\/projectzero.google\/<\/a> pero ah\u00ed arranc\u00f3 todo.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Google Project Zero:<\/strong> Mark Seaborn demostr\u00f3 que pod\u00eda usar Rowhammer para alterar las <strong>Tablas de P\u00e1ginas<\/strong> del kernel de Linux. Al cambiar un bit en estas tablas, un programa sin privilegios pod\u00eda obtener acceso total a toda la memoria f\u00edsica del sistema (root).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ataques desde el Navegador y M\u00f3viles (2015-2016)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Rowhammer.js:<\/strong> Investigadores demostraron que se pod\u00eda ejecutar el ataque usando solo <strong>JavaScript<\/strong> al visitar una p\u00e1gina web maliciosa. (Tremeeendooooo)<\/li>\n\n\n\n<li><strong>DRAMMER:<\/strong> Se demostr\u00f3 que los tel\u00e9fonos <strong>Android<\/strong> tambi\u00e9n eran vulnerables, permitiendo el \u00abrooteo\u00bb del tel\u00e9fono mediante una aplicaci\u00f3n maliciosa sin permisos.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ataques Remotos (2018)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Throwhammer:<\/strong> Investigadores de la Vrije Universiteit Amsterdam demostraron que se pod\u00edan causar bit flips a trav\u00e9s de la red (v\u00eda <a href=\"https:\/\/es.wikipedia.org\/wiki\/Remote_direct_memory_access\" data-type=\"link\" data-id=\"https:\/\/es.wikipedia.org\/wiki\/Remote_direct_memory_access\">RDMA<\/a>), sin ejecutar ni una sola l\u00ednea de c\u00f3digo en la m\u00e1quina v\u00edctima.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Etapa 4: Rompiendo las Protecciones (2020 &#8211; 2024)<\/h3>\n\n\n\n<p>La industria respondi\u00f3 con una defensa llamada <strong>TRR (Target Row Refresh)<\/strong>, que detecta el martilleo y refresca las filas vecinas.<sup><\/sup> Sin embargo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TRRespass (2020):<\/strong> Demostr\u00f3 que patrones de martilleo m\u00e1s complejos pod\u00edan \u00abenga\u00f1ar\u00bb a TRR.<\/li>\n\n\n\n<li><strong>Blacksmith (2021):<\/strong> Utiliz\u00f3 patrones de acceso aleatorios\/frecuenciales para evadir las protecciones de las memorias DDR4.(este si fue super famoso)<\/li>\n\n\n\n<li><strong>Phoenix (2024\/2025):<\/strong> Recientemente se descubri\u00f3 que incluso las memorias <strong>DDR5<\/strong> (que se supon\u00edan seguras por tener correcci\u00f3n de errores interna o ECC) son vulnerables a ataques que logran corromper datos antes de que el sistema de correcci\u00f3n pueda actuar.<\/li>\n<\/ul>\n\n\n\n<p>Documentaci\u00f3n que recopil\u00e9:<\/p>\n\n\n\n<p>2014 &#8211; <strong>El descubrimiento original<\/strong> <a href=\"https:\/\/people.inf.ethz.ch\/omutlu\/pub\/RowHammer-Retrospective_ieee_tcad19.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Kim et al. &#8211; ISCA 2014<\/a><\/p>\n\n\n\n<p>2015 &#8211; <strong>Exploit de Google Project Zero<\/strong><a href=\"https:\/\/projectzero.google\/2015\/03\/exploiting-dram-rowhammer-bug-to-gain.html\" target=\"_blank\" rel=\"noreferrer noopener\"> <\/a><a href=\"https:\/\/projectzero.google\/2015\/03\/exploiting-dram-rowhammer-bug-to-gain.html\" target=\"_blank\" rel=\"noreferrer noopener\">Blog de Google Project Zero<\/a><\/p>\n\n\n\n<p>2016 &#8211; <strong>DRAMMER (Android)<\/strong> <a href=\"https:\/\/www.vusec.net\/projects\/drammer\/\" target=\"_blank\" rel=\"noreferrer noopener\">DRAMMER Research<\/a><\/p>\n\n\n\n<p>2018 &#8211; <strong>Throwhammer (Red)<\/strong><a href=\"https:\/\/comsec.ethz.ch\/wp-content\/files\/throwhammer_atc18.pdf\" target=\"_blank\" rel=\"noreferrer noopener\"> <\/a><a href=\"https:\/\/comsec.ethz.ch\/wp-content\/files\/throwhammer_atc18.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Throwhammer Paper<\/a><\/p>\n\n\n\n<p>2021 &#8211; <strong>Blacksmith (DDR4)<\/strong><a href=\"https:\/\/www.google.com\/search?q=https:\/\/comsec.ethz.ch\/research\/dram-security\/blacksmith\/\" target=\"_blank\" rel=\"noreferrer noopener\"> <\/a><a href=\"https:\/\/www.google.com\/search?q=https:\/\/comsec.ethz.ch\/research\/dram-security\/blacksmith\/\" target=\"_blank\" rel=\"noreferrer noopener\">Blacksmith &#8211; ETH Z\u00fcrich<\/a><\/p>\n\n\n\n<p>2024 &#8211; <strong>Phoenix (DDR5)<\/strong><a href=\"https:\/\/www.kaspersky.es\/blog\/phoenix-rowhammer-attack\/31534\/\" target=\"_blank\" rel=\"noreferrer noopener\"> <\/a><a href=\"https:\/\/www.kaspersky.es\/blog\/phoenix-rowhammer-attack\/31534\/\" target=\"_blank\" rel=\"noreferrer noopener\">Vulnerability (Kaspersky)<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Laboratorio<\/h2>\n\n\n\n<p>Estudiando un poco me hice la grandiosa pregunta de: <strong>Soy vulnerable?<\/strong>. Obviamente la respuesta es <strong>SI<\/strong>, pero un<strong> SI condicional<\/strong>. <strong>Todos los equipos con RAM son vulnerables<\/strong> pero hay formas de mitigarlo. <\/p>\n\n\n\n<p><strong>Habilitar ECC:<\/strong> Si tu motherboard y cpu soportan memoria <strong>ECC<\/strong> (Error Correction Code), activalo!. Esto detecta y corrige los cambios de bits en tiempo real.<\/p>\n\n\n\n<p><strong>Actualizar BIOS\/UEFI:<\/strong> Los fabricantes suelen lanzar parches que obligan a la RAM a refrescarse con el doble de frecuencia (2x Refresh Rate), lo que reduce la ventana de tiempo para el martilleo.<\/p>\n\n\n\n<p><strong>Configuraci\u00f3n de Memoria:<\/strong> En algunos BIOS avanzados, puedes buscar la opci\u00f3n <strong>\u00abMaximum Tactivate (tMAC)\u00bb<\/strong> o <strong>\u00abRefresh Interval\u00bb<\/strong> y ajustarla para que sea m\u00e1s frecuente.<\/p>\n\n\n\n<p><strong>La idea de estos mecanismos es evitar que sea un solo martilleo y que se distribuya la carga magn\u00e9tica.<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>De todas formas es importante saber que el <strong>ECC (Error Correction Code)<\/strong> en las RAM de servidores mitiga gran parte de estos ataques, pero hay estudios que han demostrado que si logras voltear 3 o m\u00e1s bits simult\u00e1neamente, incluso el ECC falla. (dato de color).<\/p>\n<\/blockquote>\n\n\n\n<p>Para comprobar si sos vulnerable <strong>(bajo tu responsabilidad):<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#instalamos las dependencias\nsudo apt-get update &amp;&amp; sudo apt-get install -y git build-essential\n\n#Clonamos el repo (este es el poc original de project zero\ngit clone https:\/\/github.com\/google\/rowhammer-test.git\n\ncd rowhammer-test\n\n#Compilamos\nmake\n#y corremos como sudo\nsudo .\/rowhammer_test<\/code><\/pre>\n\n\n\n<p>Tambi\u00e9n hice una b\u00fasqueda de los diferentes exploits disponibles en la web:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>A. Escalada de Privilegios (Root)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Google Project Zero (2015):<\/strong> El primer exploit que demostr\u00f3 c\u00f3mo obtener privilegios de Kernel en Linux alterando las tablas de p\u00e1ginas (PTE).\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/google\/rowhammer-test\" target=\"_blank\" rel=\"noreferrer noopener\">PoC Code (Original)<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>ZenHammer (2024):<\/strong> \n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/comsec-group\/zenhammer\" target=\"_blank\" rel=\"noreferrer noopener\">Repo en GitHub<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>B. Ataques en Navegadores y M\u00f3viles<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Rowhammer.js:<\/strong> \n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/arxiv.org\/abs\/1507.06955\" target=\"_blank\" rel=\"noreferrer noopener\">Paper y Detalles<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>DRAMMER:<\/strong> \n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/vusec\/drammer\" target=\"_blank\" rel=\"noreferrer noopener\">Repo del Exploit (VUSEC)<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>C. Ataques Remotos y de Red<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Throwhammer:<\/strong> Ataque a trav\u00e9s de la red utilizando RDMA (Remote Direct Memory Access), com\u00fan en centros de datos.\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.vusec.net\/projects\/throwhammer\/\" target=\"_blank\" rel=\"noreferrer noopener\">Investigaci\u00f3n t\u00e9cnica<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Nethammer:<\/strong> Similar a Throwhammer, pero utiliza paquetes de red est\u00e1ndar (UDP) para martillear la memoria de un servidor remoto sin c\u00f3digo local. (no encontr\u00e9 exploits)<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>D. Evasi\u00f3n de Defensas Modernas<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Blacksmith (2021):<\/strong> \n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/comsec-group\/blacksmith\" target=\"_blank\" rel=\"noreferrer noopener\">Blacksmith Tool en GitHub<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Phoenix (2024\/2025):<\/strong>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.google.com\/search?q=https:\/\/comsec.ethz.ch\/research\/dram-security\/phoenix\/\" target=\"_blank\" rel=\"noreferrer noopener\">Informaci\u00f3n de Phoenix<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Phoenix \u2013 Rowhammer Attacks on DDR5 ::: PTE Exploit Demo\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/1emxVQ6__qg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Ataque de este \u00faltimo exploit!.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones<\/h2>\n\n\n\n<p><strong>Enterarse de Vulnerabilidades tan cr\u00edticas para los que trabajamos en sistemas es Correr a nuestros datacenters y equipos a ver si son vulnerables y patchearlos para poder vivir felices nuevamente!!.<\/strong> La otra cara de la realidad es que<strong> hay vulnerabilidades que no son relativas sino objetivas<\/strong>, como <strong>RowHammer<\/strong>. Estas vulnerabilidades est\u00e1n presentes y no se pueden remediar completamente, solo Mitigar!.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Como siempre, el desaf\u00edo de TI es vivir con un martillo en la mano y un extintor en la otra!<\/p>\n<\/blockquote>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estamos acostumbrados a escuchar sobre vulnerabilidades de software, malas configuraciones o problemas en aplicaciones que se convierten r\u00e1pidamente en vectores de ciberseguridad. Hoy de lo que te quiero hablar es de la vulnerabilidades de Hardware en particular de una vulnerabilidad conocida como ROWHAMMER! <\/p>\n","protected":false},"author":1,"featured_media":1885,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[766,301,1241,1223,1,17,804],"tags":[958,282,862,37,1425,242,1422,263,869,1426,1017,1424,1423],"class_list":["post-1879","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-curiosidades","category-failswins","category-hardening","category-redes","category-sin-categoria","category-tecnologia","category-ti","tag-bug","tag-hack","tag-hacking","tag-linux","tag-meltdown","tag-network","tag-rowhammer","tag-security","tag-seguridad","tag-spectre","tag-ti","tag-vulnerabilidades","tag-vulnerability"],"_links":{"self":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/1879","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/comments?post=1879"}],"version-history":[{"count":7,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/1879\/revisions"}],"predecessor-version":[{"id":1924,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/posts\/1879\/revisions\/1924"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media\/1885"}],"wp:attachment":[{"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/media?parent=1879"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/categories?post=1879"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nerdadas.com\/blog\/wp-json\/wp\/v2\/tags?post=1879"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}