¿Es necesario comprender la seguridad cibernética al desarrollar software?

¿Es necesario comprender la seguridad cibernética al desarrollar software?

Tengo un poco diferente después de revisar todas las respuestas.

Algunas de las respuestas se centraron en la seguridad Appsec y Owasp top 10. Algunas de las respuestas introdujeron el concepto de riesgo en lugar de la codificación segura.

Mi opinión se basa en la premisa de que

  • cloud and SaaS está realmente creciendo en la lucha contra las pandillas. $ 10 mil millones y crecimiento de dos dígitos.

SaaS crece a doble dígito también con cerca de $ 30 + mil millones en ingresos. Gartner dice que se prevé que el mercado mundial de servicios de nube pública alcance los $ 204 mil millones en 2016

Microsoft, Adobe y muchos reproductores de software establecidos se están moviendo al servicio SaaS.

Con los datos anteriores, lo que quiero establecer es que SaaS y la nube están aquí para quedarse y crecer. No importa a qué empresa vaya, tendrán alguna estrategia para aprovechar la nube y proporcionar el servicio SaaS. Por supuesto, siempre habrá una excepción a esta regla, pero la mayoría de las veces, según la ley de estadísticas, encontrará que su empleador actual o futuro intenta ingresar a la nube o SaaS o tiene negocios saludables a su alrededor.

Las cosas con SaaS y la nube son que si no confías en tu cliente, no tienes negocios. Período.

La seguridad es una de las principales objeciones para muchos clientes que se mudan a la nube o al servicio SaaS. La mayoría de las veces, estas aplicaciones SaaS son accesibles por cualquier persona a través de Internet.

Por lo tanto, el conocimiento de seguridad es necesario al codificar estas plataformas. El tipo de comprensión que se necesita depende de la capa de pila en la que esté trabajando. Sin embargo, el conocimiento básico de seguridad de redes, aplicaciones y análisis definitivamente ayudará.

La codificación segura ya no es una opción o una cosa basada en el riesgo. Es una forma inteligente de decir que no sé cómo codificar de forma segura.

A veces, como desarrollador, no tiene que saberlo todo, pero sus arquitectos deben conocer las implicaciones y la posible solución para evitar vulnerabilidades comunes.

El conocimiento de seguridad nunca está de más durante la codificación, si algo lo convertirá en un mejor programador.

Cuánto de esa comprensión es suficiente es una pregunta completamente diferente. Pero lo básico debería ser conocido para todos los desarrolladores de software

  • Ataques a la red (-DoS / DDoS, escaneo)
  • El hombre en el medio ataca
  • Ataques de hombre en el navegador
  • Inyección SQL / secuencia de comandos de sitios cruzados / inclusión de archivos locales (OWASP top 10 es una buena lista)
  • Conocimientos sobre frameworks como hibernate (si eres una tienda Java)
  • Conocimiento sobre desbordamiento de búfer (desbordamiento de pila frente a desbordamiento de montón)

Arriba hay una buena lista para saber cómo funcionan estos ataques. Cuando esté codificando, intente ver si alguno de estos ataques puede crear problemas para su código o cómo se comportará en estas situaciones.

Nunca está de más pensar en la seguridad mientras se codifica y quería felicitarlo por pensar en la seguridad.

Hace menos de dos años, las secuencias de comandos entre sitios, CSRF y la Política del mismo origen me parecían abstractas y difíciles. Intuitivamente me gustó la idea de un acuerdo entre la codificación y su contexto, pero no vi cómo un lapso en este acuerdo podría permitir que los enlaces maliciosos posean todo lo que los usuarios escriben o hacen clic. No vi cuán desafortunadamente fácil es perder un cambio de contexto o ignorar el hecho de que los navegadores envían cookies automáticamente fuera del origen de la página.

Los artículos sobre seguridad web a menudo no mencionan a todos los actores en los escenarios de vulnerabilidad. Por ejemplo, los encabezados de CORS y las solicitudes de verificación previa no se veían como un mecanismo de protección firme, ya que ingenuamente creía que, dado que el protocolo CORS se basa en el consentimiento tanto del cliente como del servidor, tiene poca protección contra ataques maliciosos. Poco sabía que CORS apunta a escenarios indirectos donde los atacantes publican javascripts maliciosos, URL de medios incrustados o envían enlaces. Las víctimas desprevenidas hacen clic en los enlaces de sus mensajes o navegan casualmente a páginas que contienen JavaScript malicioso o URL de medios integrados que envían solicitudes a otros sitios en nombre de las víctimas. El protocolo CORS (y otros protocolos, como la Política de seguridad de contenido) dependen del consentimiento entre el cliente y el servidor, pero en el escenario indirecto, la mayoría de las víctimas recibe protección porque los navegadores modernos aplican estos protocolos (y los navegadores antiguos que no participan en estos protocolos). parece acatar los viejos permisos restrictivos).

