viernes, 12 de junio de 2009

CWE-285 Y CWE-327

CWE-285 Control de acceso inadecuado (autorización)

Descripción :
El software no realiza comprobaciones de control de acceso de una manera coherente a través de todos los posibles caminos de ejecución.

Cuando el control de acceso no se aplican constantemente, los usuarios pueden acceder a los datos o realizar acciones que no se deben llevar a cabo.

Problemas: fugas de información, negación de servicio y ejecución de código arbitrario.

Consecuencias:
Disponibilidad
Confidencialidad
Integridad

Si permitimos el acceso a usuarios no autorizados, da lugar a un atacante para acceder a los recursos sensibles, modificar o eliminar los mismos, es decir, realizar acciones no autorizadas.

Riesgo de Explotar (aprovechar)- Alto

EJEMPLO: Registra usuarios nuevos en una base de datos.

<% server.createObject("ADODB.Connection") con.open "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & server.MapPath("bd.mdb")

set rs = server.CreateObject("ADODB.Recordset") if request.form("txtnombre") = "" then response.write("
Debes rellenar el campo nombre
")

else sql = "Select * From Tabla1 Where (Nombre like'" & request.form("txtnombre") & "')" rs.open sql,con,1,2
if rs.eof and rs.bof then response.write("
Ese usuario no existe
")
else if request.form("txtpass") = "" then response.write("
Debes rellenar el campo
")
else rs.close sql = "Select * From Tabla1 Where (Password like'" & request.form("txtpass") & "')" rs.open sql,con,1,2 if rs.eof and rs.bof then response.write("
Este password no corresponde a este usuario
")

else response.write("
Bienvenido.:") & rs.fields("Nombre") & response.write("
") color = rs.fields("Color")%>


EJEMPLO 2: Crear un archivo de contraseñas


htpasswd -c /usr/local/apache/passwd/passwords rbowen

htpasswd le pedirá la contraseña, y luego se la volverá a pedir para confirmarla:
# htpasswd -c /usr/local/apache/passwd/passwords rbowen New password: mypassword Re-type new password: mypassword Adding password for user rbowen

Configuramos el servidor para que solicite una contraseña y decirle al servidor a qué usuarios se les permite el acceso.
Editamos el archivo httpd.conf o usando un archivo .htaccess.

Para proteger el directorio: /usr/local/apache/htdocs/secret
/usr/local/apache/htdocs/secret/.htaccess
httpd.conf dentro de una sección

AuthType Basic AuthName "Restricted Files" AuthUserFile /usr/local/apache/passwd/passwords Require user rbowen


RECOMENDACIONES

Dividir la responsabilidad en áreas administrativas.

Reducir la superficie de ataque con funciones de mapeo de datos y funcionalidad.

Utilizar el control de acceso basado en (RBAC) para hacer cumplir las funciones en las fronteras

Para aplicaciones web, el mecanismo de control de acceso se aplica en cada página. Restringiendo el acceso a solicitudes y sesiones.

Utilizar herramientas y técnicas que requieran un análisis manual. Estas pueden ser más eficaces que técnicas automatizadas.

Utilizar el control de acceso a las capacidades del sistema operativo y del medio ambiente.

Definir listas de control de acceso.


CWE-327 Uso de un algoritmo criptográfico

Descripción

Es un riesgo no usar un algoritmo criptográfico, esto puede dar lugar a la revelación de información sensible.

El uso de un algoritmo no estándar es peligroso, porque un atacante puede ser capaz de romper el algoritmo.

Hay técnicas conocidas para romper el algoritmo.

Consecuencias
Confidencialidad
Integridad
Rendición de cuentas Responsabilidad para el contenido de los mensajes en criptografía puede ser objeto de un ataque.

Riesgo de Explotar - Medio a Alto

Ejemplo

Estándar para el cifrado de datos (DES). El algoritmo DES es sustituido por AES (Advanced Encryption Standard) .

DES:
Usa criptografía simétrica
Red de Feistel
Se basa el procesamiento de información en algoritmos matemáticos
Basa su seguridad ocultando la técnica

AES:
Usa criptografía simétrica
Red de sustitución-permutación
Rápido en software como en hardware
Fácil de implementar, y requiere poca memoria
Permite un mayor rango de tamaño de bloques y longitud de la clave

Ejemplo C / C + + :
EVP_des_ecb();

Ejemplo Java:
Cipher des=Cipher.getInstance("DES...");
des.initEncrypt(key2);

Ejemplos

Configuración por defecto del producto utiliza MD5 en lugar de los algoritmos más fuertes. Esto da lugar a la falsificación de certificados. (CVE-2005-2946 )
Productos que sólo utilizan "XOR" para ofuscar los datos sensibles. (CVE-2007-4150 )
Productos que utilizan hash para la autenticación, esto permite a un atacante obtener privilegios. (CVE-2007-6013 )

RECOMENDACIONES

No desarrollar su propio algoritmo criptográfico. Es probable estar expuestos a los ataques de quienes comprenden los algoritmos criptógrafos.

Técnicas de ingeniería inversa . El algoritmo puede verse comprometido, si los atacantes averiguan cómo funciona, entonces es especialmente débil.

El código fuente debe estar disponible para el análisis (con todos los mecanismos de cifrado).

Revisar periódicamente que no se esté utilizando la criptografía obsoleta.

Administrar y proteger cuidadosamente las claves criptográficas. Si las teclas se pueden adivinar, la criptografía es irrelevante.

Utilizar herramientas y técnicas que requieran un análisis manual.

No hay comentarios: