Table of Contents
Este artículo es la tercera y última publicación de la trilogía sobre Open edX Security. Como desarrollador de Open edX, resumiré todo lo que debes saber sobre las vulnerabilidades de seguridad.
Para entender la importancia, es mejor primero definir esa vulnerabilidad; Para eso, usaré una cita.
“Una vulnerabilidad es un agujero o una debilidad en la aplicación, que puede ser un defecto de diseño o un error de implementación, que permite a un atacante causar daño a las partes interesadas de una aplicación”. Fundación OWASP
Comprender las vulnerabilidades comunes y las técnicas de explotación nos permite escribir código más seguro e identificar y corregir posibles debilidades antes de que se conviertan en problemas graves.
Por otro lado, el 45% del correo que recibe Open edX sobre seguridad y vulnerabilidades proviene de directivos. Esta razón hace importante nuestra participación como desarrolladores de Open edX.
Listo, ahora ¿cómo puedo contribuir?
Primero, debe saber que la mayoría de los informes de vulnerabilidad provienen de preguntas: ¿Debería funcionar así? ¿Por qué?
Si consideras que algo tiene un comportamiento que no te parece correcto y podría generar alguna vulnerabilidad, puedes
Envíe un correo electrónico a security@openedx.org para informar la anomalía.
⚠️ No es una buena idea publicar esto en canales públicos, ya que facilitaría la vida a cualquiera que pretenda atacar y dañar la plataforma.
¿Qué pasa si no tengo idea de qué tipo de cosas podrían ser riesgosas?
El Open Worldwide Application Security Project (OWASP) creó una lista de las 10 principales vulnerabilidades reconocidas a nivel mundial por los desarrolladores. Aquí te dejamos una tabla con ejemplos para tenerlos en cuenta.
Vulnerabilidad | Ejemplo | Échale un vistazo a |
Control de acceso roto: | “Tenía permiso para hacer esto, pero ahora mismo no”. “Como no soy superusuario, tenía acceso a puntos finales que no debería tener. “ | Permisos |
Fallos criptográficos: | “¿Se transmite algún dato en texto claro?” | HTTP frente a HTTPS |
Inyección: | “El usuario puede romper la plataforma agregando un código en el cuadro de nombre de usuario al iniciar sesión”. | Validar, filtrar y sanear los insumos. |
Diseño inseguro: | “Tener formas de tener un certificado sin aprobar un examen. Intentando hacer trampa”. | Formas de no permitir flujos de trampas. |
Mala configuración de seguridad: | “Las funciones innecesarias están habilitadas o instaladas de forma predeterminada”. | Configuración predeterminada |
Componentes obsoletos: | “Si el software es vulnerable, no tiene soporte o está desactualizado”. | Requisitos de actualización |
Fallos de autenticación: | “¿Es difícil hacer trampa o autenticar?” | Autenticación |
Fallos de integridad: | “Cuando los objetos o datos están codificados o serializados en una estructura que un atacante puede ver y modificar es vulnerable a una deserialización insegura”. | Verifique que los datos provengan de la fuente esperada y confiable. |
Fallos de observabilidad: | “Eventos no registrados o tienen mensajes de registro poco claros”. “No se activan alertas para ataques activos en tiempo real o cerca”. | Registros y monitoreo |
Falsificaciones de URL: | “¿Puedo confiar en mis URL?” | Desinfecte y valide las entradas y aplique el esquema de URL. |
¿Y cómo sé qué tan grave es una vulnerabilidad?
Open edX utiliza una herramienta llamada CVSS para calificar la prioridad de una exposición. La herramienta CVSS calcula la puntuación de diferentes secciones. Al igual que con las diez vulnerabilidades, resumiremos estos ocho ejes que utiliza CVSS para calificar una vulnerabilidad.
Vector | Preguntas |
Vector de ataque (AV): | ¿Necesitan acceso a un dispositivo físico o pueden hacerlo desde la red para explotar esta vulnerabilidad? |
Complejidad del ataque (AC): | ¿El ataque es fácil de realizar o necesita un conocimiento profundo sobre lo que está haciendo? |
Privilegios requeridos (PR): | ¿Necesitas privilegios o cualquiera puede atacar? |
Interacción del usuario (UI): | ¿Necesitas que alguien haga algo? |
Alcance (S): | Cuando atacas, ¿tienes acceso a una cosa o puedes ampliar tu acceso? |
Confidencialidad ©: | ¿Vamos a tener nuestros datos expuestos? |
Integridad (yo): | ¿Alguien puede cambiar la información de nuestro sistema? |
Disponibilidad (A): | ¿Pueden bajar la plataforma? |
Para saber qué tan grave es una vulnerabilidad, debes ingresar a la página de la herramienta CVSS y hacerte las preguntas anteriores para completar la información, como se muestra en el siguiente ejemplo.
Mire la conferencia Safer The History & Future of Open edX Security , parte de la convención Open edX 2023, para obtener más información sobre este proceso.
Conferencia Safer La historia y el futuro de la seguridad de Open edX. Open edX, 2023. Disponible en: https://youtu.be/WRJAox_8YY0?t=1226 .
En el ejemplo, se calculó con las secciones “Puntuación base”, que es lo que suele utilizar Open edX para calificar vulnerabilidades. Aún así, la herramienta da la posibilidad de analizar más cosas.
Puede consultar la segunda publicación de nuestra serie de seguridad o revisar el Documento de especificación CVSS directamente.
Acerca del grupo de trabajo de seguridad
Si le apasiona la seguridad o desea involucrarse más en la clasificación de vulnerabilidades de código abierto, lea el Grupo de trabajo de seguridad de código abierto OEP-60 y comuníquese con el Grupo de trabajo de seguridad.
Recomendaciones finales:
La aplicación de medidas de seguridad debe ser un proceso proactivo, no reactivo. Por lo tanto, es bueno considerar las 10 vulnerabilidades principales al desarrollar. Aún así, podemos empezar con estas cinco medidas:
- Aplicar controles de acceso : restrinja los privilegios de los usuarios según los roles, garantizando que solo se puedan realizar acciones autorizadas dentro del sistema.
- Cifre datos confidenciales: proteja los datos del usuario cifrándolos en reposo y en tránsito. Utilice algoritmos de cifrado estándar de la industria para obtener la máxima protección.
- Validar la entrada del usuario: implementar mecanismos de validación de entrada para evitar la entrada de datos maliciosos que puedan comprometer la integridad del sistema.
- Actualizar dependencias: actualice periódicamente las bibliotecas y dependencias de terceros utilizadas en su código base. Las versiones desactualizadas pueden contener vulnerabilidades conocidas que los piratas informáticos pueden aprovechar.
- Aplique una autenticación sólida: puntos de acceso seguros con contraseñas seguras, autenticación multifactor u opciones de inicio de sesión único (SSO) para fortalecer las cuentas de usuario.
Y si encuentra alguna vulnerabilidad, no entre en pánico. Escriba a security@openedx.org y no exponga públicamente esta posible vulnerabilidad. Este grupo le dirá la mejor manera de abordarlo.
Recuerde, proteger su instancia de Open edX es un proceso continuo. Si sigue estas pautas, estará dando pasos importantes para mantener un entorno de aprendizaje seguro para todos los usuarios. 🚀🔒
How useful was this post?
Click on a star to rate it!
Average rating / 5. Vote count:
No votes so far! Be the first to rate this post.