2009-02-26 16 views
5

mundo real, ¿cuántos aquí se someten a revisiones de código de seguridad en profundidad? Los que sí lo hacen, ¿con qué frecuencia, una vez por trimestre, una vez por versión, una vez por luna azul? Los que no, ¿por qué no? (No se refiere a programadores pequeños o aficionados, no es que los trivialice, es solo que no espero que lo hagan ;-)).¿Qué tan populares son las revisiones del código de seguridad?

Como consultor de seguridad, generalmente soy el que realiza las revisiones de seguridad, sin embargo, esto solo suele ser para organizaciones muy sensibles a la seguridad (por ejemplo, grandes bancos, proveedores de software, militares, etc.) o como un resultado de requisitos reglamentarios (por ejemplo, PCI-DSS).
Ahora, pocos grupos (excepto los de las compañías más grandes como Microsoft, Intel, RSA, etc.) realmente disfrutan de la revisión, aunque realmente debería ser una experiencia positiva. Me parece que esto se debe principalmente a la alta inversión percibida, de recursos, tiempo y, por supuesto, efectivo para atraer a los consultores.

Bien, por lo que no solo se percibe, es bastante real: se acepta comúnmente que un único revisor puede cubrir entre 50-100 LoC por hora. Aunque hemos logrado multiplicar eso, dado que solo estamos buscando problemas de seguridad específicos (y los clientes están presionando mucho para reducir los costos) y podemos minimizar el alcance de acuerdo con el riesgo, podemos maximizar un máximo de alrededor de 1000 LoC por hora. Para cualquier sistema de tamaño medio a grande, esto todavía representa cientos de costosas horas de consultoría, nada triviales.

La alternativa más común es la de los escáneres automáticos de código fuente, ala Fortify, onzas, etc. Sin embargo, además de los costos de licencia, esto está lejos de ser eficiente; normalmente encontramos que estas herramientas producen resultados en 100 mil, con un muy alta (70-90%) tasa de falsos positivos (y duplicados). Así que todavía está gastando grandes cantidades de tiempo revisando los resultados, Y estas herramientas no cubren un conjunto sustancial de vulnerabilidades potenciales (por ejemplo, fallas lógicas, lógica de negocios, etc.)

Dicho esto, (y una gran EXENCIÓN DE RESPONSABILIDAD debería ir aquí :) He estado trabajando en los últimos meses con uno de los vendedores de herramientas para desarrollar un servicio que haría esto de manera muy eficiente, por ejemplo: ser capaz de cubrir 500K LoC en solo una semana de trabajo y, sin embargo, proporcionar resultados reales, precisos y completos, prácticamente cero falsos positivos y casi ningún error falso perdido.

Aquellos de ustedes que deberían estar haciendo SCR, pero no lo hacen, ¿esto sería suficiente para convencerlos de lo contrario? o hay algo más que te detenga? ¿O simplemente no es un problema para ti?


Para aclarar, no estoy tratando de promover mi o mi servicio, tratando de conseguir un poco de perspectiva del mundo real más allá de mi propia agenda de seguridad de evangelización. Me gustaría ver los problemas como otros programadores los ven ...

Más aclaración, NO estoy preguntando CÓMO realizar revisiones de código, qué opciones hay, etc. Tengo mucha experiencia en este campo, y es esta experiencia que vendo a mis clientes. Mi pregunta es si las revisiones de códigos son tan impopulares como parecen, POR QUÉ esta actividad específica no es tan popular como debería ser, y CÓMO podemos cambiar esto. (Irrelevantes de elección de la metodología, herramientas, etc.)


Además, como Corneliu y otros señalaron, las revisiones de código de seguridad no debe tomarse solo como la única protección y verificación de la seguridad de un sistema, más bien debe ser un elemento de un marco completo y holístico de SDLC (ciclo de vida de desarrollo seguro). Sin embargo, tampoco debe ser olvidado. Así que mi pregunta se centra realmente en ese elemento, ya sea en el contexto del SDLC completo o solo como un paso adelante de penetrar y parchar.

Respuesta

1