Además de seguir las pautas de seguridad web y los resultados de las pruebas de penetración, los desarrolladores pueden aprovechar las pruebas de regresión. Las pruebas confirmarán que los cambios en el código fuente no dan lugar a fugas de autorización, por lo que los usuarios anónimos y autenticados obtienen las autorizaciones y aceptaciones respectivas.

Voy a estar en desacuerdo con algunas de las respuestas y construir sobre otras. La parte de seguridad cibernética que es esencial para el desarrollo de software se incluye en esta respuesta a continuación, ¡y no es una codificación segura! Es saber cuándo necesita una codificación segura.

  1. Debe comprender el concepto de riesgo de seguridad.
  2. Esto se compone de una probabilidad e impacto.

Armado con esto, podemos ver de inmediato que si el impacto potencial es insignificante, entonces no necesita comprender la seguridad cibernética para su esfuerzo de desarrollo. Al considerar el impacto, debe considerar el impacto para:

  1. Salud
  2. Información
  3. Recursos (incluyendo tiempo y dinero)

Vale la pena señalar que la persona que escribe o usa el código puede no ser la misma persona u organización que está en riesgo. Esto se conoce como “riesgo moral”. Un ejemplo trivial es un conmutador controlado de Internet de código abierto: excelente, sin riesgo para el fabricante. Pero, ¿qué pasa si alguien lo usa para operar la cerradura de la puerta de su garaje y se roba?

De acuerdo, entonces, si ha determinado que hay algún tipo de riesgo por el que vale la pena preocuparse. Ahora debe considerar el costo de la seguridad frente al impacto potencial para determinar si vale la pena abordarlo. Para hacer esto, necesita al menos cierta comprensión del modelado de amenazas.

En el modelado de amenazas, está combinando el impacto ya discutido con los mecanismos que podrían conducir a esos impactos y la probabilidad de que ocurran. Para que se produzca un impacto, debe tener:

  1. Un actor de amenazas: alguien preparado para hacerle daño a usted o su sistema de manera maliciosa o accidental
  2. Una vulnerabilidad: algún tipo de falla de diseño o implementación que pueden explotar.

Para comprender qué vulnerabilidades pueden existir en su sistema, necesita una cierta cantidad de conocimiento de seguridad cibernética. El mejor punto de partida es asegurarse de que comprende a fondo los controles OWASP TOP 10 y OWASP TOP 10. También mira STRIDE por elementos de Microsoft.

Si usted es responsable de la implementación y operación del sistema, también vale la pena leer en profundidad la seguridad de la red, la higiene / mantenimiento del servidor y la defensa.

Hay algunos buenos libros gratuitos disponibles, como Security Engineering de Ross Anderson.

En resumen, es esencial para la mayoría de los proyectos de cualquier consecuencia, pero el truco es saber cuán importante es para equilibrar el esfuerzo frente a la reducción del riesgo.

Respuesta corta: sí.

Versión un poco más larga: estar en ciberseguridad y tener una buena dosis de paranoia puede influir en mi respuesta a esta pregunta, pero creo que cuando se trata de tecnología, la seguridad nunca debe ser una ocurrencia tardía. Cada aplicación que use, ya sea nativa o basada en la web o cualquier otra cosa, aumenta su superficie de ataque. Como hemos visto una y otra vez, solo un pequeño error en una línea de código puede causar daños importantes. Así que absolutamente 100% sí.

Sí, si desea escribir un código bueno y confiable.

La seguridad cibernética y las buenas prácticas de programación están fuertemente entrelazadas. Al hacer esto último, a menudo también harás lo primero.

El ejemplo clásico son los desbordamientos del búfer, donde están habilitados por un código de baja calidad. La seguridad cibernética le dice que los desbordamientos del búfer permiten la escalada de privilegios, pero las buenas prácticas de programación le dicen que puede provocar bloqueos inesperados.

