X
BLOG

Proteja su software con SEI CERT C

Proteja su software con SEI CERT C Tiempo de leer: 5 minutos
El estándar de codificación segura SEI CERT es una excelente opción para proteger su código, especialmente si su aplicación está integrada o es crítica para la seguridad. En esta publicación, analizo cómo usar el análisis estático para implementar este estándar de seguridad por diseño.

 

"Aunque la noción de proteger el software es importante, es más fácil proteger algo que está libre de defectos que algo plagado de vulnerabilidades".

- Gary McGraw, Cigital

La proliferación de software integrado y dispositivos de IoT aumenta los riesgos de ataques de seguridad a diario. En mi Salón de la vergüenza de IoT Veo ataques regulares contra todo, desde plantas de tratamiento de agua hasta automóviles y juguetes para niños. A medida que las “cosas” obtienen más código y se conectan a Internet, prometen nuevas capacidades y funcionalidades, pero también aumentan las posibilidades de que un mal actor penetre en nuestros sistemas e incluso en nuestra vida familiar.

El problema con IoT y la seguridad integrada

Los estudios demuestran que incluso los automóviles pueden tener más de 100 millones de líneas de código. Se acabaron los días en que algunos desarrolladores podían revisar manualmente el código. Con sistemas tan grandes y sofisticados, tenemos que empezar a tomarnos en serio la seguridad del software. Afortunadamente (en el sentido de que las estrategias para abordar los problemas pueden ser las mismas), los problemas de codificación que afectan al software seguro suelen ser los mismos que los que afectan al software seguro y confiable.

Numerosos estándares de seguridad (ISO 26262, DO-178B / C, FDA, etc.) han demostrado que la seguridad y confiabilidad del software pueden mejorarse en gran medida mediante el uso de estándares de codificación y análisis de código estático. El análisis estático es la mejor manera de fortalecer constantemente su código y pasar de una mentalidad de "prueba de seguridad" a una mentalidad de seguridad por diseño. Lo que significa que no podemos dejar la seguridad cibernética a un equipo separado, sino que debemos comenzar a abordarla tan pronto como comencemos a planificar y codificar. Los estándares de codificación nos mueven del ciclo de "construir, probar, arreglar" a un ciclo de "diseñar, construir , entregar ”ciclo con alta calidad, seguridad y protección.

Entonces, ¿qué estándar de codificación usar? Hay muchos por ahí, incluso si solo tiene en cuenta los aspectos de seguridad. CWE, OWASP y CERT son estándares comunes de codificación segura, solo por nombrar algunos. Es posible que tenga requisitos que le indiquen qué estándares utilizar y, de ser así, debe seguirlos. Pero me gustaría argumentar que CERT es una excelente opción para proteger su código, especialmente si su aplicación está integrada o es crítica para la seguridad.

¿Por qué CERT para proteger su código?

Entonces, la pregunta obvia es "¿Por qué CERT?" ¿No es CWE más popular? ¿O OWASP? Bueno, en primer lugar, OWASP (Proyecto de seguridad de aplicaciones web abiertas) o OWASP Top 10, está destinado a ser un punto de partida, no un proceso de seguridad de aplicaciones completamente riguroso. Además, como su nombre lo indica, es principalmente para aplicaciones web.

CWE (Common Weakness Enumeration) tiene una lista de los 25 principales problemas. Una vez más, aunque este es un gran punto de partida, no es suficiente. Además, CWE en cierto sentido es un estándar sintomático: está diseñado para describir código que conduce a vulnerabilidades específicas, como las que se encuentran en CVE (Common Vulnerability Enumeration). Si bien esta es una tarea útil e importante, es reactiva por su propia naturaleza.

Me gusta el estándar de codificación segura SEI CERT por varias razones. En primer lugar, se centra mucho más en las prácticas de codificación segura que solo en los síntomas (por ejemplo, siempre, validar siempre la entrada es una práctica de codificación segura, mientras que la inyección SQL es un síntoma). El CERT ha analizado qué directrices son las más críticas y pueden analizarse sólidamente y entonces separaron en "reglas" que deben seguirse y "recomendaciones", que son menos críticas y / o menos capaces de un análisis sólido. Esto ayuda a recortar rápidamente los hallazgos del análisis estático a los más críticos.