Su punto sobre el tiempo y el costo de una revisión de código externo es la clave. Mi compañía contrató a Cigital hace un par de años para realizar una revisión detallada del código asistido por herramientas. El analista de seguridad utilizó Fortify y pasó semanas completando la revisión del código manual. El tiempo y el costo, y el tiempo necesario para respaldar el análisis, responder preguntas e interpretar los resultados, fue más de lo que podíamos mantener de manera regular. Hacemos nuestras propias revisiones de código, usando las pautas de seguridad de OWASP y listas de verificación preparadas por Cigital.Y utilizamos herramientas de análisis estáticas (Coverity, Findbugs) en nuestro entorno de integración continua, cada versión se comprueba con IBM Watchfire Appscan (o lo que sea que IBM lo llame hoy) y programamos pruebas periódicas con Foundstone. Las pruebas de pluma son un buen uso del dinero, y las herramientas de análisis estático ayudan a garantizar una calidad de código alta.

Si hubiera una oferta de revisión de código de seguridad económica, rápida y efectiva, sí, habría un mercado. Construyo software financiero: mis clientes no están locos por la idea de enviar software al extranjero para que Veracode lo analice o similar.

+0

BTW, felicidades por ser usuario # 100,000! –

1

Para ser honesto, rara vez los tengo.

Por mucho que la empresa es consciente de que la seguridad es importante siempre es una de esas cosas (como prueba) que acaba de recibir un golpe en favor de ponerse en nuevas características, cambios etc.

mientras todos Sabe que esta es la forma incorrecta de hacer las cosas. Dudo mucho que cambie hasta que la aplicación sea mordida por una vulnerabilidad de seguridad. Perdón por ser tan cínico.

+0

Gracias por la entrada, Andy. ¿Esto cambiaría si fuera drásticamente más barato Y más fácil (más fácil también incluye más fácil procesar el resultado y obtener una resolución)? – AviD

3

Soy de Australia y tengo que decir que las revisiones de seguridad son (quizá) más popular aquí.
En los últimos dos proyectos en los que he trabajado tuvimos revisiones de seguridad formales. Tengo una revisión más alineada en un futuro cercano, pero desde mi punto de vista, una "revisión de seguridad" es incorrecta por diseño.

Las personas que hacen revisiones de seguridad solo buscan una bala de plata barata para decirles que el código no está completamente reventado y que la posibilidad de un ataque de aplicación es ligeramente menor que "sucederá en las primeras 10 horas de producción" .

creo una revisión de seguridad comienza con:

  • una revisión arquitectónica desde una perspectiva de seguridad, cuando la arquitectura se pone en su lugar.
  • Luego trabajas con el arquitecto + empresa en el modelado de amenazas y en la comprensión de los posibles problemas y mitigaciones que se pueden implementar.
  • A continuación, construir un enfoque para la aplicación de estas medidas de mitigación en el lugar preferentemente a un nivel de arquitectura y tratar de aislar a los desarrolladores a nivel de negocio de la mayor cantidad de código de seguridad como sea posible.
  • Siguiente Haré todo el ciclo de vida de desarrollo de seguridad con el equipo y les enseñaré las pautas correctas de codificación de seguridad. Muestre todos los tipos de ataques que pueden ocurrir en su aplicación en función del Modelo de amenaza que creó anteriormente. Muéstreles cómo codificar y proteger.
  • Enseñe al equipo sobre la defensa en profundidad y cómo asegurar cada pieza de su rompecabezas
  • Enséñeles cómo implementar de forma segura, cómo diseñar piezas aisladas con una seguridad mínima requerida en ellas, etc.
  • Enséñales cómo hacer revisiones de código de seguridad de su propio código y provoca que se provoquen mutuamente para escribir un código mejor.

Esto te tomaría unas buenas dos semanas, diría. Quizás tres.

A continuación, vuelven regularmente y hacer comentarios parciales, actualizar la amenaza-modelo, y proporcionar una mayor orientación sobre los posibles problemas que pudieran introducir.

