No dia 9 de março de 2015, a iniciativa de segurança Project Zero Google, publicou um post em seu blog, tendo como base o artigo científico “ Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors” (Alterando bits de memória sem acessá-los: um estudo experimental sobre os erros em distúrbios da DRAM, em tradução livre).
O post coloca de forma simplificada o artigo científico, explicando que o distúrbio consiste na ideia de que varias mudanças de dados entre duas células de informação de forma rápida e constante podem influenciar uma terceira, através de interferência eletromagnética, isto é possível, já que as células de memória são cada vez menores e alinhadas de forma mais próxima. Como o ataque depende da posição física da memória, a célula atacada, pode estar em um espaço fora da memória virtual do processo, possibilitando ataques de escalonamento de privilégio, saída de sandbox, etc. O time Project Zero conseguiu desenvolver dois exploits baseados no Row Hammering: o primeiro deles, consistia no escape da sandbox NaCi, utilizada no navegador Chrome e o segundo consistia em um escalonamento de privilégio em sistemas Linux. Como o primeiro exploit consistia em um perigo potencial para os navegadores da empresa, uma forma de contornar o problema foi desabilitar a instrução CLFLUSH da sandbox NaCi, necessária para o funcionamento do exploit.
Porém, este ajuste pode não ser suficiente, já que pesquisadores da universidade de Cornell publicaram um paper em que propõem um ataque de row hammering através de puro javascript! A prova de conceito row-hammer.js apresentou resultados positivos em um caso muito específico: um Lenovo x230 Ivy Bridge Laptop, com as configurações padrão com microarquitetura Haswell CPU (presente na linha Intel i). Porém ainda não foi apresentada a implementação de um exploit baseado nesta prova de conceito.
Esta vulnerabilidade era primeiramente tida como excepcionalmente de modelos de memória DDR3. Porém, em um paper publicado pela Third I/O, uma empresa provedora de banda larga de Austin, Texas, parece mostrar que o distúrbio pode ser explorado em memórias DDR4, mesmo que possuam a tecnologia ECC (error-correction code), na nova abordagem da empresa Third I/O, eram aplicados padrões de informação randômicos em setores de memória.
Parece que o maior obstáculo para a criação de ataques efetivos do row-hammering é a coincidência de um posicionamento físico próximo entre as células de memória e um posicionamento virtual que forneça uma boa vantagem, porém agora com a crescente curiosidade dos pesquisadores e hackers de plantão, talvez nos próximos meses novidades interessantes poderão ser vistas.
Um distúrbio de hardware de uma ordem desta magnitude, e um possível vetor que pode ser aplicado em qualquer site é um prato tentador para qualquer indivíduo disposto a fazer algum estrago. =)
Links:
http://googleprojectzero.blogspot.com.br/2015/03/exploiting-dram-rowhammer-bug-to-gain.html (Post do Project Zero)
http://arstechnica.com/security/2015/08/dram-bitflipping-exploit-for-attacking-pcs-just-add-javascript/ (Row Hammering através de javascript)
http://arstechnica.com/security/2016/03/once-thought-safe-ddr4-memory-shown-to-be-vulnerable-to-rowhammer/ (row-hammering pode afetar DDR4)