Las implementaciones de RPC
·
La desarrollada por Sun Microsystem denominada
ONC-RCP (Open Network Computing,
ONC-RCP), distribuida con casi todos los sistemas UNIX.
·
La desarrollada por Microsoft en línea con el
Ambiente de Computación Distribuida (DCE,
Distributed Computing Enviroment) definido por la Fundación de Software Abierto (OSF, Open Software Foundation). Incluida
en los sistemas operativos Windows.
Asegurar transmisiones basadas en RPC
La llamada de procedimiento
remoto (RPC) segura protege los procedimientos remotos con un mecanismo de
autenticación. El mecanismo de autenticación Diffie-Hellman autentica tanto el
host como el usuario que realiza una solicitud para un servicio. El mecanismo
de autenticación utiliza el cifrado Estándar de cifrado de datos (DES).
Las aplicaciones que utilizan RPC segura incluyen NFS y los servicios de
nombres, NIS y NIS+.
Diffie-Hellman
El protocolo criptográfico Diffie-Hellman,1 debido
a Whitfield Diffie y Martin
Hellman, (Diffie-Hellman Problem->DHP) es un protocolo de establecimiento de
claves entre partes que no han tenido contacto previo,
utilizando un canal inseguro, y de manera anónima (no autenticada).
Se emplea generalmente como
medio para acordar claves simétricas que serán empleadas para
el cifrado de una sesión (establecer clave de sesión). Siendo no autenticado,
sin embargo, provee las bases para varios protocolos autenticados.
Su seguridad radica en la
extrema dificultad (conjeturada, no demostrada) de calcular logaritmos discretos en un cuerpo finito.
Cuestiones que afectan
la comunicación por RPC
En llamadas remotas las
posibles fuentes de fallos son múltiples.
1. Fallos
en los procedimientos llamados
La ejecución
del proceso llamado se detiene por errores del hardware o del sistema operativo
que lo ejecuta (ej.: caída del sistema)
También por
errores internos del propio procedimiento (divisiones por 0, índices de arrays
fuera de rango, etc.)
2. Fallos
en la comunicación
Perdida de
la conexión: la red deja de enviar paquetes (caída de la red, perdida de un
enlace,...)
Corrupción
del contenido de alguno de los mensajes enviados
Perdida de
paquetes: algún mensaje/s no llega a su destino
Recepción
fuera de orden: paquetes retrasados recibidos de forma desordenada
3. Otros
fallos: bugs en el proceso llamado, ataques, etc.
Implementación
de RPC en Bases de Datos
SQL Server admite el uso de
servidor a servidor RPC, que permite utilizar una conexión a un servidor para
llamar a un procedimiento en un servidor secundario. En este artículo se
describe un método para utilizar RPC para llamar a cualquier procedimiento
almacenado extendido personalizado en un servidor secundario sin cambiar el
código de la aplicación.
La llamada a un procedimiento almacenado extendido puede producirse de dos maneras diferentes:
La llamada a un procedimiento almacenado extendido puede producirse de dos maneras diferentes:
·
Ad-hoc Transact-SQL.
·
Mediante una llamada a un "contenedor"
procedimiento almacenado.
En cualquier caso, puede
redirigir la llamada a un servidor remoto mediante una llamada de SQL Server
RPC sin realizar ningún cambio a la aplicación cliente.
Debido a que se realiza un seguimiento de un procedimiento almacenado extendido en sysobjects como cualquier otro procedimiento almacenado de Transact-SQL, puede colocar la referencia al procedimiento almacenado existente y reemplazarlo con un contenedor que llama a la rutina remota. Si ya dispone de un contenedor de procedimiento almacenado, o bien puede actualizarla para utilizar la sintaxis RPC o puede utilizar el método que se describe en este artículo para proporcionar un nivel adicional de direccionamiento indirecto en la llamada de procedimiento almacenado extendido.
Debido a que se realiza un seguimiento de un procedimiento almacenado extendido en sysobjects como cualquier otro procedimiento almacenado de Transact-SQL, puede colocar la referencia al procedimiento almacenado existente y reemplazarlo con un contenedor que llama a la rutina remota. Si ya dispone de un contenedor de procedimiento almacenado, o bien puede actualizarla para utilizar la sintaxis RPC o puede utilizar el método que se describe en este artículo para proporcionar un nivel adicional de direccionamiento indirecto en la llamada de procedimiento almacenado extendido.
Vulnerabilidades en RPC
La vulnerabilidad podría
permitir a un atacante ejecutar código arbitrario y tomar control total del
sistema afectado. La configuración por defecto no permite que los usuarios sean
atacados por medio de esta vulnerabilidad, aunque podría ser afectada en
aplicaciones de terceros.
Vulnerabilidades XMLRPC en PHP
Otra vulnerabilidad bastante
común en esta categoría incluye vulnerabilidades en el uso de XML-RPC
XML-RPC es un protocolo de
llamada a procedimiento remoto que usa XML para codificar las llamadas y HTTP
como mecanismo de transporte.
Es un protocolo muy simple ya
que sólo define unos cuantos tipos de datos y comandos útiles, además de una
descripción completa de corta extensión.
Un común desperfecto está en
los distintas implementaciones de XML-RPC en PHP pasando entradas de datos del
usuario sin filtrar por la función eval() en el servidor XML-RPC. Esto permite
al atacante ejecutar código, en el sistema vulnerable. Cualquier usuario con
habilidad de subir XML manualmente al servidor puede insertar código PHP que
puede ser ejecutado por la aplicación Web vulnerable.
No hay comentarios:
Publicar un comentario