Con esto usted tendrá una mejor oportunidad al final del proyecto para hacer una revisión de código final y tener una buena confianza que lo que tiene es bueno y seguro.

Ah, y se puede vender a un negocio mucho mejor que "necesito un mes para mirar a su base de código y yo dejaré saber cómo rompió su aplicación es". Puedes ir de vacaciones por un mes y regresar y decirles que todos son buenos amigos y no tienen idea de lo que hiciste.

Mis 2 centavos,

Corneliu.

+0

Gracias, Corneliu, pero eso no es realmente lo que quise decir ... Quiero decir, sí, estás en lo cierto, y sé todo esto: hacemos mucho de esto por nuestros clientes, y ni siquiera creo que el código revise son necesariamente las más importantes, o la que comienza con ... – AviD

+0

Pero desafortunadamente la mayoría de las organizaciones no son lo suficientemente "maduras" como para implementar todo, comenzando con un marco completo de SDLC. ¡Muchas empresas todavía están atrapadas en el modo de penetración y parche, contrariamente a TODOS los consejos de todos! Dicho esto, un gran número se está moviendo a mejores pruebas, es decir. código de revisiones ... – AviD

+0

Sin embargo (y lo siento por los comentarios extensos), la revisión del código sigue siendo la actividad única con el precio más alto, incluso después de las primeras veces. Estoy trabajando para que sea lo suficientemente eficiente como para hacer repetidamente, incluso hasta "pruebas de regresión" en un nivel de código fuente. – AviD

1

Depende de la importancia de la organización y la aplicación.

Es posible que desee comprobar Veracode y Fortify (estilos de contraste) que automatizan el proceso. Ambos equipos decentes y ambos con una lista decente de clientes.

Esto se usaría junto con una prueba de lápiz de seguridad de la aplicación. Si está presentando un inicio de sesión a un recurso protegido a través de Internet, entonces probablemente quiera ejecutar el código que forma el Módulo de autenticación. Necesita automatizarlo de alguna manera: las aplicaciones pequeñas pueden contener 100K líneas de código y más. ¿Te sentarías manualmente a través de todo esto? Suena bastante aburrido?

También debe considerar su valor añadido. Si su infraestructura está terriblemente abierta, entonces tiene poco sentido ejecutar una Revisión de código. ¿Por qué revisar las ventanas de la casa cuando todas las puertas están abiertas?

En un banco con el que trabajé (en una Consultoría de Seguridad/Arquitecto/perros en general) como parte del ciclo de vida del Proyecto, cada Proyecto cubriría el costo de su Herramienta de Revisión de Código (Fortify en esta instancia particular). Sin embargo, algunas de sus aplicaciones se han roto y se han comprado en menos de 5 minutos debido a una mala configuración de IIS.

Code Reviews - ¿en qué punto del ciclo Dev se haría esto? Se vuelve un poco más interesante desde una perspectiva Ágil.

Noelie Dunne

+0

Estoy bastante familiarizado con los productos que mencionas y sus "servicios". Incluso los mencioné en mi publicación ... los resultados son asombrosamente malos. Y aún sigue siendo prohibitivamente caro, en términos de costo directo y tiempo necesarios para revisar los resultados masivos. – AviD

2

Ejecución de Fortify (o herramienta similar) en contra de cualquier aplicación empresarial encontrará siempre una carga derramada de vulnerabilidades. ¿Cuántos de estos son teóricos? ¿Cuántos de estos son riesgos reales que impactan en los negocios? ¿Cómo se clasifica qué es importante y qué no & cortando los falsos positivos? ¿Contra qué corres contra Fortify?

Este es el enfoque que generalmente tomo desde una perspectiva de seguridad en la aplicación/arquitectura de toda la empresa .... Primero, comprenda los casos de 'uso' para la aplicación y las interfaces/componentes/acoplamiento dentro y fuera de su aplicación. Desglose esto en el usuario & interfaces del sistema Usuario: está viendo los casos de uso de la aplicación, es decir, navegador/cliente grueso, niveles de privilegio Sistema - cosas como MQ, interfaces Tibco, cualquier gestión/administración, oyente TNS de Oracle , ODBC, ADO, interfaces propietarias, etc.

