OWASP Top 10 2021

La versión 2021 del Top 10 de vulnerabilidades en aplicaciones web de OWASP ha sido liberada oficialmente.

Esta lista de vulnerabilidades es una referencia clave en la industria de seguridad informática y conlleva una actualización que es importante que conozcamos quienes estamos involucrados en ella.

Particularmente una de las cosas que llama la atención es la inclusión de una categoría denominada A02: Cryptographic Failures. Esta categoría incluye los debilidades ( CWE ) asociadas a fallas criptográficas ya sea por problemas en las configuraciones o en las implementaciones de la criptografía en las aplicaciones. Entre ellas destacan:

  • Debilidad en las contraseñas.
  • Intercambio de llaves criptográficas sin autenticación.
  • Nivel de entropía insuficiente.
  • Problemas en la generación de datos pseudoaleatorios.
  • Transmisión de información sensible en claro.
  • entre muchos otros.

… seguramente estaré platicando de algunas en el transcurso de los días.

La lista actualizada de vulnerabilidades quedó de la siguiente forma:

  • A01:2021-Broken Access Control
  • A02:2021-Cryptographic Failures
  • A03:2021-Injection
  • A04:2021-Insecure Design
  • A05:2021-Security Misconfiguration
  • A06:2021-Vulnerable and Outdated Components
  • A07:2021-Identification and Authentication Failures
  • A08:2021-Software and Data Integrity Failures
  • A09:2021-Security Logging and Monitoring Failures
  • A10:2021-Server-Side Request Forgery

El enlace oficial y toda la documentación la encuentran directamente en el portal de OWASP.org Top 10.

OpenSSL Cheat Sheet v1.2

OpenSSL reference by Alberto Gonzalez

A new version of the OpenSSL reference has been released.

Version 1.2

These are the changes:

  • Asymmetric encryption: Changes in how to export the public key to be consistent with the encryption command using RSA public key.
  • Asymmetric encryption: Encrypt a file using RSA public key.
  • Asymmetric encryption: Decryption of the previously encrypted file was included.
  • Symmetric encryption: Changes in the decryption of a file using another file as the key, instead of a password.
  • Digital Signatures: Signing a file using SHA-256 and RSA private key.
  • Digital Signatures: Verifying the signature previously generated using the RSA public key file.
  • Working with TLS protocol: Extract the domain certificate from an HTTPS/TLS connection.
  • Working with TLS protocol: nmap command: Display enabled cipher-suites over an HTTPS/TLS Connection.
  • Working with TLS protocol: nmap command: Display enabled cipher-suites over a TLS (HTTPS) Connection using SNI.

OpenSSL Cheat Sheet v1.1

I have released a new OpenSSL Cheat Sheet version. The version 1.1.

You can download the PDF here: https://albertx.mx/wp-content/uploads/2020/07/The-OpenSSL-Cheat-Sheet-v1.1.pdf

or access the online version, here: https://cheatography.com/albertx/cheat-sheets/openssl/

Release notes for version 1.1:

  • Inclusion of openssl command for generating random bytes specifying bytes of length for random data, in “Basics” section.
  • Added the command for displaying digital certificates information in Abstract Sintax Notation One, in “Digital Certificates” section.
  • Inclusion of command for generating a hash with its output in bytes, instead of hex encoding. This command is under “working with hashes” section.

TLS Server Certificate Management NIST Publication

Yesterday The National Institute of Standards and Technology released a new Special Publication ( SP 1800 – 16 ), guideline style, addressing security best practices and recommendations for managing almost everything around TLS and digital certificates.

This extraordinary guideline was written in collaboration with Digicert, Venafi, Thales, F5, MITRE, Symantec. All of them well known technology and security companies around the world.

The document has 4 different parts:

  1. An Executive Summary
  2. Security Risks and Recommended Best Practices
  3. Approach, Architecture and Security Characteristics
  4. How-to Guides.