Además, el CERT ha creado un marco de evaluación de riesgos que ayuda a priorizar aún más los hallazgos del análisis estático para pautas particulares, teniendo en cuenta la severidad inherente de la pauta, la dificultad de explotar tal elemento y el costo de remediarlo. Con esto, obtiene una priorización muy granular que lo ayuda a concentrarse en lo más importante, en lugar de lidiar con una avalancha de violaciones de análisis estático.

Me doy cuenta de que otros estándares como CWE también tienen marcos de riesgo, pero hasta la fecha nadie los ha implementado por completo para el análisis estático porque es extremadamente difícil de hacer. Por ejemplo, hemos tenido en cuenta los puntajes de “impacto técnico” de CWE, lo cual es útil, pero los puntajes de CERT son mucho más profundos hacia la priorización automatizada.

Lo que pasa con estos marcos de riesgo es que hasta ahora han sido un ejercicio académico, interesante para hablar pero no algo que se pueda usar en el campo, o han sido un proceso completamente manual y algo subjetivo. Así que tomamos el sistema CERT y lo implementamos dentro de nuestro sistema de informes de análisis estático. Más sobre eso en breve.

¿Por qué utilizar una herramienta de análisis estático sobre otra para la aplicación segura de la codificación?

Entonces soy el Parasoft Evangelist. Pero, ¿por qué usarnos? ¿No son todas las herramientas de análisis estático básicamente iguales? Por supuesto, la respuesta es no, no lo son. Y para el estándar de codificación segura CERT C, Parasoft C / C ++test es la solución más completa, que le ayuda a salir adelante de tres formas principales:

  1. Soporte integrado para reglas CERT C. Hemos implementado todas las reglas de CERT C y también hemos agregado la mayoría de las recomendaciones, y el resto pronto. En pocas palabras, somos el único proveedor con cobertura completa para las reglas CERT C y también cubrimos la mayoría de las recomendaciones de cualquier proveedor. Entonces, si le preocupan las pautas de CERT, la prueba de Parasoft C / C ++ es objetivamente la mejor opción.
  2. Su capacidad para hacer más que solo hablar sobre las puntuaciones de riesgo. Nuestra implementación del marco de riesgo CERT es única porque están integrados en cada widget e informe que tenemos para el estándar. Esto significa que puede elegir entre reglas y recomendaciones, seleccionar puntuaciones de prioridad, niveles, categorías, etc., y ver los cambios al instante.
  3. Facilidad con auditorías e informes de cumplimiento. Parasoft proporciona todas las campanas y silbidos habituales que uno espera de las herramientas de análisis estático (paneles de control personalizables por el usuario, informes PDF, histogramas, etc.), junto con widgets de riesgo dinámico. Pero donde obtiene un valor único de Parasoft es que hemos incluido todo esto en nuestro marco de cumplimiento estándar, por lo que puede producir informes fácilmente para demostrar lo que ha hecho, cuando lo ha hecho, cómo asignó Parasoft a CERT y todas las demás garantías necesarias para las auditorías de seguridad. Su oficial de seguridad se lo agradecerá, al igual que sus clientes.

Grabé una descripción general rápida del panel de seguridad para CERT para mostrarle algunos de los flujos de trabajo posibles con los informes y widgets en la configuración de cumplimiento incorporada:

Todo esto funciona de la forma en que los desarrolladores realmente lo necesitan. Parasoft se integra completamente con los sistemas de construcción y CI, con una interfaz de usuario web para que todos puedan ver los resultados. Más importante aún, se integra directamente en el IDE del desarrollador (es decir, Eclipse o Visual Studio), lo que mantiene al desarrollador trabajando donde está el código para obtener la respuesta más rápida posible.

Si ha probado herramientas de seguridad de análisis estático en el pasado y ha tenido problemas porque eran demasiado ruidosas o no endurecían realmente su código, ahora es un buen momento para echa un vistazo a Parasoft.

Pruebas de desarrollo unificadas para aplicaciones C y C ++

Escrito por

Arthur Hicken

Arthur ha estado involucrado en seguridad de software y automatización de pruebas en Parasoft durante más de 25 años, ayudando a investigar nuevos métodos y técnicas (incluidas 5 patentes) mientras ayuda a los clientes a mejorar sus prácticas de software.

Reciba las últimas noticias y recursos sobre pruebas de software en su bandeja de entrada.

Prueba Parasoft