Si usted es una aplicación comercial que se ocupa de bonos/opciones, ¿qué le interesa?

1) La capacidad de un usuario anónimo para acceder a los datos de aplicaciones privadas 2) La capacidad de un usuario autorizado para exceder permisos dentro de su perfil 3) La capacidad de un usuario autorizado a acceder a los datos de un usuario diferente 4) La capacidad de un usuario autorizado para acceder a diferentes usuarios procesando los resultados 5) La capacidad de un usuario autorizado para obtener cualquier nivel de acceso a cualquier componente de la aplicación o arquitectura interna

Así que esto será controlado por el inicio de sesión módulo y los componentes que el módulo llama después de la autenticación exitosa. Lo que más le interese es realizar comprobaciones de validación de entrada &.

No hay absolutamente ningún componente de comprobación de código de valor, dlls que tienen que no se puede acceder directamente o indirectamente a través de otro componente.

Y esto supone que la infraestructura de la plataforma depende del dinero.

+0

Gracias por sus respuestas, Noelie, pero una vez más no estoy preguntando cómo realizar correctamente CR, esto lo sé, sino más bien por qué no son populares. Sin embargo, estoy de acuerdo con gran parte de lo que escribiste ... – AviD

+0

Aunque tomo muy enérgicamente lo que escribiste sobre la ejecución de herramientas automatizadas como fortify, por eso siempre (normalmente) recomendamos un * manual * CR, aunque esto es orden de magnitud más costosa. – AviD

+1

Popularidad? Hmm, creo que es perfil/percepción. Esto se reduce al enfoque en ambos casos y las organizaciones se queman en términos de valor agregado comercial. Usted tiene Ingenieros de firewall/Pen Testers que ahora se hacen llamar Security Consultants/Architects. –

1

No estoy seguro de si este es el tipo de respuesta que estaba buscando, pero espero que pueda ser útil para usted.

Tengo un par de pensamientos. En primer lugar, valoro mucho la seguridad y creo que las revisiones del código de seguridad son una buena idea, pero puedo ver por qué podrían no ser populares en todos los casos, dependiendo de la industria. Esto es pura especulación, pero muchas compañías hacen betas públicas y por eso confían en los comentarios recibidos de esas sesiones. Pueden ver la seguridad como algo que debe mejorarse iterativamente y por eso le dan menos importancia al principio, confiando en que unos pocos probadores inteligentes encontrarán los errores y que la etiqueta beta los protegerá de cualquier responsabilidad. Obviamente, no son todas las empresas, pero algunas pueden estar pensando de manera similar.

Si realmente desea expandir su mercado, puede considerar lanzarlo bajo una luz diferente. Además de resaltar las revisiones de seguridad como posibles gestiones de riesgo, podrían ser vistas en términos de ahorro de costos a lo largo del tiempo en cuanto a deuda técnica, salario, reputación y asuntos legales.

Por ejemplo, prefiero pagar a un abogado por adelantado para redactar un contrato a prueba de balas que para representarme ante un tribunal por una disputa contractual. Es una forma de gestión de riesgos, pero también lo veo como una inversión y un enorme ahorro en el tiempo. No solo estoy más seguro legalmente, sino que también tengo intangibles, como una relación definida entre mi persona y un cliente, donde se establecen límites y expectativas para ambas partes. Con esos límites en su lugar, en realidad es más libre para concentrarse en las cosas que necesita enfocarse.

Si puede presentar la seguridad de manera similar, en términos de ahorro y tranquilidad, puede descubrir que las personas (administración de lectura) que toman decisiones sobre la contratación de consultores de seguridad estarán más abiertas a sus servicios porque usted afectando su línea de fondo de una manera positiva. Preséntelo de tal manera que los ahorre mucho más de lo que cuesta.

+0

¡Excelente respuesta! Aunque ya hacemos (o tratamos de hacer) exactamente lo que está diciendo ... Me interesaría más qué otros cambios * reales * (leer: técnicos) deban pasar para que SCR capte más, y no solo cómo para comercializarlo. – AviD

