- Qu’est-ce que Java ?
- Pourquoi Java a-t-il été initialement créé ?
- Les principaux frameworks Java et leurs menaces de sécurité:
- Struts
- Spring MVC
- Google Web Toolkit (GWT)
- Hibernate
- OWASP ESAPI
- Java Server Faces (JSF)
- JSP
- Vulnérabilités de sécurité Java
- Vulnérabilités de sécurité Java à haut risque:
- Sécuriser votre Java
Qu’est-ce que Java ?
Lancé initialement en mai 1995, Java est le langage de programmation le plus populaire au monde avec plus de 95 % des ordinateurs de bureau des entreprises fonctionnant sous Java. Jave est conçu pour permettre aux développeurs « d’écrire une fois, d’exécuter n’importe où » (WORA), ce qui signifie que le code écrit en Java est capable de s’exécuter sur toutes les plates-formes avec le support Java sans avoir besoin de recompilation supplémentaire.
Java est un langage de programmation polyvalent concurrent, basé sur des classes, orienté objet, célébré pour sa rapidité, sa sécurité et sa fiabilité et que l’on retrouve partout, des sites web les plus populaires aux appareils mobiles et des consoles de jeux aux centres de données des entreprises et au-delà. Sous licence GNU General Public License, Java peut être téléchargé gratuitement.
Java est influencé par de nombreux langages de programmation, notamment C++, C#, Eiffel, Mesa, Modula-3, Objective-C et d’autres et a joué un rôle important dans le développement de nombreux langages de programmation populaires tels que Groovy, Hack, Haxe, Kotlin, PHP, Python, Scala et d’autres. Dans le monde, il y a plus de 9 millions de développeurs Java qui, s’ils se regroupaient tous et formaient un pays, seraient le 95e plus grand pays par la population dans le monde, ou, s’ils créaient une ville, elle serait à égalité pour le 20e plus grand du monde.
Pourquoi Java a-t-il été initialement créé ?
Au début des années 1990, étendre la puissance de l’informatique en réseau à la vie quotidienne était considéré comme une vision radicale et un groupe d’ingénieurs de Sun Microsystem, connu sous le nom de « Green Team », dirigé par James Gosling, a cherché à réaliser cette vision en inaugurant la prochaine vague de l’informatique par l’union des appareils grand public et des ordinateurs avec la création de Java. Cette équipe d’ingénieurs de Sun était légèrement en avance sur son temps car elle concentrait initialement ses efforts sur la télévision interactive et le langage de ce projet s’appelait à l’origine Oak, d’après l’arbre situé à l’extérieur du bureau de Gosling, avant d’être renommé Java d’après le café Java.
Bien que Java ait été en avance sur la télévision interactive, il est apparu au même moment où l’internet commençait à prendre son essor et correspondait parfaitement à cette technologie émergente. En 1995, il a été annoncé que le navigateur internet Netscape Navigator intégrerait la technologie Java et, depuis, les principaux navigateurs internet ont intégré la possibilité d’exécuter des applets Java.
Comme pour la plupart des langages de codage, le développement de Java a été guidé par un certain nombre de principes qui ont influencé la création et le développement continu de Java :
- Il doit être « simple, orienté objet et familier ».
- Il doit être « robuste et sécurisé ».
- Il doit être « neutre en termes d’architecture et portable ».
- Il doit s’exécuter avec une « haute performance ».
- Il doit être « interprété, threadé et dynamique ».
Les principaux frameworks Java et leurs menaces de sécurité:
Struts
Struts est un framework open-source gratuit, basé sur l’action, Modèle-vue-contrôleur (MVC) utilisé pour développer des applications web Java EE. Sorti en mai 2000, Struts a été écrit par Craig McClanahan et donné à la Fondation Apache, l’objectif principal derrière Struts est la séparation du modèle (logique d’application qui interagit avec une base de données) de la vue (pages HTML présentées au client) et du contrôleur (instance qui passe les informations entre la vue et le modèle).
Un problème de sécurité majeur auquel sont confrontées les applications construites avec Struts est l’exécution de code à distance. En 2010, Struts2, un framework populaire de Struts a été téléchargé plus d’un million de fois par plus de 18 000 organisations et comprenait une classe de faiblesse unique qui permettait
aux parties malveillantes d’exécuter du code arbitraire sur toute application web Struts2.
Spring MVC
Spring MVC est un framework d’application Spring écrit par les développeurs de Spring en réponse à ce qu’ils considéraient comme des défauts de conception dans d’autres frameworks populaires, tels que la séparation insuffisante entre les couches de présentation et de traitement des demandes, et entre la couche de traitement des demandes et le modèle. Comme Struts, Spring MVC est également un framework basé sur des actions. En 2011, Spring MVC, avec Struts, était considéré comme l’une des bibliothèques vulnérables les plus téléchargées en raison de CVE-2012-3451, cette version avait été téléchargée plus de 18 millions de fois entre 2011-2012 par plus de 43 000 organisations
Google Web Toolkit (GWT)
En tant qu’ensemble d’outils open source qui permettent aux développeurs de créer et de maintenir des applications frontales JavaScript complexes en Java, Google Web Toolkit (GWT) est gratuit et utilisé à la fois par Google et par des milliers de développeurs à travers le monde. GWT a été conçu pour permettre le développement productif d’applications web de haute performance sans que le codeur ait besoin d’avoir une connaissance avancée des bizarreries du navigateur, de XMLHttpRequest et de JavaScript. En raison du fait que GWT produit du code JavaScript, les applications GWT doivent être sécurisées contre toutes les menaces auxquelles sont confrontées les applications JavaScript.
Hibernate
Hibernate ORM, connu simplement sous le nom d’Hibernate, est un framework de mapping objet-relationnel pour le langage Java. Conçu pour le mappage des classes Java vers les tables des bases de données et le mappage des types de données Java vers les types de données SQL. Les applications contenant Hibernate peuvent être menacées par des injections SQL si des requêtes SQL, ou HQL, sont générées en concaténant des chaînes de caractères. Une façon de s’en protéger est d’utiliser des paramètres nommés dans tout SQL ou HQL.
OWASP ESAPI
OWASP ESAPI, l’OWASP Enterprise Security API, est une bibliothèque gratuite, open source, de contrôle de la sécurité des applications web qui simplifie l’écriture d’applications à moindre risque pour les développeurs tandis que les bibliothèques ESAPI sont conçues pour faciliter l’ajout rétroactif de la sécurité dans les applications existantes pour les programmeurs.
Java Server Faces (JSF)
Formalisée en tant que norme par le biais du Java Community Process, Java Server Faces (JSF) est une spécification Java pour la construction d’interfaces utilisateur basées sur des composants pour les applications web. Selon l’OWASP, « JSF ne met pas en œuvre son propre modèle de sécurité mais s’appuie sur la sécurité standard JEE. Cela signifie que le modèle de sécurité du serveur d’application, JAAS ou d’autres implémentations ACL peuvent être utilisés avec le cadre JSF sans aucun effort d’intégration. » Une préoccupation de sécurité pour les applications qui mettent en œuvre JSF est le contrôle d’accès et les problèmes d’autorisation.
JSP
Les pages JavaServer (JSP) sont construites au-dessus de l’API Servlet et permettent d’intégrer du code Java qui est compilé puis exécuté lorsqu’une requête est reçue. Une menace courante pour le code JSP est le cross-site scripting (XSS).
Vulnérabilités de sécurité Java
Bien que la plateforme Java comprenne de nombreuses fonctionnalités conçues pour améliorer la sécurité des applications Java, il est essentiel pour les développeurs de s’assurer que leur code Java est exempt de vulnérabilités dès les premières étapes du cycle de vie du développement logiciel. Le meilleur point de départ pour sécuriser le code Java est d’éviter les erreurs de sécurité Java telles que le fait de ne pas restreindre l’accès aux classes et aux variables, de ne pas finaliser les classes, de s’appuyer sur le scoop du paquetage et autres. Il est également important que les développeurs se familiarisent avec les menaces de sécurité courantes auxquelles est confronté le code Java, ainsi qu’avec les frameworks Java. Pour plus d’informations sur la sécurisation du code Java pendant le développement, lisez 9 erreurs de sécurité que chaque développeur Java doit éviter ici.
Vulnérabilités de sécurité Java à haut risque:
Plus de 95 % de tous les postes de travail d’entreprise dans le monde exécutent Java, il y a de graves conséquences lorsque des vulnérabilités dans le code Java arrivent en production et sont exploitées par des parties malveillantes. Voici une liste de certaines des menaces à haut risque auxquelles sont confrontées les applications écrites en Java :
- Injections de code
- Injections de commande
- Injection de chaîne de connexion
- InjectionLDAP
- Reflected XSS
- Resource. Injection
- Second Order SQL Injection
- SQL Injection
- Stored XSS
- XPath Injection
Sécuriser votre Java
Checkmarx’s CxSAST, une solution d’analyse statique du code, se distingue parmi les solutions de test Java non seulement comme la solution qui préservera votre code Java des problèmes de sécurité et de conformité, mais aussi comme l’outil qui contribuera à l’avancement de votre organisation en matière de maturité de sécurité des applications.
CxSAST fonctionne avec les outils que vos développeurs utilisent déjà car il s’intègre de manière transparente à la plupart des programmes de développement courants disponibles à chaque étape du SDLC. Les fonctionnalités de CxSAST, telles que l’analyse incrémentale du code et le meilleur emplacement de correction, l’ont rendu idéal pour tout environnement de développement continu à intégration continue (CICD).
Lorsque des vulnérabilités sont détectées dans le code Java, CxSAST n’identifiera pas seulement le meilleur emplacement de correction, mais offrira également des ressources au développeur pour comprendre comment le vecteur d’attaque fonctionne ainsi que des conseils de remédiation qui l’aideront à s’assurer que des erreurs similaires sont évitées à l’avenir.