Buscar vulnerabilidad en proyectos Java y Python con STEADY

Inicia en el mundo de Microsoft .NET con estos cursos.

Descubre, evalúa y mitiga las vulnerabilidades conocidas en tus proyectos Java y Python

Eclipse Steady apoya a las organizaciones de desarrollo de software en lo que respecta al uso seguro de componentes de código abierto durante el desarrollo de aplicaciones. La herramienta analiza las aplicaciones Java y Python para:

detectar si dependen de componentes de código abierto con vulnerabilidades conocidas,
evidencia sobre la ejecución de código vulnerable en un contexto de aplicación determinado (mediante la combinación de técnicas de análisis estático y dinámico), y apoya a los desarrolladores en la mitigación de tales dependencias.

En comparación con otras herramientas, la detección está centrada en el código y se basa en el uso, lo que permite una detección y evaluación más precisas que las herramientas que se basan en metadatos. Es una colección de herramientas de análisis del lado cliente, microservicios y front-ends web OpenUI5 enriquecidos.

Inicio rápido

Guía para configurar los servicios de backend de Eclipse Steady.

Requisitos previos

  • git
  • docker
  • docker-compose

Clonar localmente el repositorio Steady

git clone https://github.com/eclipse/steady.git

Personaliza el archivo docker/.env para que se ajuste a tus necesidades, asegúrate de establecer la versión que quieres ejecutar en VULAS_RELEASE.

cp docker/.env.sample docker/.env

En docker/.env debes configurar al menos POSTGRES_USER=, también debes configurar el usuario y la contraseña de HAPROXY así como las credenciales para acceder al frontend de los bugs.

Ahora estás listo para ejecutar el sistema:

(cd docker && docker-compose up -d --build)

Para comprobar si todo se ha iniciado correctamente, comprueba la página http://localhost:8033/haproxy?stats. Todos los puntos finales deberían aparecer en verde (quizás quieras sustituir localhost por el nombre real de tu máquina).


Funciones

  • La detección de código vulnerable se realiza descubriendo firmas de método en archivos Java y comparando su código fuente y byte con la versión vulnerable y fija (como se conoce en la confirmación de corrección). Como tal, la detección es más precisa que para los enfoques basados en metadatos (menos falsos positivos y falsos negativos). En particular, es robusto contra la reagrupación, una práctica muy común en el ecosistema Java.
  • La evaluación de las dependencias vulnerables por parte de los desarrolladores de aplicaciones y expertos en seguridad es compatible con la información sobre la ejecución potencial y real de código vulnerable. Esta información se basa en el análisis del gráfico de llamadas y en la información de rastreo recogida durante las pruebas JUnit y de integración. Al descender a la granularidad de los métodos individuales, los desarrolladores de aplicaciones reciben la pila de llamadas potencial y real desde el código de la aplicación hasta el código vulnerable.
  • La adición de nuevas vulnerabilidades a la base de conocimientos no requiere volver a escanear las aplicaciones. En otras palabras, justo después de una adición a la base de conocimientos, se sabe inmediatamente si las aplicaciones previamente escaneadas están afectadas o no.
  • Las propuestas de mitigación tienen en cuenta la parte alcanzable de las dependencias, es decir, el conjunto de métodos que pueden ser potencialmente alcanzados desde la unión del código de la aplicación las ejecuciones reales observadas durante las pruebas. Esta información se utiliza para calcular varias métricas que permiten a los desarrolladores elegir el mejor reemplazo no vulnerable de una dependencia vulnerable (el mejor en cuanto a la no ruptura y con menor probabilidad de regresión).
  • Los hallazgos individuales pueden ser eximidos si los desarrolladores llegan a la conclusión de que una vulnerabilidad no puede ser explotada en un contexto de aplicación determinado. Esta información puede ser mantenida de manera auditable (incluyendo la marca de tiempo y la información del autor) y típicamente previene las excepciones de construcción durante los canales CI/CD.
  • Los CERT internos de la organización pueden consultar todas las aplicaciones afectadas por una determinada vulnerabilidad. Esta función permite, por ejemplo, a las grandes organizaciones de desarrollo con muchas aplicaciones de software desarrolladas por unidades de desarrollo distribuidas y descentralizadas.

Requisitos

Eclipse Steady tiene una arquitectura distribuida compuesta por un par de microservicios spring Boot, dos frontend web y una serie de escáneres/plugins del lado cliente, que realizan el análisis real del código de aplicación y dependencia en sistemas de compilación o estaciones de trabajo para desarrolladores.

Para compilar/probar todo el proyecto, se necesitan las siguientes herramientas:

  • JDK 8
  • Maven 3.3+ para el análisis de proyectos Maven utilizando plugin-maven
  • Python 3, así como los paquetes pip, virtualenv y setuptools (pip install -r requirements.txt) para el análisis de aplicaciones Python mediante cli-scanner
  • Gradle 4 para el análisis de proyectos Gradle utilizando plugin-gradle.

Construir y probar

Eclipse Steady está construido con Maven. Para habilitar el soporte para Gradle, es necesario activar el perfil (-P gradle)

mvn clean install

Durante la fase de instalación de mvn se ejecutan todas las pruebas. Las pruebas de ejecución prolongada se pueden deshabilitar con el indicador:

-DexcludedGroups=com.sap.psr.vulas.shared.categories.Slow

Todas las pruebas se pueden desactivar con el indicador -DskipTests.

Limitaciones

Debido a la falta actual de un mecanismo de autenticación y autorización, NO se recomienda ejecutar los front-end web y los microservicios del lado del servidor en sistemas accesibles desde Internet.

Otras limitaciones:

Los análisis estáticos y dinámicos no se implementan para Python
No se admiten los archivos multi-lanzamiento de Java 9 (las clases por debajo de META-INF/versions simplemente se ignoran)

Esgeeks

Queremos seguir creando cursos gratuitos en nuestro canal de YouTube. Solo te pedimos tu ayuda para crecer más. Suscríbete por favor. (Cursos, talleres y charlas gratis para ti).

Ernesto Mota
Nací en el d.f., sigo siendo defeño, hoy radico en la hermosa ciudad de Cuernavaca, Morelos, soy Ing. en Sistemas computacionales, con un posgrado en Tecnologías de información, Doctorando en ambientes virtuales de aprendizaje y realidad aumentada, Tecnólogo es mi categoría laboral, y mi linea de investigación es la realidad aumentada aplicada a nuevos entornos de aprendizaje.

Últimos artículos

a

Publicasciones relaciodadas