Upload
nan-tic
View
70
Download
0
Embed Size (px)
Citation preview
● Si se notifica de un possible problema de seguridad a https://bugs.tryton.org se debe indicar que se trata de un problema de seguridad de forma que sólo unos pocos desarrolladores tienen acceso
● La revisión de código se hace también en privado● Se pide un número CVE● Se saca una nueva versión menor n.n.X para todas las
versiones afectadas
1.1/Seguridad, en serio
● Administrador a nivel de aplicación (por encima de las bases de datos). Permite:● Crear y borrar bases de datos● Realizar copias de seguridad y restaurarlas (no
escalable)● Password hash con crypt en el fichero de configuración
(cuidado con los permisos!)
2.1/Superadministrador
● Configurable a partir de la 4.2 (password + SMS por ejemplo)
● Hash de la contraseña con sha1 o bcrypt si disponible (más lento!)
2.2/Login
● Se puede limitar acceso según:● Objeto:
● Tabla● Campo● Botón/función
● Reglas de registros (corte horizontal) mediante dominio:● Ejemplo: [('code', 'ilike', '7%')]
● Nivel:● Lectura● Creación● Modificación● Borrado
2.3/Grupos y usuarios
● Timeout para volver a pedir contraseña después de X tiempo de inactividad (timeout en fichero de configuración)
● Cada intento fallido aumenta el tiempo de espera del login (limitado por el tiepo de timeout)● ¡¡¡Aumento exponencial!!!
2.4/Conexión y desconexión
● Reglas para nivel mínimo de dificultad de contraseñas● Número de días de validez de una misma contraseña para
un usuario● Pide contraseña si ha expirado el tiempo● Botón de reset de password para mandar correo
electrónico al usuario
2.5/Módulo password_expiry
● audit_trail● Registrar histórico de logins y logouts de los usuarios
del sistema● audit_log
● Permite ver en una sola pantalla todas las acciones realizadas por los usuarios
● Datos:● Usuario● Fecha y hora● Creación/modificación/borrado● Cambios realizados (si la tabla está historizada)
● No genera registro, cálculo a posteriori
2.6/Módulos de auditoría
● Conexión local o cifrada● trytond: utilizar usuario NO administrador pero con acceso
a toda la base de datos
3.1/PostgreSQL
● Conexión segura https:● Cliente web● Cliente escritorio● Webservices: XML-RPC y JSON-RPC
● Permisos se aplican también mediante los webservices● Aplicaciones específicas (trytond / flask): Permisos a nivel
de PostgreSQL
3.2/Conexiones
● Problema con los permisos:● Es muuuuuy complejo dar los permisos necesarios para
que un usuario● Podemos utilizar:
with Transaction().set_user(0):● @ModelView.button
4.1/Permisos programación: root
● python-sql: Evita SQL injectioncursor.execute(*action_report.select(action_report.id, action_report.report_content_data, order_by=action_report.id, limit=limit, offset=offset))
● Simpleeval (en sustitución de safe_eval – que no era tant safe)
● PySON
4.2/Seguridad
http://www.NaN-tic.com
Albert Cervera i [email protected]@albertnanlinkedin.com/in/albertca