En nuestro medio el nombre de SAP suele ser sinónimo de un sistema de planeación de recursos empresariales (ERP, por sus siglas en inglés). La enorme variedad de soluciones de este fabricante lo han convertido en el corazón de la operación empresarial de casi tres cuartas partes de las corporaciones más importantes del mundo, sobrepasando los 120 mil clientes.

Derivado de lo anterior, la necesidad de llevar seguridad a todos los recursos de información de las organizaciones ha provocado que los esfuerzos para robustecer este conjunto de herramientas se hagan cada vez mayores. Por ejemplo, en el año 2002 se lanzó la solución GRC (Governance, risk and compliance) con el fin de brindar seguridad lógica al negocio y prevenir ataques desde el interior de la organización; en 2008 se dio otro salto importante con la auditoría de código a través de ABAP (Advanced business application programming) que previene la aparición de ataques desde las etapas de desarrollo.

En los últimos años las amenazas a nivel aplicativo se han multiplicado y SAP se ha mantenido muy involucrado para actuar en respuesta, sobre todo por la visibilidad que tiene al ser la herramienta base de la operación de muchas corporaciones. Así pues, los ataques que más se han dado sobre esta plataforma son los siguientes[i]:

  1. Escalado de directorios (Directory Traversal).
  2. Cross-Site Scripting / Modificación no autorizada de datos.
  3. Falta de verificación de autenticaciones.
  4. Divulgación de información.
  5. Uso no autorizado de funcionalidades de la aplicación.

Existe un mito que establece que los ataques a los sistemas SAP solamente se podrían dar desde adentro de la organización, un aspecto nada despreciable si sabemos que 80% de los ataques cibernéticos a una empresa provienen de su interior. Sin embargo, mientras las organizaciones tengan algún tipo de conexión a Internet, siempre habrá forma de llegar a los servidores de SAP, incluso mediante el apoyo de buscadores Web o programas como Nmap. Como ejemplo, ponga la siguiente expresión en el buscador Google:

Inurl:/irj/portal

Y obtendrá acceso a diferentes organizaciones que tienen publicada su plataforma SAP. Si adicionamos a este escenario algo que se pudiera haber obtenido a través de ingeniería social, o si de casualidad el que está utilizando este comando es un exempleado cuyos permisos no han sido revocados, hay un muy alto nivel de probabilidad de que ocurra un incidente en una de las plataformas más críticas de la organización.

Enumero a continuación las diez principales vulnerabilidades en SAP detectadas durante los años 2011 y 2012, en orden ascendente de criticidad. Esta información ha sido presentada en conferencias de seguridad de la información como la de Kuwait en mayo de este año:

10) Denegación de servicios a través de scripts en la interfaz gráfica.

El manejo de scripts en la interfaz gráfica de SAP  mejora las capacidades para ambientes Windows y Java, reduciendo, a través de la automatización, tareas repetitivas de los usuarios finales, tal cual lo hacemos con las macros que existen en aplicaciones tan populares como Excel.

Desde el punto de vista de seguridad, el problema es que los scripts generados tendrán los mismos derechos del usuario que los ejecuta, además de que los mensajes de seguridad que se muestran al usuario se pueden apagar en el registro de la estación de trabajo. Así pues, es posible realizar un ataque DoS utilizando un script sencillo, lo que constituiría un sabotaje con un riesgo de negocio alto.

 9) Denegación de servicios a través de paquetes mal formados de XML.

 Con el fin de generar aplicaciones para los usuarios finales que utilicen ambiente Web en la intranet o Internet y acceder a datos de SAP, existe la interfaz de Gateway WebRFC como herramienta de desarrollo.

Las aplicaciones WebRFC permiten publicar reportes estándar de SAP en la Web y cualquier usuario puede tener acceso a estas aplicaciones.

NetWeaver, una aplicación orientada a servicio, es vulnerable a ataques de XML, haciendo posible la materialización de un ataque con scripts e inclusive correr estos a través de Internet.

Este ataque se manifiesta como un sabotaje que constituye un riesgo crítico de negocio.

8) Inyección de scripts en BAPI (business application program interface)/Robo de Hash

Los BAPI son el estándar de comunicaciones para aplicaciones de negocio. En un ambiente SAP, BAPI es la interfaz que da acceso a procesos y datos en sistemas SAP y no-SAP invocados a través de aplicaciones externas u otros programas.

En estas transacciones se presenta una falla al tratar de “sanitizar” la entrada de datos, lo que hace posible inyectar código Java script o llevarlo a un servidor SMB falso. Los clientes de SAP utilizan sus accesos y estos van a dar al host del atacante.

Este tipo de ataques se presentan como espionaje, sabotaje o fraude que representa un riesgo alto para el negocio.

7)  Cifrado pobre de la interfaz gráfica de usuario (GUI) de SAP.

Todas las aplicaciones en un ambiente cliente-servidor tienen una interfaz hacia el usuario, el front-end, y una serie de recursos orquestados por un código que lo soporta, el back-end.

El front-end de SAP puede salvar las contraseñas cifradas en atajos que se guardan en un archivo con la extensión .sap; esa contraseña utiliza el algoritmo de XOR con una llave secreta que tiene el mismo valor para cada instalación de la interfaz gráfica de SAP. Con acceso a dicho archivo y las herramientas adecuadas, obtener la contraseña puede tomar menos de un segundo.

Un ataque al GUI puede traducirse en espionaje o fraude, lo que representa un riesgo alto para el negocio.

6)  Escaneo remoto de puertos por medio de JSP (Java server pages).