This is a must for the administration of large-scale TLS server certificates, how to establish a formal TLS certificate management program and it also enumerates all elements that should be considered for inclusion in such a program.

It addresses some specific challenges like: The automatic renewal of digital certificates in production environments, working with DevOps and TLS certificates, implementing an architecture to be protected of attacks hidden in TLS connection tunnels, recommendations for key-lenght, signing algorithms, validity periods in digital certificates, recommendation for crypto-agility (a very popular topic in cryptography these days) and much more.

You can download the complete document directly from its site:

https://www.nist.gov/publications/securing-web-transactions-tls-server-certificate-management

KeyStore Explorer: A great tool for simplifying cryptographic tasks in Java.

Recently I have been testing this tool when I work with Java Key Stores or Trust Stores. It’s KeyStore Explorer.

You can always use command line to execute cryptographic tasks in java using keytool library or bouncy castle, however for many daily activities like generating CSR files, creating cryptographic keys or managing several keystores or trust stores, you prefer a more friendly tool. This is where KeyStore Explorer fits in.

It’s support for cryptographic tasks, according to it’s website, is:

And you can handle, compare and manage many keystore files from the main window and explore their content easily:

It is definitely an extraordinary tool that can be downloaded here: http://keystore-explorer.org/

OpenSSL Cheat Sheet v1.0.5

Today I released the 1.0.5 version of the OpenSSL Cheat Sheet.

Change Control:

  • New additions:
    • Added the Java keytool command to generate Java Key Store files in PERSONAL SECURITY ENVIRONMENTS section.
    • Added two commands to generate CSR files using Elliptic Curve keys instead of RSA keys in DIGITAL CERTIFICATES section.
    • Added the command to generate a CSR file using an existing private key file. Useful when you need to renew your certificate but preserve the private key. DIGITAL CERTIFICATES section.
  • Corrections:
    • A few typo corrections in DIGITAL SIGNATURES.

You can download the PDF version here or access the online version.

Implementations: The Achilles heel in cybersecurity

Heartbleed

There are many new technologies, controls, mechanisms, modules, libraries for protecting and securing assets and information. Usually these new technologies were created and developed by people with good skills in the field, however, one of the main problems is the implementation phase.

Believe it or not, most of the vulnerabilities, either published or zero-day, exist because of a bad or terrible implementation of something that is secure in escense.

Think about cryptography. In general, cryptographic standard algorithms are approved and validated by many cryptographers around the world but when it comes the implementation phase, the standard or algorithm is implemented by a group of peole working at the same company or sometimes by only one developer with limited training in security and/or cryptography.

One of these examples is WEP Security Protocol for Wireless communications. It has different vulnerabilities but particularly the vulnerability of the key stream is a consequence of a weakness in the implementation of the RC4 stream cipher, not the RC4 algorithm by itself.

Continue reading Implementations: The Achilles heel in cybersecurity

The new OpenSSL Cheat Sheet

Enjoy this openssl cheatsheet to apply in symmectric and asymmetric encryption, digital signatures and certificates, create your own CA, sign files, use hashes.

Feel free to post any comments or recommendations for a future version.

You can download the latest PDF version from the website or by clicking here.

openssl cheatsheet

Ocultamiento de ataques web bajo HTTPS

Desde hace un par de años al día de hoy ha habido una fuerte apoyo de parte de las grandes empresas de tecnología para la adopción de HTTPS por todo Internet. Google, Microsoft, Mozilla, Cloudflare, Akamai, entre muchas otras, han decidido habilitar el protocolo para sus clientes o facilitar el acceso a este protocolo, sin embargo como profesionales en seguridad es necesario estar atento a cualquier cambio fuerte de cualquier índole, no nada más tecnológico. Sabemos que cualquier cambio, tendencia, adopción masiva, situaciones insólitas, etc. pueden potencialmente ser un foco de infección o punto compromiso para los sistemas informáticos y la rápida adopción de HTTPS no ha sido la excepción a esta regla.

