Esta semana, cubriremos un par de vulnerabilidades de alta gravedad, una en Rubygems y otra en Rsyslogs. También hablaremos de la importancia de definir prácticas de codificación seguras.
Toma de gemas no autorizada en Rubygems
Rubygems es un registro de paquetes utilizado para suministrar software para el ecosistema del lenguaje Ruby. Debido a un error en la acción de yank, era posible que cualquier usuario de RubyGems.org eliminara y sustituyera ciertas gemas aunque ese usuario no estuviera autorizado a hacerlo.
Para ser vulnerable, se necesita una joya:
- Uno o más guiones en su nombre
- Una gema controlada por el atacante con el nombre antes del guión
- Creación en un plazo de 30 días O sin actualizaciones durante más de 100 días
Mitigación
Según el equipo de Bundler, el uso de Bundler en modo -frozen o -deployment en la integración continua y durante los despliegues garantizará que su aplicación no cambie silenciosamente a las versiones creadas con este exploit.
Para auditar el historial de tu aplicación en busca de posibles exploits pasados, revisa tu Gemfile.lock y busca gemas cuya plataforma haya cambiado cuando el número de versión no haya cambiado. Por ejemplo, la actualización de gemname-3 .1.2 a gemname-3.1.2-java podría indicar un posible abuso de esta vulnerabilidad. RubyGems.org ha sido parcheado y ya no es vulnerable a este problema.
Potencial desbordamiento de búfer basado en Heap en Rsyslogs
Rsyslog es un sistema muy rápido para el procesamiento de registros. Algunos módulos para la recepción de syslogs por TCP tienen un desbordamiento del búfer de la pila cuando se utiliza la estructura de conteo de octetos. En el marco "octet-counted", cada mensaje lleva un prefijo con la longitud real del mensaje, de modo que el receptor sabe exactamente dónde termina el mensaje. El atacante puede corromper los valores de la pila, provocando problemas de integridad de los datos y un impacto en la disponibilidad. La ejecución remota de código es poco probable pero no imposible. Las versiones 8.2204.0 e inferiores están afectadas por esta vulnerabilidad.
Mitigación
El encuadre por octetos no es muy común. Normalmente, es necesario habilitarlo específicamente en los emisores. Si los usuarios no lo necesitan, pueden desactivarlo para los módulos más importantes. Esto mitigará la vulnerabilidad. La forma de hacerlo depende del módulo. Consulte aquí los módulos afectados y los detalles de configuración basados en los módulos. El parche está disponible en la versión 8.2204.1.
La importancia de definir un código seguro
La codificación segura es la práctica de los desarrolladores cualificados de escribir código libre de vulnerabilidades desde el inicio del ciclo de vida del desarrollo de software (SDLC). Sólo una vez definida esta práctica, la comunidad de desarrolladores puede trabajar en pos de ese objetivo. Secure Code Warrior llevó a cabo la encuesta The state of developer-driven security, 2022 en colaboración con Evans Data Corp en diciembre de 2021, encuestando a 1.200 desarrolladores de todo el mundo para comprender las habilidades, percepciones y comportamientos en lo que respecta a las prácticas de codificación segura, así como su impacto y relevancia percibida en el SDLC.
Estos son algunos puntos destacados de la encuesta:
- De un total de 1.200, sólo el 14% de los desarrolladores de software activos consideran que la codificación segura es su principal prioridad.
- El 37% de los desarrolladores que participaron en la encuesta declararon haber dejado vulnerabilidades conocidas dentro de su código porque los plazos ajustados no permitían el tiempo necesario para solucionarlas o para codificar correctamente desde el principio.
- El 36% de los encuestados también dijeron que querían eliminar las vulnerabilidades de su código, pero que no tenían las habilidades o los conocimientos para hacerlo.
- En muchos casos, el problema para que los desarrolladores escriban código seguro es que las organizaciones para las que trabajan no han identificado cuáles son las mejores prácticas necesarias para producir código seguro y no han destinado suficientes recursos a formar o capacitar a sus desarrolladores para que cumplan esos objetivos.
Así pues, además de una definición adecuada de lo que son las prácticas de codificación segura, las organizaciones también deben proporcionar plazos más largos que den a los desarrolladores tiempo suficiente para codificar correctamente y ofrecerles una formación práctica que les ayude a identificar y corregir las vulnerabilidades del código de forma eficaz.
Puede obtener información más detallada sobre la encuesta aquí.
Comentarios