Ha pasado bastante tiempo desde que agregué codificación real y, aunque hice codificación a nivel de máquina, inicialmente me enseñaron Algol y Fortran, ambos lenguajes de alto nivel.
En mis más de 20 años en seguridad y garantía de la información, el tema de la codificación segura ha cobrado mayor importancia. Es a través de procedimientos de limpieza y codificación deficientes que se han producido muchas violaciones de seguridad exitosas, pero el papel del entorno operativo y las funciones de mantenimiento de fondo no deben pasarse por alto, ya que pueden, de hecho, ser críticos.
Una gran parte de la codificación segura es garantizar que cualquier entrada a un fragmento de código solo se permita que se origine en una fuente conocida y verificada y que la entrada esté sujeta a una verificación rigurosa de límites y contenido y, si la entrada no es conforme, entonces esos datos se destruyen por completo.
Del mismo modo, la salida de un fragmento de código solo debe provenir del propio código y enviarse a destinos conocidos, verificados, y no debe permitirse el uso de memoria fuera de lo que se ha asignado. El código en sí solo debe acceder y usar las ubicaciones de memoria asignadas y la E/S del sistema, las funciones de limpieza también deben limpiar cualquier ubicación de memoria temporal posterior al uso.
El sistema operativo bajo el que se ejecuta cualquier código debe asignar, monitorear y controlar el uso de la memoria para evitar que una pieza de código viole la memoria asignada a otras piezas de código.
El sistema operativo solo debe permitir que se ejecute el código verificado (certificado o marcado), el código no verificado debe aislarse, evitar que se ejecute y generar un error.
Cabe señalar que esta podría ser una operación de varios niveles en la que, por ejemplo, tiene un sistema host y un sistema operativo que ejecuta una cantidad de hosts virtuales o admite una cantidad de contenedores, sin olvidar que también podría estar ejecutándose un host virtual. una serie de contenedores que crean un entorno muy complejo.
Hay bastantes herramientas de prueba de software, contenedores y SO en el mercado, pero a menos que su organización tenga su propio departamento de TI que esté desarrollando, manteniendo e implementando el código, probablemente buscará subcontratar cualquier trabajo de prueba y revisión necesario a una agencia competente.