Algo que he estado viendo en la red es el incremento de ataques a aplicaciones web utilizando HTTPS como transporte para el ataque, lo cual es, hasta cierto punto, obvio ya que los mismos atacantes están cifrando los comandos o exploits por HTTP bajo el protocolo TLS que evita que el ataque sea visualizado durante el transporte y, peor aún, si la entidad atacada tiene mal configurada su infraestructura de seguridad, este ataque también será invisible a sus herramientas de seguridad.

Un caso muy común es cuando herramientas como UTMs, NGFWs, WAFs o cualquier otra herramienta con protección a nivel aplicación web es instalada y los ingenieros desean visualizar HTTPS y proteger las aplicaciones bajo ese protocolo también. En la mayoría de los casos, y por facilidad en la implementación, configurarán el protocolo e instalarán los certificados para que la herramienta pueda “abrir” el tunel HTTPS y visualizar las peticiones de entrada, sin embargo, la configuración correcta va mucho más allá de eso. Para que la herramienta funcione correctamente y cubra todo el tráfico HTTPS es necesario configurala como punto de negociación HTTPS para la infraestructura, de no ser así, como atacante, uno puede forzar a utilizar ciertos algoritmos criptográficos y suites de cifrado, al momento de la negociación HTTPS, para que la herramienta no pueda visualizar las peticiones.

UN POCO DE TECNICISMO:

En términos generales tenemos dos formas de establecer un tunel TLS para HTTP (HTTPS): En el protocolo handshake de TLS podemos utilizar algoritmo RSA para el intercambio de llaves criptográficas cuya llave pública está en el certificado y la privada instalada en la herramienta de seguridad o servidor, y algoritmo Diffie-Hellman y variantes (ECDHE, DHE, etc) cuya negociación se hace directamente en la memoria RAM del punto de negociación de HTTPS en el lado server y el user-agent del lado cliente. Las suites de cifrado más “fuertes” están hechas para que ni obteniendo la llave privada puedas descifrar el contenido que pasa por el tunel TLS y mejor aún, si logras tener una llave privada podrás descifrar contenido por pocos segundos ya que las llaves de cifrado de mensaje están cambiando frecuentemente. 

La forma de realizar un ataque sobre una infraestructura mal configurada para HTTPS es utilizar una suite de cifrado suficientemente robusta que realice el intercambio de llaves durante la negociación TLS utilizando el algoritmo Diffie-Hellman, ya sea efímera o con curvas elípticas. Cuando ocurre esta negociación el mensaje client-key-exchange del protocolo TLS handshake no utiliza la llave pública que recibió del certificado para enviar los bytes “pre-master secret”, si no que las memorias RAM de ambos entidades (punto de negociación server y user-agent) serán las únicas que tendrán los datos para generar la llave de cifrado principal de los mensajes y en las herramientas, aún teniendo el certificado y llave privada correspondiente, no serán capaces de llegar a la misma llave criptográfica, por ende no serán capaces de visualizar el tráfico en claro y proteger las infraestructura.

Usualmente estas herramientas mostrarán un mensaje del tipo “Unable to decrypt HTTPS” y, a pesar de que verán pasar el tráfico no verán su contenido. 

La forma en la cual podemos forzar a utilizar una suite de cifrado en particular es:

$ openssl s_client -cipher ECDHE-RSA-AES256-GCM-SHA384 -connect albertx.mx:443

Al realizar eso tendremos el escenario como el siguiente:

Por lo que lo recomendable es que la mejor solución de seguridad para aplicaciones que tenga su infraestructura sea el punto de negociación HTTPS. Con esto, independientemente de la suite de cifrado que utilicemos para negociar TLS, la herramienta podrá visualizar por completo todo el contenido bajo ese protocolo y proteger las aplicaciones de forma correcta.