Seguridad - Software Numera

Seguridad del software

Numera es una solución desarrollada por NUMERA SAS, estamos en continuo desarrollo y comunicación con nuestro ecosistema. Por lo tanto, los informes de errores de la comunidad son una fuente importante de comentarios sobre la seguridad. Alentamos a los desarrolladores a auditar el código y reportar problemas de seguridad.

Los procesos de I+D de Numera tienen pasos de revisión de código que incluyen aspectos de seguridad, para piezas de código nuevas y aportadas.

Seguro por diseño

Numera está diseñado de una manera que evita la introducción de las vulnerabilidades de seguridad más comunes:

  • Las inyecciones SQL se evitan mediante el uso de una API de nivel superior que no requiere consultas SQL manuales.
  • El marco impide el acceso de RPC a métodos privados a usuarios no autorizados, lo que dificulta la introducción de vulnerabilidades explotables.
  • El sistema esta diseñado bajo un esquema de roles y permisos que es deterministico. Los permisos son gestionados únicamente por usuarios administradores de Numera.
  • La asignación de roles es gestionable por los usuarios líderes de las empresas. Los roles habilitan el acceso a páginas dentro del sistema, agrupan permisos que permiten realizar consultas y acciones dentro del sistema.
  • Las empresas son entidades que se asignan a los usuarios y que le dan contexto para determinar las acciones. Un usuario solo podrá realizar las acciones que sus permisos permitan dentro de las empresas asignadas. Todas las asignaciones de una empresa son reportadas vía notificación al líder del equipo de la misma.
  • Solo roles líderes tienen los permisos para asignar sus empresas a sus usuarios. El rol líder contable es designado únicamente por los administradores de Numera o por otro líder contable de la empresa en mención.
  • Los usuarios con rol empleado tienen acceso a su información únicamente. El sistema limita la consultas desde el back end para que un empleado solo pueda solicitar información con su id de usuario.
  • Las seguridad de la información esta compartida con los usuarios líderes y que gestionan la información en la empresa. En virtud del que estos usuarios pueden agregar el rol líder a cualquiera de sus usuarios asignados a la empresa.
  • Principales vulnerabilidades de OWASP

    Aquí es donde Numera se encuentra en el principal problema de seguridad para las aplicaciones web, según lo enumerado por el Proyecto de seguridad de aplicaciones web abiertas (OWASP):

    Fallas de inyección: las fallas de inyección, particularmente la inyección de SQL, son comunes en las aplicaciones web. La inyección ocurre cuando los datos proporcionados por el usuario se envían a un intérprete como parte de un comando o consulta. Los datos hostiles del atacante engañan al intérprete para que ejecute comandos no deseados o cambie los datos.

    Numera se basa en un marco de mapeo relacional de objetos (ORM) que abstrae la creación de consultas y evita las inyecciones de SQL de forma predeterminada. Los desarrolladores normalmente no elaboran consultas SQL manualmente, son generadas por el ORM y los parámetros siempre se escapan correctamente. En el módulo de nómina prevenimos la inyección SQL con sentencias preparadas.

    Cross Site Scripting (XSS): las fallas de XSS ocurren cuando una aplicación toma datos proporcionados por el usuario y los envía a un navegador web sin primero validar o codificar ese contenido. XSS permite a los atacantes ejecutar secuencias de comandos en el navegador de la víctima que pueden secuestrar sesiones de usuario, desfigurar sitios web, posiblemente introducir gusanos, etc.

    El marco de Numera escapa de todas las expresiones representadas en vistas y páginas de forma predeterminada, evitando XSS.

    Falsificación de solicitud en sitios cruzados (CSRF): un ataque CSRF obliga al navegador de una víctima que ha iniciado sesión a enviar una solicitud HTTP falsificada, incluida la cookie de sesión de la víctima y cualquier otra información de autenticación incluida automáticamente, a una aplicación web vulnerable. Esto permite al atacante obligar al navegador de la víctima a generar solicitudes que la aplicación vulnerable cree que son solicitudes legítimas de la víctima.

    El motor del sitio web de Numera incluye un mecanismo de protección JWT que se genera en cada log in y expira a las 12 horas de uso. Evita que cualquier controlador HTTP reciba una solicitud POST sin el token de seguridad correspondiente. Este token de seguridad solo se conoce y está presente cuando el usuario accedió realmente al formulario del sitio web correspondiente, y un atacante no puede falsificar una solicitud sin él.

    Ejecución de archivos maliciosos: el código vulnerable a la inclusión remota de archivos (RFI) permite a los atacantes incluir código y datos hostiles, lo que resulta en ataques devastadores, como el compromiso total del servidor.

    Numera no expone funciones para realizar la inclusión remota de archivos ejecutables. Sólo recibimos archivos en tipo PDF, CSV e imágenes.

    Referencia de objeto directo inseguro: se produce una referencia de objeto directo cuando un desarrollador expone una referencia a un objeto de implementación interna, como un archivo, directorio, registro de base de datos o clave, como una URL o un parámetro de formulario. Los atacantes pueden manipular esas referencias para acceder a otros objetos sin autorización.

    El control de acceso de Numera no está implementado en el nivel de la interfaz de usuario, por lo que no hay riesgo de exponer referencias a objetos internos en las URL. Los atacantes no pueden eludir la capa de control de acceso manipulando esas referencias, porque cada solicitud aún tiene que pasar por la capa de validación de acceso a datos.

    Almacenamiento criptográfico inseguro: las aplicaciones web rara vez utilizan funciones criptográficas correctamente para proteger los datos y las credenciales. Los atacantes usan datos débilmente protegidos para realizar identidad.

    En Numera usamos el almacenaminamiento criptográfico para la información de las contraseñas de los usuarios evitando un posible ataque a este punto.