2

Como usted está haciendo una investigación de mercado, me gustaría contribuir.

Estoy haciendo tanto SCR para otras compañías (en general como dijiste, bancos, grandes aplicaciones de comercio electrónico, componentes críticos y otras cosas financieras). Falsos positivos y dinero no usan muchachos grandes: Fortify, Ounce Labs.

Si está planeando traer una nueva herramienta en ese mercado con bajos falsos positivos y un precio decente (porque Fortify y Onza están siendo ridículos, ya que dominan el mercado) yo y muchas otras personas podemos conseguirlo . MS está cavando en el mismo mercado en el área VS.NET, por lo que algunos desarrolladores pueden ir por ese camino y MS puede aplastar a cualquier otro oponente allí (al mismo tiempo puede atraer la atención del público al mercado). Debes tener cuidado con eso.

No es una respuesta directa a su pregunta, pero espero que ayude y si la publica manténgame informado.

+0

De acuerdo, gracias (aunque esto es más o menos idéntico a mi PoV, y esperaba escuchar algo diferente :)). El problema con los productos de MS (por ejemplo, CodeAnalysis, FxCop, PreFAST, etc.), además de no admitir tecnología que no sea de MS, es muy bajo y deja MUCHOS negativos falsos sobre la mesa. – AviD

+0

Y, por cierto, se lanzará muy pronto, pero realmente no puedo publicar eso aquí ... (¿o puedo?). Pero de todos modos, no es realmente una herramienta, sino un servicio, basado en un desarrollo interno. Espero que no veas esto como competencia ;-), y si estás en la UE espero que podamos ayudarte. – AviD

+1

Creo que está bien enviar su enlace en comentarios. ¿Qué pasa con la seguridad/confianza del servicio? Creo que veracode está haciendo algo similar, ¿cree que SaaS va a afectar a los malos o a los buenos? Porque las personas ni siquiera confían en mí directamente en las revisiones del código fuente, enviarlo a un servicio en línea podría retrasarlos. –

0

Los profesionales de seguridad no deberían revisar el código 100% de forma manual. Espero que tenga una copia de Ounce Labs o equivalente y solo está revisando para eliminar falsos positivos, reglas de ajuste, etc.

+0

Los profesionales de la seguridad no consideran que los laboratorios de onzas o equivalentes sean una revisión completa del código. Estos pueden encontrar QUIZAS el 40% de los errores de seguridad totales (si eso), generalmente no los más interesantes, y siempre al precio de * MUCHOS * falsos positivos, duplicados, etc. No importa cuán bien ajustadas estén las reglas. – AviD

+0

Nadie dijo que usar Ounce Labs como única fuente es correcto ... – McGovernTheory

2

Participo en un proyecto de código abierto llamado Galería. Cuando accedemos al lanzamiento del candidato 1 para un lanzamiento determinado, contratamos a un equipo externo para que realice una revisión de seguridad. El objetivo es obtener un nuevo conjunto de ojos altamente entrenados que los enfoquen en cualquier problema de seguridad latente que se haya infiltrado en el producto. En cualquier versión típica, hemos encontrado que la revisión de seguridad (aunque costosa) revela problemas y clases de vulnerabilidades que nuestros desarrolladores típicos no habrían descubierto. A pesar de que somos un equipo de desarrollo razonablemente consciente de la seguridad, siempre hay nuevos vectores de ataque que desconocemos y que debemos abordar.

Hasta ahora hemos tenido 3 revisiones de seguridad completas para los productos de Galería 2.x, y 1 revisión de seguridad para el producto de Galería 3.x (en ese caso hicimos la revisión mientras estaba en alfa porque queríamos comentarios sobre vulnerabilidades tan pronto como sea posible).

Herramientas automatizadas (lectura: análisis estático) serían agradables. Las herramientas automáticas de prueba de pluma también son agradables. Pero creemos que es de gran valor contar con un ser humano en el proceso para investigar el código y buscar las vulnerabilidades sutiles que nos hacen tropezar.

Cuestiones relacionadas