Desarrollo seguro desde casa: consejos y trucos
31 de marzo de 2020
0 minutos de lecturaDesarrollo seguro a distancia
Mientras nos preparamos para un período prolongado de trabajo desde casa, debemos reevaluar distintas formas de trabajar, y la seguridad no es la excepción. La colaboración remota, que es nueva para muchas personas, puede requerir algunos cambios en tus prácticas o prioridades de seguridad.
Por eso, aquí tienes algunas sugerencias para adaptar tus políticas de seguridad a un equipo que ahora trabaja de forma remota. Además de su valor inmediato, estas prácticas te ayudarán a ampliar tus prácticas de seguridad, incluso cuando las personas vuelvan a sus oficinas.
Descarga nuestra práctica guía rápida: Cómo proteger el desarrollo cuando se trabaja a distancia.
Empodera a los desarrolladores remotos con pautas documentadas
La clave del desarrollo remoto, especialmente cuando hay niños corriendo por todos lados, es permitir que cada desarrollador avance por su cuenta y mantener la comunicación asíncrona. Esto significa menos espera por aprobaciones y más poder de decisión. En cuanto a la seguridad, implica revisar tus procesos de aprobación y determinar cuántas decisiones puedes delegar a los desarrolladores. En lugar de esperar una aprobación, el desarrollador puede seguir avanzando y mantenerte al tanto de sus acciones y decisiones.
Para empoderar al equipo con éxito, todos deben tener claras las expectativas: ¿entienden qué deben hacer y qué implica completar una tarea correctamente? Esto significa que debes invertir en documentar tus prácticas y expectativas, para que los desarrolladores puedan tomar las decisiones correctas de forma consistente.
Evita interrumpir la compilación y, en su lugar, rechaza los pull request
Interrumpir la compilación por una infracción de seguridad es una medida de seguridad de CI/CD muy popular, pero también puede generar muchos problemas. Si la compilación no se completa correctamente, el software no puede avanzar y los desarrolladores se quedan prácticamente bloqueados. Esto es especialmente cierto cuando el problema se debe a una causa externa, como la divulgación de una nueva vulnerabilidad en una biblioteca que ya estás usando.
Cuando se trabaja de forma remota y asíncrona, estas interrupciones tienen un impacto mucho mayor, ya que los equipos tardan más en identificar el problema, asignárselo a alguien y resolverlo. Por eso, limita estas interrupciones a casos realmente extremos, como una vulnerabilidad crítica que justifique detenerlo todo para solucionarla.
Para otros problemas, rechaza los pull request. Los pull request tienen varias ventajas:
Te permiten probar solo los cambios de código nuevos, que el desarrollador debería poder corregir.
Están más localizados en la rama donde se modifica el código, lo que mantiene la autonomía de cada desarrollador.
Puedes decidir si un fallo determinado bloquea una fusión o solo sirve como información, lo que permite que los desarrolladores decidan y sigan adelante.
Invierte en visibilidad de seguridad
La autonomía de los desarrolladores es excelente, pero también debes asegurarte de mantener la seguridad. En lugar de poner obstáculos, aborda esta necesidad mediante la gobernanza y la visibilidad. DevOps nos ha enseñado que podemos tolerar más errores en las implementaciones, siempre que podamos detectarlos y corregirlos rápidamente. En otras palabras, es poco probable que alguien aproveche una vulnerabilidad apenas se implementa, así que responder rápido es casi tan bueno como evitar el problema desde el principio, y causa menos interrupciones.
La visibilidad puede adoptar muchas formas. Aquí tienes algunas sugerencias:
Instrumenta las compilaciones para registrar las dependencias incluidas en tu aplicación. Esto se conoce comouna lista de materiales de software (SBOM, por sus siglas en inglés). Con una SBOM, sabrás si una vulnerabilidad recién divulgada afecta tu proyecto.
Publica las vulnerabilidades detectadas durante la compilación que no fueron lo bastante graves como para interrumpirla.Los miembros del equipo de seguridad pueden revisar periódicamente los problemas en un canal de Slack o mediante correos electrónicos de notificación.
Crea tablas de clasificación que muestren cómo gestionan los distintos equipos los problemas de seguridad. Puedes compartir entre los equipos los logros en seguridad, como el tiempo necesario para corregir una vulnerabilidad. Esto puede ayudar a gamificar el proceso y generar impulso social para mejorar. Los equipos también pueden ver cómo progresan con el tiempo o corregir el rumbo si no avanzan como desean. Asegúrate de que estas tablas solo sirvan para informar y evita usarlas como medida de desempeño. Eso puede ser contraproducente si buscas fomentar una cultura abierta de conciencia sobre la seguridad.
Mejora tus habilidades, tanto si trabajas en seguridad como en desarrollo
Trabajar de forma remota puede exigir mucha autosuficiencia, lo que al principio puede intimidar. Sin embargo, muchas personas que trabajan a distancia descubren que tienen más tiempo durante el día —antes dedicado a trasladarse— para aprender. Aprovecha esa oportunidad para fortalecer las habilidades de tus equipos de desarrollo y seguridad.
Para los desarrolladores, invierte en educación sobre seguridad. Puedes hacerlo con contenido en línea como MyDevSecOps, videos de conferencias de OWASP o de DevSecCon, o con herramientas comerciales como SecureCodeWarrior. No te pierdas el próximo evento en línea AllTheTalks, cuyos fondos se destinarán a organizaciones benéficas que luchan contra la COVID-19.
En cuanto a seguridad, aprovecha este tiempo para desarrollar o mejorar las habilidades de programación del equipo. Estas habilidades serán invaluables a medida que avancemos hacia un mundo DevSecOps. Dedicar tiempo a aprender más sobre programación también te ayudará a entender mejor a los desarrolladores. Aquí tienes algunos recursos para empezar:
Celebra los logros en seguridad
Asegúrate de darles a los desarrolladores una palmada virtual en el hombro cuando contribuyan a la seguridad. Los desarrolladores son personas y, como todas las personas, necesitan reconocimiento para seguir haciendo un buen trabajo. Además, ¡se lo han ganado!
Trabajar desde casa hace que esto sea doblemente importante. Las señales sociales, como una palabra amable en la oficina o un choque de manos (o quizá de codos…), no son una opción, así que debes buscar alternativas virtuales. Trabajar desde casa puede resultar solitario y aislante, y darles ánimo a las personas cuando hacen un buen trabajo puede marcar una gran diferencia.
¿Cómo puedes reconocer el buen trabajo? Hay muchas maneras, así que ¡usa tu creatividad! Aquí tienes algunas sugerencias:
Una palabra amable en Slack o en un correo grupal. Es algo sencillo, pero importante. Puede ser algo puntual o una iniciativa como «el campeón de seguridad del mes», siempre que la mantengas. Incluso puedes reconocer públicamente su trabajo en la cuenta de redes sociales de tu empresa si lo merece.
Regalos especiales, desde calcomanías hasta camisetas y sudaderas, reservados para quienes se los hayan ganado. En el podcast The Secure Developer encontrarás muchos ejemplos.
Un regalo con valor monetario, como un día de spa o un viaje con entrada a DefCon (si después de que pase todo esto todavía se celebran conferencias).
Asigna socios de seguridad a los equipos de desarrollo y mantén una comunicación frecuente
Construir una relación ya es bastante difícil, y hacerlo o mantenerla a distancia lo es aún más. Para que los desarrolladores remotos sepan a quién acudir cuando tengan una pregunta de seguridad, debes establecer una conexión clara entre los equipos de desarrollo y sus pares del área de seguridad.
No hace falta hacer cambios en la organización para lograr esa conexión; basta con vincular a las personas en las prácticas de trabajo cotidianas. Por cada integrante de tus equipos de seguridad de aplicaciones, seguridad de productos o seguridad en la nube —como sea que estén organizados—, establece una contraparte entre los líderes o directores de desarrollo. Programa reuniones periódicas entre esas contrapartes y haz que el socio de seguridad participe en las reuniones breves virtuales y otras actividades de esos equipos de desarrollo. Estas se sumarían a las reuniones del equipo de seguridad, donde puedes obtener una visión más amplia de la organización. Escucha a Sara explicar cómo lo hacen en Invision en el podcast The Secure Developer.
Enfócate en la higiene de seguridad
Nuestra nueva realidad exige enfocarnos y asegurarnos de hacer lo más importante. En seguridad, eso significa priorizar lo básico antes que los ataques más complejos. Para la gran mayoría de las empresas, debería tener prioridad ampliar la capacidad para gestionar componentes vulnerables, errores de configuración y tokens filtrados, por encima de los ataques sofisticados.
Cuando hayas logrado ampliar las prácticas de higiene de seguridad a tus equipos de desarrollo remotos, podrás volver a ampliar tus horizontes. Para usar términos relacionados con la COVID-19, asegúrate de que todos se laven las manos con regularidad antes de empezar a comprar trajes de protección.
Refuerza las defensas de tu infraestructura crítica
Si todavía dependías de redes privilegiadas, este es el momento de dejar de hacerlo. Aunque los empleados pueden conectarse mediante VPN, las redes y los equipos domésticos son mucho menos seguros que los de la empresa, y debes prever que se producirán más ataques a través de ellos.
Invierte en la autenticación multifactor o amplíala
Aprovecha esta oportunidad para empezar a invertir en una infraestructura de autenticación de dos factores. Proteger la autenticación de los empleados remotos será fundamental durante este período, ya sea que trabajes en entornos en la nube o que se conecten a la infraestructura corporativa mediante VPN. La buena noticia es que estas inversiones, aunque no estuvieran planificadas, darán frutos en el futuro, ya que podrás extender esta capacidad a otros sistemas de tu red o entorno en la nube.
Mejora la seguridad de SSH
Puedes reforzar la seguridad de tus conexiones SSH si habilitas la autenticación mutua y reduces la duración de las sesiones. A menudo, los desarrolladores reciben acceso a máquinas de producción mediante SSH, y esos puntos de conexión se autentican con claves privadas estáticas que siempre están presentes en las máquinas.
A medida que más de esas máquinas pasan a estar fuera de la oficina, aumenta el riesgo de ataque. Por eso, es fundamental reforzar la autenticación en estas interfaces. Agregar o reducir el tiempo de espera de las sesiones también garantizará que las estaciones de trabajo de los desarrolladores no queden conectadas a sistemas críticos o repositorios de código cuando estén inactivas.
Para mejorar aún más la seguridad, considera usar sistemas de código abierto como BLESS de Netflix o SmallStep, o soluciones comerciales como Okta u otras para habilitar una autenticación más sólida basada en la identidad. Encontrarás más información en mi charla de InfoQ, «El desarrollador como vehículo para distribuir malware».
Programas de recompensas por errores
Como algunas empresas cerrarán temporalmente, muchas personas buscarán oportunidades en la economía colaborativa. Es una gran oportunidad para fortalecer tu estrategia de evaluación de seguridad mediante un programa de recompensas por errores. Así ayudarás a crear oportunidades laborales para quienes necesitan empleo y harás que tu software sea más resistente.
Los programas de recompensas por errores son una buena forma de agregar una capa de capacidad de evaluación de seguridad y darles a los investigadores instrucciones claras para reportar vulnerabilidades a tu organización. Considera plataformas como Hacker One o BugCrowd. Pueden guiarte en gran parte del proceso de configuración del programa. Si tienes tiempo libre, ¡incluso podrías participar como hacker!
Conclusión
Mientras muchas organizaciones se adaptan a la nueva normalidad del trabajo remoto, es importante tener en cuenta cómo trabaja la gente habitualmente y estructurar nuestras defensas de seguridad para abordar directamente esos hábitos. Entender las tareas cotidianas de los desarrolladores y crear controles de seguridad que los protejan sin impedirles hacer su trabajo será fundamental para superar estos tiempos difíciles.
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.



