El
IEEE Center for Secure Design publicó un
informe
[PDF] que se centra en la identificación de los defectos de
diseño de
software, basado en datos reales recogidos y analizados por expertos de
empresas de tecnología líderes del mundo.
IEEE Computer Society, la principal asociación de profesionales de la
informática, lanzó una iniciativa de seguridad cibernética con el
objetivo de ampliar su participación en materia de ciberseguridad. Como
parte de esa iniciativa, se formó el IEEE Center for Secure Design
(CSD). La iniciativa reunió a un grupo de expertos de diversas de
organizaciones para discutir fallos de diseño de seguridad de
software.
El resultado fue una
lista de los 10 defectos de diseño
más importantes del software y las técnicas de
diseño para evitarlos.
Además se publican consejos prácticos pata fomentar el uso correcto de
la criptografía aplicada a validar los datos.
El diseño seguro de aplicaciones ha sido el talón de Aquiles de la
ingeniería de
software durante décadas, sobre todo porque es difícil y
requiere conocimientos profundos.
"IEEE Center for Secure Design (CSD) jugará un papel clave en la reorientación del diseño de seguridad de software" dijo Neil Daswani el equipo de ingeniería de seguridad.
"Al poner el foco en el diseño de seguridad y no sólo en los fallos de implementación del código, CSD hará un un gran servicio".
"Errores y defectos son dos tipos muy diferentes de problemas de seguridad", dijo Gary McGraw, CTO de Cigital.
"Creemos
que se ha hecho mucho más enfoque en errores comunes que en el diseño
seguro y la forma de evitar defectos, que es preocupante ya que el 50%
de las cuestiones de seguridad del software corresponden a deficiencias
en el diseño".
La siguiente lista de recomendaciones nació para ayudar a los desarrolladores a evitar defectos de diseño en seguridad:
- Ganar o dar confianza, pero nunca asumirla
- Utilizar un mecanismo de autenticación que no pueda ser evitado o manipulado
- Autorizar después de autenticar
- Separar estrictamente instrucciones de datos y control y nunca procesar instrucciones recibidas de fuentes no confiables
- Definir un enfoque que asegure que todos los datos sean validados expresamente
- Usar correctamente la criptografía
- Identificar los datos confidenciales y cómo deben ser manejados
- Siempre considerar los usuarios
- Entender cómo integrar componentes externos cambia la superficie de ataque
- Ser flexible para considerar cambios futuros a los objetos y actores
Cristian de la Redacción de Segu-Info