La tecnología JSP le permite a los desarrolladores crear páginas Web dinámicas basadas en HTML, XML u otros documentos. La plataforma Java brinda la interfaz y el ambiente para desarrollar y correr software incluyendo servicios Web y de red.

Las redes internas pueden ser escaneadas desde Internet porque no se requiere autenticación, y el motor de Java J2EE que utiliza SAP Netweaver es vulnerable.

Los ataques que se pueden dar como espionaje o sabotaje representan un riesgo medio para el negocio aunque la explotación de esta vulnerabilidad puede darse fácilmente.

5) Robo del identificador de la sesión de Java (JSESSIONID) de la consola de administración de Microsoft (MMC) de SAP.

En los ambientes de cómputo, el identificador de sesión es una porción de la información que se utiliza en comunicaciones a través de la red (típicamente HTTP) para llevar un recuento preciso de las sesiones que se van abriendo para cada usuario.

La consola de administración permite el manejo remoto de la plataforma SAP pero, por omisión, muchos de los comandos se realizan sin autenticar y esto facilita la divulgación no autorizada de información.

En este ataque, los riesgos para el negocio son variables, siendo el espionaje el más crítico.

4) Ejecución remota de comandos en el módulo TH_GREP

En un sistema SAP existen módulos de función de manejo de tareas o TH (task handler) que se encargan de cargar o descargar los contextos de la sesión de usuario, al principio y al final de cada paso en la sesión.

El propósito del módulo de función TH_GREP es buscar una cadena en un conjunto de archivos de bitácoras de SAP llamando a la función grep del sistema operativo.  En este módulo hay una falla que no ha sido adecuadamente parchada y que se puede saltar en el ambiente Windows.

Para este ataque los riesgos para el negocio son altos, especialmente el espionaje y el fraude.

3) Desbordamiento del buffer (buffer overflow) en el kernel de ABAP

En seguridad informática un desbordamiento de buffer es un error de software que se produce cuando un programa no controla adecuadamente la cantidad de datos que se copian sobre un área de memoria reservada a tal efecto (buffer), de forma que si dicha cantidad es superior a la capacidad preasignada los bytes sobrantes se almacenan en zonas de memoria adyacentes, sobrescribiendo su contenido original. Esto constituye una falla de programación.

Para SAP se presenta un desbordamiento de buffer en la función C_SAPGPARAM cuando el campo de nombre excede los 108 caracteres.

Los riesgos de negocios para este ataque son críticos a nivel espionaje, sabotaje y fraude.

2) Invocación de Servlet para saltarse el proceso de autenticación

Un Servlet es una clase del lenguaje de programación Java que se utiliza para extender las capacidades de un servidor; un Servlet puede ser llamado desde la aplicación, aun si no está declarado en web.xml.

 El archivo web.xml contiene información sobre la aplicación Web que es utilizada por el contenedor del servidor de Java, para montar y ejecutar la aplicación.

 Un ataque de este tipo es muy fácil de perpetrar y representa un alto riesgo para el negocio a nivel de espionaje, sabotaje o fraude.

1) Manipulación de verbos

La manipulación de verbos en HTTP (verb tampering) es un ataque que explota vulnerabilidades en los mecanismos de control de acceso y autenticación del verbo de HTTP (también conocido como método HTTP). Muchos mecanismos de acceso solamente limitan el acceso a los métodos comunes de este protocolo, permitiendo acceso a recursos restringidos por otros métodos.

Sin necesidad de autenticarse, y de manera remota, se pueden realizar modificaciones de partes importantes de un script, por ejemplo usar HEAD en lugar de GET, o correr tareas de administración de la central de configuración técnica (CTC) como añadir usuarios, correr comandos del sistema o manipular el motor de J2EE.

Este ataque, aun con parches aplicados, puede ser exitoso con el uso de la invocación de un Servlet, provocando riesgos críticos al negocio por espionaje, sabotaje o fraude.

.

Conclusión

SAP es uno de los ambientes de desarrollo más usados y reconocidos en la industria por su poder, estabilidad y flexibilidad. Sin embargo esas mismas características lo hacen atractivo para los atacantes. Los sistemas SAP utilizan protocolos propietarios como RFC (remote function call) y DIAG (dynamic information and action gateway) que de manera nativa no cifran la información, pero existe un toolkit que puede manejar la comunicación entre servidores. Las versiones más recientes ya incorporan tecnología de manejo de identidades y accesos, además de bibliotecas criptográficas que se apoyan en protocolos SSL. Sugiero, a usted que utiliza esta solución, que:

  • Mantenga una colaboración estrecha con el fabricante y sus proveedores, actualizando constantemente las versiones de los aplicativos y consultando la documentación que SAP libera acerca de su plataforma.
  • Realice regularmente evaluaciones de seguridad, sobre todo de seguridad aplicativa.
  • Incorpore esquemas de monitoreo de seguridad, en sitio o con el apoyo de un proveedor de servicios administrados.
  • Realice revisiones de código (ABAP, NetWeaver, etcétera)
  • De acuerdo a lo que exista en su organización,  implante, verifique o asegure que el esquema de segregación de tareas se lleva a cabo adecuadamente.

A diferencia de aplicativos de propósito específico que son prácticamente propietarios, SAP está muy difundido y para él hay una gran cantidad de herramientas y vulnerabilidades conocidas. Una buena estrategia integral de seguridad ayudará a blindarlo.

[email protected]


 

[i] Si usted estimado lector, desea entender mejor la terminología que se utiliza en SAP, le recomiendo consultar la siguiente referencia:

http://www.learnersparadise.com/courses/srini.m9/public/doc/SAP_Termiologies.pdfA