- ¿Qué es Java?
- ¿Por qué se creó Java inicialmente?
- Los principales marcos de trabajo de Java y sus amenazas de seguridad:
- Struts
- Spring MVC
- Google Web Toolkit (GWT)
- Hibernate
- OWASP ESAPI
- Java Server Faces (JSF)
- JSP
- Vulnerabilidades de seguridad de Java
- Vulnerabilidades de seguridad de Java de alto riesgo:
- Securing your Java
¿Qué es Java?
Lanzado originalmente en mayo de 1995, Java es el lenguaje de programación más popular del mundo, con más del 95% de todos los escritorios empresariales funcionando con Java. Jave está diseñado para permitir a los desarrolladores «escribir una vez, ejecutar en cualquier lugar» (WORA), lo que significa que el código escrito en Java es capaz de ejecutarse en todas las plataformas con soporte de Java sin necesidad de recompilación adicional.
Java es un lenguaje de programación concurrente, basado en clases y orientado a objetos, de propósito general, que es célebre por ser rápido, seguro y fiable y que se encuentra en todas partes, desde los sitios web más populares hasta los dispositivos móviles y desde las consolas de juegos hasta los centros de datos de las empresas y más allá. Licenciado bajo la licencia pública general de GNU, Java es de descarga gratuita.
Java está influenciado por numerosos lenguajes de programación, como C++, C#, Eiffel, Mesa, Modula-3, Objective-C y otros, y ha desempeñado un papel importante en el desarrollo de muchos lenguajes de programación populares, como Groovy, Hack, Haxe, Kotlin, PHP, Python, Scala y otros. En todo el mundo, hay más de 9 millones de desarrolladores de Java que, si se unieran y formaran un país, sería el 95º país más grande por población en el mundo, o, si crearan una ciudad, estaría empatada con la 20ª más grande del mundo.
¿Por qué se creó Java inicialmente?
A principios de la década de los 90, extender el poder de la informática en red a la vida cotidiana se consideraba una visión radical y un grupo de ingenieros de Sun Microsystem, conocido como el «Equipo Verde», liderado por James Gosling, trató de hacer realidad esta visión marcando el comienzo de la siguiente ola en la informática a través de la unión de dispositivos de consumo y ordenadores con la creación de Java. Este equipo de ingenieros de Sun se adelantó un poco a su tiempo, ya que sus esfuerzos se centraron inicialmente en la televisión interactiva y el lenguaje de este proyecto se llamó originalmente Oak, en honor al árbol que había fuera de la oficina de Gosling, antes de ser rebautizado como Java después del café Java.
Si bien Java se adelantó a la televisión interactiva, surgió al mismo tiempo que Internet empezaba a despuntar y era un complemento perfecto para esta tecnología emergente. En 1995 se anunció que el navegador de Internet Netscape Navigator incorporaría la tecnología Java y, desde entonces, los principales navegadores web han incorporado la capacidad de ejecutar applets de Java.
Como ocurre con la mayoría de los lenguajes de codificación, el desarrollo de Java se guió por una serie de principios que influyeron en la creación y el desarrollo continuado de Java:
- Debe ser «simple, orientado a objetos y familiar».
- Debe ser «robusto y seguro».
- Debe ser «neutral en cuanto a la arquitectura y portable».
- Debe ejecutarse con «alto rendimiento».
- Debe ser «interpretado, enhebrado y dinámico».
Los principales marcos de trabajo de Java y sus amenazas de seguridad:
Struts
Struts es un marco de trabajo de código abierto basado en acciones, Modelo-Vista-Controlador (MVC) utilizado para desarrollar aplicaciones web Java EE. Lanzado en mayo de 2000, Struts fue escrito por Craig McClanahan y donado a la Fundación Apache, el objetivo principal detrás de Struts es la separación del modelo (lógica de la aplicación que interactúa con una base de datos) de la vista (páginas HTML presentadas al cliente) y el controlador (instancia que pasa información entre la vista y el modelo).
Una de las principales preocupaciones de seguridad a las que se enfrentan las aplicaciones construidas con Struts es la ejecución remota de código. En 2010, Struts2, un popular marco de trabajo de Struts fue descargado más de 1 millón de veces en 2010 por más de 18.000 organizaciones e incluía una clase única de debilidad que permitía a
partes maliciosas ejecutar código arbitrario en cualquier aplicación web de Struts2.
Spring MVC
Spring MVC es un marco de aplicación de Spring escrito por los desarrolladores de Spring como respuesta a lo que veían como defectos de diseño en otros marcos populares, como la insuficiente separación entre las capas de presentación y manejo de solicitudes, y entre la capa de manejo de solicitudes y el modelo. Al igual que Struts, Spring MVC también es un framework basado en acciones. En 2011, Spring MVC, junto con Struts, fue considerada una de las librerías vulnerables más descargadas debido a CVE-2012-3451, esta versión había sido descargada más de 18 millones de veces entre 2011-2012 por más de 43.000 organizaciones
Google Web Toolkit (GWT)
Como conjunto de herramientas de código abierto que permite a los desarrolladores crear y mantener complejas aplicaciones frontales de JavaScript en Java, Google Web Toolkit (GWT) es gratuito y utilizado tanto por Google como por miles de desarrolladores de todo el mundo. GWT fue diseñado para permitir el desarrollo productivo de aplicaciones web de alto rendimiento sin que el programador necesite tener un conocimiento avanzado de las peculiaridades del navegador, XMLHttpRequest y JavaScript. Debido al hecho de que GWT produce código JavaScript, las aplicaciones GWT necesitan ser aseguradas contra todas las amenazas que enfrentan las aplicaciones JavaScript.
Hibernate
Hibernate ORM, conocido simplemente como Hibernate, es un marco de mapeo objeto-relacional para el lenguaje Java. Está diseñado para mapear clases Java a tablas de bases de datos y mapear de tipos de datos Java a tipos de datos SQL. Las aplicaciones que contienen Hibernate pueden verse amenazadas por inyecciones SQL si se generan consultas SQL, o HQL, concatenando cadenas. Una forma de protegerse contra esto es utilizar parámetros con nombre en cualquier SQL o HQL.
OWASP ESAPI
OWASP ESAPI, la API de seguridad empresarial de OWASP, es una biblioteca de control de seguridad de aplicaciones web, gratuita y de código abierto, que simplifica a los desarrolladores la escritura de aplicaciones de menor riesgo, mientras que las bibliotecas ESAPI están diseñadas para facilitar a los programadores la adición retroactiva de seguridad en las aplicaciones existentes.
Java Server Faces (JSF)
Formalizado como estándar a través del Java Community Process, Java Server Faces (JSF) es una especificación de Java para construir interfaces de usuario basadas en componentes para aplicaciones web. Según OWASP «JSF no implementa su propio modelo de seguridad, sino que se basa en la seguridad estándar de JEE. Esto significa que tanto el modelo de seguridad del servidor de aplicaciones como JAAS u otras implementaciones de ACL pueden utilizarse con el marco JSF sin ningún esfuerzo de integración». Una preocupación de seguridad para las aplicaciones que implementan JSF son los problemas de Control de Acceso y Autorización.
JSP
JavaServer Pages (JSP) se construye sobre la API Servlet y permite la incrustación de código Java que se compila y luego se ejecuta cuando se recibe una solicitud. Una amenaza común para el código JSP es el cross-site scripting (XSS).
Vulnerabilidades de seguridad de Java
Aunque la plataforma Java incluye numerosas características diseñadas para mejorar la seguridad de las aplicaciones Java, es fundamental que los desarrolladores se aseguren de que su código Java está libre de vulnerabilidades en las primeras etapas del ciclo de vida de desarrollo del software. Evitar los errores de seguridad de Java, como no restringir el acceso a las clases y variables, no finalizar las clases, confiar en las primicias de los paquetes y otros, es el mejor punto de partida a la hora de asegurar el código Java, también es importante que los desarrolladores se familiaricen con las amenazas de seguridad más comunes a las que se enfrenta el código Java, así como con los frameworks de Java. Para obtener más información sobre la seguridad del código Java durante el desarrollo, lea 9 errores de seguridad que todo desarrollador de Java debe evitar aquí.
Vulnerabilidades de seguridad de Java de alto riesgo:
Con más del 95% de todos los escritorios empresariales del mundo que ejecutan Java, existen graves consecuencias cuando las vulnerabilidades del código Java llegan a la producción y son explotadas por partes maliciosas. A continuación se enumeran algunas de las amenazas de alto riesgo a las que se enfrentan las aplicaciones escritas en Java:
- Inyecciones de código
- Inyecciones de comandos
- Inyección de cadenas de conexión
- Inyección de LDAP
- XSS reflejado
- Recursos Injection
- Second Order SQL Injection
- SQL Injection
- Stored XSS
- XPath Injection
Securing your Java
Checkmarx’s CxSAST, una solución de análisis de código estático, destaca entre las soluciones de pruebas de Java no sólo como la solución que mantendrá su código Java libre de problemas de seguridad y cumplimiento, sino también como la herramienta que contribuirá al avance de su organización en lo que respecta a la madurez de la seguridad de las aplicaciones.
CxSAST funciona con las herramientas que sus desarrolladores ya están utilizando, ya que se integra perfectamente con la mayoría de los programas de desarrollo comunes disponibles en cada etapa del SDLC. Las características de CxSAST, como el escaneo de código incremental y la mejor ubicación de la corrección, lo hacen ideal para cualquier entorno de desarrollo continuo de integración continua (CICD).
Cuando se detectan vulnerabilidades en el código Java, CxSAST no sólo identificará la mejor ubicación de la corrección, sino que también ofrecerá recursos al desarrollador para que comprenda cómo funciona el vector de ataque, así como consejos de corrección que le ayudarán a garantizar que se eviten errores similares en el futuro.