Un proyecto para implementar las utilidades sudo y su en Rust

El ISRG (Internet Security Research Group), que es el fundador del proyecto Let's Encrypt y promueve HTTPS y el desarrollo de tecnologías para aumentar la seguridad de Internet, presentó el proyecto Sudo-rs para crear implementaciones de las utilidades sudo y su escritas en Rust que le permite ejecutar comandos en nombre de otros usuarios. Bajo las licencias Apache 2.0 y MIT, ya se ha publicado una versión preliminar de Sudo-rs, que aún no está lista para uso general. El proyecto, que comenzó a trabajar en diciembre de 2022, está previsto que finalice en septiembre de 2023.

Actualmente, el trabajo se centra en implementar funciones en Sudo-rs que permitan que se use como un reemplazo transparente de sudo en casos de uso típicos (configuraciones predeterminadas de sudoers en Ubuntu, Fedora y Debian). En el futuro, hay planes para crear una biblioteca que permita incrustar la funcionalidad sudo en otros programas y proporcione un método de configuración alternativo que evite analizar la sintaxis del archivo de configuración de sudoers. En función de la funcionalidad sudo implementada, también se preparará una variante de la utilidad su. Además, los planes mencionan la compatibilidad con SELinux, AppArmor, LDAP, herramientas de auditoría, la capacidad de autenticarse sin usar PAM y la implementación de todas las opciones de la línea de comandos de sudo.

Según Microsoft y Google, alrededor del 70% de las vulnerabilidades son causadas por una gestión de memoria insegura. Se supone que el uso del lenguaje Rust para desarrollar su y sudo reduce el riesgo de vulnerabilidades causadas por el manejo inseguro de la memoria y elimina errores como el acceso a un área de la memoria después de que se haya liberado y el desbordamiento del búfer. Sudo-rs está siendo desarrollado por ingenieros de Ferrous Systems y Tweede Golf con fondos proporcionados por empresas como Google, Cisco, Amazon Web Services.

La seguridad de la memoria se proporciona en Rust en tiempo de compilación mediante la verificación de referencias, el seguimiento de la propiedad del objeto y la vida útil del objeto (alcance), así como mediante la evaluación de la corrección del acceso a la memoria durante la ejecución del código. Rust también brinda protección contra desbordamientos de enteros, requiere la inicialización obligatoria de los valores de las variables antes de su uso, maneja mejor los errores en la biblioteca estándar, aplica el concepto de referencias y variables inmutables de forma predeterminada, ofrece tipado estático fuerte para minimizar los errores lógicos.

Fuente: opennet.ru

Añadir un comentario