Aller au contenu

WAR : Web Application Archive (Java)

Infrastructure

WAR : Web Application Archive, fichier d'archive qui contient une application web Java prête à être déployée dans un serveur d'applications. « Toute l'application dans un seul colis, code, bibliothèques et configuration compris », par analogie avec la valise de l'expatrié, où l'on range aussi les vieilles affaires dont personne ne se souvient de la présence.

Contenu : Un WAR est une archive au format ZIP qui suit une arborescence fixe : les pages et ressources statiques à la racine, et sous WEB-INF les classes compilées, les bibliothèques en fichiers JAR (Java Archive) et le descripteur de déploiement. Le serveur d'applications, Tomcat ou Jetty par exemple, le décompresse et le sert.

Dans le débat monolithe et microservices : Le WAR est l'archétype de l'artefact unique : un seul fichier déployé contient tous les domaines de l'application. Le format ne dit rien de la qualité du découpage interne, ce qui permet d'y loger aussi bien un monolithe modulaire soigné qu'un enchevêtrement que plus personne n'ose recompiler.

Côté sécurité : Les bibliothèques embarquées voyagent avec l'archive : une dépendance vulnérable reste présente tant que le WAR n'est pas reconstruit, même si le serveur qui l'héberge est à jour. La crise Log4Shell de décembre 2021 a rappelé à beaucoup d'organisations qu'elles ignoraient ce que contenaient leurs propres archives.

Ce qui arrive si on s'en passe

Une archive WAR déployée puis oubliée continue de servir ses bibliothèques d'origine, quelle que soit leur ancienneté. Sans inventaire de son contenu, une vulnérabilité publiée dans une dépendance embarquée reste invisible aux outils qui n'examinent que le système hôte, et le serveur d'applications, scrupuleusement mis à jour, sert fidèlement un code troué. On découvre alors la composition réelle de l'application au moment où un attaquant l'a déjà inventoriée pour nous.

Explication de la marmotte

Une application web écrite en Java est souvent livrée sous la forme d'un seul fichier, appelé WAR. Ce fichier rassemble le programme, les pages du site et tous les morceaux de code empruntés à d'autres projets. On le dépose sur un serveur, qui le déballe et le fait fonctionner. Le problème, c'est que ces morceaux empruntés vieillissent dans le fichier : s'ils contiennent une faille, il faut reconstruire et redéposer le WAR pour la corriger.

Où ce terme est utilisé

← Tout le glossaire