El punto es que los principios que sustentan la práctica de programación segura son los mismos que la práctica de programación “buena”. No me importa cómo aprendes o justificas usarlos, solo asegúrate de hacerlo.

No Cyber ​​Security per se, sino seguridad de aplicaciones o AppSec. AppSec es crucial para el desarrollo de software y contiene el conocimiento, el proceso y las herramientas para construir software seguro. Mi perspectiva es que todos en una organización de desarrollo deben tener un conocimiento fundamental de la seguridad de las aplicaciones. Cuando los desarrolladores entienden el panorama de amenazas, diseñan y codifican de manera diferente.

Esto depende del tipo de software que esté desarrollando, pero hoy en día en la mayoría de las aplicaciones la respuesta es casi siempre sí en la práctica.

  • Si su aplicación está expuesta a Internet (o se encuentra detrás de algo conectado a Internet, es decir, una base de datos detrás de un servidor de aplicaciones) la respuesta es sí.
  • Si su aplicación ejecuta una función crítica de seguridad, la respuesta es sí. (Google “marcapasos pirateado” – cosas de miedo!)
  • Si su aplicación contiene datos sensibles o valiosos, la respuesta es sí.
  • Si su aplicación está restringiendo / controlando / asegurando otras aplicaciones, la respuesta es sí
  • Si su “aplicación” es un controlador de dispositivo o componente del núcleo, la respuesta es sí.
  • Si su aplicación está habilitando otras aplicaciones en las categorías anteriores, la respuesta es sí. (Con esto quiero decir frameworks de lenguaje / tiempos de ejecución / bibliotecas, etc.)

Por supuesto, quedan algunas categorías de software sin ninguna implicación de seguridad (juegos no en línea, bibliotecas científicas, etc.), pero si está cerca de un sistema comercial o de Internet, la respuesta es sí.

Diría que definitivamente es necesario tener a alguien familiarizado con la seguridad cibernética / seguridad de las aplicaciones mientras se realiza el desarrollo de software. No necesita ser el desarrollador, pero no estaría de más que sean ellos. Si las ideas se crean desde cero e implican seguridad en todo el desarrollo, el resultado final será un producto muy seguro. Es desafortunado cuando los desarrolladores piensan en la seguridad al final del desarrollo y los intentos de asegurarla fallan debido a que no hay seguridad involucrada desde el principio.

Es una buena práctica y ahora hay varias compañías que ofrecen servicios de revisión de código para pruebas de seguridad de aplicaciones:

http://cyberdb.co/wp-content/upl

Necesario no. Importante si! En esta era de aplicaciones altamente accesibles como dispositivos móviles y web, la seguridad debe ser desarrollada desde el primer día.

Absolutamente, el desarrollo de software seguro es realmente una buena práctica para mejorar y mejorar cualquier servicio o producto de software.

More Interesting

¿Cuáles son las principales debilidades de Ada como lenguaje de programación?

¿Cuál es el mejor instituto de capacitación en desarrollo de software en Indore con asistencia de colocación?

¿Cómo encuentra un buen ingeniero de software un mejor segundo trabajo?

¿Cuáles son algunos errores comunes que hacen los propietarios de productos que perjudican a los desarrolladores al crear historias de usuarios?

Me estoy especializando en Ingeniería de Computadores, quiero ser un Arquitecto de Software o gerencia para desarrolladores de software, ¿cuál sería la mejor opción para seguir?

"No reinventar la rueda": ¿es siempre cierto?

¿Puedo incluir un proyecto en funcionamiento (sin terminar) en mi currículum?

¿Cuáles son las diferentes técnicas de recolección de basura (GC)?

Como gerente de desarrollo de software, ¿cómo puedo convencer a una empresa compradora para que conserve mis excelentes pero costosos desarrolladores frente a la contratación externa?

¿Qué es una carrera en pruebas de software?

¿Cuál es un escenario en el que ha utilizado un patrón de fábrica en el desarrollo de aplicaciones de software?

¿Cuáles son los mejores institutos de capacitación de software en Bangalore con asistencia de colocación garantizada?

¿Qué software puedo usar para programar?

¿Cuáles son las ventajas de las aplicaciones web orientadas al diseño y al desarrollo?

¿Cuáles son algunos de los principales desafíos al diseñar sistemas distribuidos y cuáles son las soluciones más populares?