Protecting SAP Systems From Cyber Attack v4
Protecting SAP Systems From Cyber Attack v4
Protecting SAP Systems From Cyber Attack v4
WHITE PAPER
Version 4.0
January 2017
© Copyright Layer Seven Security 2017 - All rights reserved.
No portion of this document may be reproduced in whole or in part without the prior wrien permission of Layer Seven Security.
Layer Seven Security offers no specific guarantee regarding the accuracy or completeness of the information presented, but the profes-
sional staff of Layer Seven Security makes every reasonable effort to present the most reliable information available to it and to meet or
exceed any applicable industry standards.
This publication contains references to the products of SAP AG. SAP, R/3, xApps, xApp, SAP NetWeaver, Duet, PartnerEdge, ByDesign,
SAP Business ByDesign, and other SAP products and services mentioned herein are trademarks or registered trademarks of SAP AG in
Germany and in several other countries all over the world. Business Objects and the Business Objects logo, BusinessObjects, Crystal
Reports, Crystal Decisions, Web Intelligence, Xcelsius and other Business Objects products and services mentioned herein are trademarks
or registered trademarks of Business Objects in the United States and/or other countries.
SAP AG is neither the author nor the publisher of this publication and is not responsible for its content, and SAP Group shall not be
liable for errors or omissions with respect to the materials.
CONTENTS
A year aer the discovery of Carperp, a forensic review of the devastating data breach
suffered by US Investigation Services (USIS), the largest provider of background checks
for the U.S Federal government, confirmed that the initial breach was mostly likely
caused by a vulnerability in an SAP system connected to the organization’s internal
systems. USIS lost $3 billion in government contracts, laid off 2500 employees and filed
for bankruptcy as a direct result of the breach.
Along with similar incidents experienced by the Greek Ministry of Finance, Nvidia, and
Sony, the breach at USIS served to illustrate the devastating impact to organizations
when SAP systems are not securely configured and monitored to protect against cyber
aacks.
The security breaches experienced by such organizations were not isolated incidents.
This was confirmed by a study performed by the Ponemon Institute in 2016 which
revealed 65 percent of SAP customers had suffered security breaches in their SAP
systems between 2015-16. According to the study, the average cost of an SAP breach was
$4.5M. 92 percent of organizations rated the impact of a breach within their SAP systems
as serious or catastrophic. 2
The United States Computer Emergency Readiness Team (US-CERT) issued a critical
alert for a vulnerability in SAP systems following the release of the Ponemon study. The
alert related to the invoker servlet vulnerability in NetWeaver AS Java systems.
According to US-CERT, there was evidence that at least 36 organizations worldwide were
effected by the vulnerability which enabled aackers to bypass authentication and
assume complete control of SAP systems. Since the invoker servlet vulnerability was
originally patched by SAP in 2010, the alert emphasized the importance of effectively
patching SAP systems. 3
Enterprise applications developed by SAP are deployed by over 85 percent of Forbes 500
companies and oen lay at the heart of information technology eco-systems, powering
mission-critical processes and managing large volumes of sensitive data. SAP applica-
tions are therefore a prized target for cyber aackers.
Securing SAP systems against advanced cyber threats requires preventative and moni-
toring countermeasures across a broad range of areas. This paper presents a control
framework to safeguard SAP components from known aack vectors that could be
The control objectives and corresponding controls are presented in detail within the
white paper. Section 1 provides directions for implementing network-level controls to
securely architecture SAP landscapes, filter access, encrypt communications and
reduce aack surfaces. Section 2 outlines measures to protect the gateway server and
configure RFC destinations to secure the most common communication protocol in
SAP systems. Section 3 identifies the standard users, roles and privileges that could be
abused to perform unauthorized administrative commands. Section 4 defines the
multiple logs that should be enabled to support monitoring programs and forensic
investigations. Finally, section 5 provides detailed recommendations for securing
mechanisms used to authenticate users and front end clients. The section also
provides recommendations for monitoring security seings and effectively patching
SAP systems.
The framework is focused exclusively upon the SAP layer. Therefore, it excludes
database, OS and endpoint controls required to secure SAP landscapes through
defense in depth. Customers should ensure that such components are secured in
accordance with vendor recommendations and generally-accepted security bench-
marks. Please refer to the earlier white paper from Layer Seven Security Defense in
Depth: An Integrated Strategy for SAP Security.
Finally, the framework does not provide any specific guidelines for SAP HANA®
platforms. For detailed guidance on securing HANA systems, please refer to the white
paper Security in SAP HANA from Layer Seven Security.
The recommendations in this paper represent the best possible safeguards available
in standard SAP components and do not require the licensing of additional SAP or
third party soware tools. Taken together, the controls embodied in the framework
support the integrity, confidentiality and availability of information in SAP systems
and greatly lower the risk of a successful data breach. Furthermore, the advanced
forensic and monitoring capabilities recommended by the framework will greatly
reduce the damage potential of aacks that exploit misconfigurations to access
system resources.
The twenty controls across the five control objectives in the framework are imple-
mented through eighty distinct actions. The required actions are reviewed in each
section and listed in the appendix. Estimates are provided for the implementation of
each action in typical SAP installations covering complexity, resource requirements
and duration to support remediation efforts.
Figure 1.1: Implementing Zone-Based Network segmentation cannot be effectively applied in landscapes containing
Security in SAP Landscapes multi-purpose servers. Therefore, servers must be single-purpose and competing
functions such as application and database hosting should not be performed within
the same physical or virtual server. This approach will support a layered defence
strategy for network resources.
The network topology for each SAP landscape including required zones should be tied
to the specific systems operating within the network and the methods available to
end users to connect to the components within the network. Figure 1.2 outlines a
topology for a scenario that includes an external-facing Enterprise Portal and Mobile
server. Therefore, it includes multiple network segments separated by internal and
external firewalls. The Enterprise Portal and Mobile server are located in an
inner-DMZ with no direct access to the LAN containing the back-end application and
database systems.
Network firewalls typically only function between the physical and transport layers
and filter traffic based on destination IPs and ports. Therefore, firewalls should be
augmented with application-level gateways capable of enforcing more granular
security checks within host layers. Unlike network firewalls, application gateways
perform deep inspection of data packets to filter traffic based on user, source network
zone, source address and other criteria. They also provide advanced logging functions
to record and monitor network traffic. Client-server and server-to-server communica-
DESKTOP CLIENT
ENTERPRISE
PORTAL
APPLICATION APPLICATION
WEB UI GATEWAY SERVER FARM
MOBILE SERVER
MOBILE CLIENT
TRUST
LOW HIGH
tion for SAP systems should be filtered using the SAProuter and Web Dispatcher
application gateways.
The SAProuter should be installed on the firewall host to filter traffic based on the
SAP Protocol using the NI interface. The default listening port for the gateway is 3299.
Therefore, firewalls should route all incoming SAP traffic to port 3299. The SAProuter
will reroute the requests to SAP application servers based on information provided in
route strings. Route strings contain multiple sub-strings for each predecessor and
successor in connection threads. Permied hosts and port numbers should be defined
in the route permission table of each SAProuter. Connection strings in the table
should not support insecure or non-SAP protocols. The KS and KT prefixes are
therefore recommended for connection strings since this will only allow SNC
connections using the NI protocol. The use of the P (Permit) prefix should be avoided
since this can support native (non-SAP) connections. The D (Deny) prefix is redundant
in most scenarios since the SAProuter will reject any connection that is not defined in
the table.
Port ranges can be used for the <dest serv> field to minimize the number of required
entries. Although the last field is optional, the use of passwords to secure SAProuter
connections is recommended.
The insertion of a comment line starting with the # prefix at the end of an entry is
recommended to record the rationale for the connection. Wildcards (*) for the target
host and port fields should not be used with P and S entries.
Network filtering for HTTP traffic should be performed through the SAP Web
Dispatcher. In common with the SAProuter, the Web Dispatcher is a soware-based
application-level gateway. However, it is installed on the host server connected
directly to the Internet and can operate with both single-stack ABAP and dual-stack
ABAP/ Java systems. The Web Dispatcher forwards incoming HTTP requests to an
Internet Communication Manager (ICM) within back-end systems which are then
forwarded to work processes within an application server. Responses follow the
reverse path using the same network connection. However, HTTP connections
initiated by an application server do not route through the Web Dispatcher. Therefore,
the Web Dispatcher is akin to a reverse proxy rather than a proxy server.
URL filters can be configured in the Web Dispatcher to prevent external users execut-
ing specific programs. This is configured in a permission table referenced by the
parameter wdisp/permission_table = <ptabfile>. However, SAP recommends an
alternative approach that leverages the authentication handler function of the Web
Dispatcher. 4 A range of handlers are used by the Web Dispatcher to process HTTP
requests. This includes an authentication subhandler to perform authorization
checks for requested pages. The parameter icm/HTTP/auth_<xx> can be enabled to
set up access restrictions in the Web Dispatcher. This activates filtering of HTTP
requests using a wide set of criteria before the request is forwarded by the authenti-
cation sub-handler to downstream handlers. Filtering criteria includes not only URLs,
but client and server IPs and user names/ groups. The parameter is enabled through
the following syntax:
AUTHFILE contains the usernames, password hashes and user groups of authorized
users. The file can be maintained through the command line programs icmon and
wdispmon. Filters are defined in the PERMFILE using the syntax P/D/S <URI paern>
<USER> <GROUP> <CLIENT-IP> <SERVER-IP>. For illustration, the following filter
permits HTTP connections to the specified web service at the server located at
10.0.30.91 from any user belonging to any group from the client at 10.0.21.60:
https://help.sap.com/saphelp_nw70/helpdata/en/7a/f2883c18be411ae10000000a114084/content.htm
7
4
Error messages are returned to clients for blocked requests if URLs are filtered by
black or white lists configured in the Web Dispatcher. The parameter is/HTTP/show_-
detailed_errors should be set to FALSE to prevent the disclosure of sensitive informa-
tion in default messages. Alternatively, custom static or dynamic error pages should
be created and mapped using the parameter icm/HTTP/error_templ_path =.
Access to the Web Admin Interface used to manage and monitor the Web Dispatcher
should be restricted to secure protocols and internal hosts and clients. This is
performed through the appropriate configuration of the PORT and CLIENTHOST
options of the parameter icm/HTTP/admin_<xx>.
Reverse invoke can be used to shield internal servers from external access and is
recommended for high integrity environments. Since connections are initiated by
ICMs in back-end servers rather than systems in the DMZ, firewalls are able to block
all external access from a DMZ to a secure LAN. This requires the configuration of a
registration port on application gateways to enable internal servers to respond to
external connections requests. Reverse invoke can be enabled for the SAP Protocol
through client and server-side parameters of the SAProuter configuration file. For
Web-based connections, a range of parameters must be configured in the ICM and
Web Dispatcher including wdisp/reverse_invoke, wdisp/ri/client_serv and wdisp/ri/cli-
ent_host.
Specific parameters must also be configured in the message server, a system compo-
nent responsible for managing communication and load balancing between applica-
tion servers. The message server assumes a pivotal role in network communications
and must be protected against spoofing and other aacks. Therefore, the ms/monitor
profile parameter should be set to the value 0 to limit the privileges of external
programs such as msmon used to change the internal memory of the message server
and perform monitoring functions. Also, internal and external services should be
configured on separate ports. External access to the internal port used by the message
server should be denied. The port is specified by the parameter rdisp/msserv_internal.
If external access to the internal message server port is required for business needs,
access control lists can be configured to support access for specific hosts. The ACL file
is referenced by the parameter ms/acl_info.
Client-server and server-server communication in SAP systems is for the most part
unauthenticated and in clear-text. Therefore, SAP data traffic is vulnerable to network
sniffing, man-in-the-middle and other aacks capable of eavesdropping upon and
tampering with the content of data packets containing business information trans-
mied between endpoints. There are several plugins available for open source
network analysis tools such as Wireshark to decompress and dissect protocols
supported by SAP systems. Although they cannot read SAP passwords which are
obfuscated by default, aackers can use a variety of widely-available programs to
break the algorithms used to encode such passwords.
snc/permit_insecure_start 0 programs are available at the SAP Soware Download Center (refer to Note 1643878).
Figure 1.3: SNC Profile Parameters SNC offers three levels of protection: Authentication only, Integrity protection, and
Privacy protection. The first option provides the least amount of protection since it
only performs mutual authentication. The second enables the detection of data-level
changes during transmission between endpoints. The third is the most preferred option
since it enables both message encryption and mutual authentication. Consequently, the
SNC parameter SNC_QOP used to configure protection levels should be set to 9.
At the profile level, the recommended parameter seings are specified in Figure 1.3.
In order to minimize the performance impact of SNC, SAP does not recommend
encrypting internal communications between application servers. 10 According to SAP,
the recommended parameter seing for snc/r3int_rfc_secure is therefore 0. However,
performance considerations should be weighed against the security implications of
unprotected traffic between application servers. Organisations that do not apply SNC
in such scenarios rely exclusively on network zoning and are therefore more vulnera-
ble in the event of a network breach.
https://help.sap.com/saphelp_nwpi71/helpdata/en/23/3a91f8d1724bc6b9e693eb735bcf2f/content.htm
9
10
TLS should be used to secure the communication path between AS Java and server
components, as well as intermediary servers such as Web proxies. Since the Java
Connector (JCo) uses RFC to communicate with AS ABAP, this channel must be
secured using SNC. This will secure connections from iViews and the user manage-
ment engine (UME) to ABAP systems. However, connections between the UME and
LDAP directories require TLS. Client and server connections should use TLS version
1.2 or higher due to known security weaknesses with earlier versions. This can be
enforced using the ssl/ciphersuites and ssl/client_ciphersuites profile parameters. The
parameter sec/rsakeylengthdefault should be used to define a secure byte length for
PSE keys.
In common with SNC, the SAP Cryptolib can also be used to provide cryptographic
functions such as digital signatures for server-to-server connections using TLS.
Therefore, key pairs can be exported from ABAP servers to the J2EE Engine in
dual-stack systems providing the server components use the same host name. Key
pairs are required to establish TLS connections in AS Java. The public key must be
certified by a recognised Certification Authority (CA) and distributed using a X.509
certificate. The use of self-signed certificates is not recommended.
Aside from the installation of the SAP Cryptolab and the generation of key pairs, the
successful configuration of TLS in AS Java also requires maintenance of specific ICM
parameters. This includes icm/server_port_<xx> which should specify the protocol
and port information. A non-standard port for HTTPS can be configured for enhanced
security. The parameter icm/HTTPS/verify_client should be set to 2 to ensure that the
ICM demands client certificates to establish a connection. The default value (1)
enables clients to logon through other methods if they are unable to provide a valid
certificate. Note that the seing in icm/HTTPS/verify_client can be overridden by the
option VCLIENT in the icm/server_port_<xx> parameter. Therefore, the value in
VCLIENT should match the value in icm/HTTPS/verify_client.
The SAP Web Dispatcher should be configured to support TLS termination to opti-
mize load balancing and support the filtering of connection requests. However,
connections should be re-encrypted before they are forwarded to application servers.
Therefore, the value of the parameter wdisp/ssl_encrypt should be 1 for HTTPS
requests and 2 for HTTP, rather than 0 (termination without re-encryption). The SAP
Cryptolab and root certificates should be installed on the server hosting the Web
Dispatcher to support encryption and decryption functions. For end-to-end TLS, the
value of the protocol (PROT) option in the icm/server_port_<xx> parameter must be
set to ROUTER.
Metadata sent from the Message Server to the Web Dispatcher including information
related to application servers, logon groups and URL prefixes should also be secured
using TLS. This data is required by the Web Dispatcher for load distribution. The
ms/server_port_<xx> parameter should specify the HTTPS protocol and the port used
for the protocol.
The demand for rapid deployment, accessibility and interoperability has transformed
the architecture of SAP systems. SAP’s commitment to Service Orientated
Architecture (SOA) has led to the development of a SAP NetWeaver® platform that
supports a broad range of open languages, protocols and standards. As a result, SAP
systems can present a wide aack surface to potential aackers if the functions
available to remote users are not closely aligned to actual business needs. This increas-
es both the risk of a successful compromise and the resources required to manage the
array of interfaces, ports, and services available to external aackers. The risk can be
mitigated by reducing the number of entry points into SAP systems through minimiz-
ing open network ports, removing unnecessary services and proactively managing
custom code.
The network ports required by SAP systems are determined by the specific applica-
tions and components installed on each host and connectors required for databases
and programs such as SAProuter. Therefore, customers should refer to the relevant
SAP security guides and the port table in the SAP paper TCP IP Ports used by SAP
Applications for precise instructions. There are several services that are widely
regarded as insecure due to known vulnerabilities that should be disabled or, at the
very least, accessible only to internal users through appropriate firewall rules. This
includes FTP, NFS, NNTP, Telnet, NetBIOS, RPC and, in Unix systems, r* services such
as rsh, rlogin and rexec.
External clients can access services in SAP systems directly through the Remote
Function Call (RFC) interface or indirectly through the Internet Communication
Framework (ICF). Portal iViews also provide an access path to back-end SAP functions.
However, this particular route is secured through dual level authorizations within the
Portal and AS ABAP or AS Java.
The RFC interface supports the calling of remote-enabled function modules (RFM) in
external SAP systems. This is performed through the CALL FUNCTION statement
with a DESTINATION parameter that specifies the target system. Destinations are
maintained in table RFCDES using transaction SM59. Function modules are ABAP
routines that are grouped in logical function groups. SAP delivers a large of number of
default function modules with standard installations, Examples include
BAPI_USER_CREATE1, DEST_SET_PASSWORD, and TH_CHANGE_PARAMETER used
for provisioning users, configuring RFC destinations, and changing system configura-
tions. The volume increases further with custom function modules developed
through the ABAP Workbench Function Builder.
RFC calls from an external system should trigger the target system to check
authorization object S_RFC to ensure the user initiating the call has the appropriate
permissions for the function group containing the relevant function module. This
should be specified in the field RFC_NAME of the object. However, the check is only
performed if the profile parameter auth/rfc_authority_check is set to 1. Furthermore,
authorization checks are not consistently configured for all function groups. For
example, checks are rarely performed for the SRFC function group which includes
functions such as RFC_GET_LOCAL_DESTINATIONS, RFC_GET_LOCAL_SERVERS,
RFC_SYSTEM_INFO and SYSTEM_INVISIBLE_GUI. Functions within such groups
can be called remotely and anonymously by external aackers to perform reconnais-
sance against SAP systems prior to launching a targeted aack. Therefore, it is critical
Given the size and complexity of RFC logs in high volume environments, the Security
Audit Log is not always a workable solution. The Unified Connectivity (UCON) frame-
work, available in NetWeaver AS 7.4 SP02 and higher, provides a quicker and simpler
mechanism for controlling external access to RFMs. UCON enables RFMs to be
assigned to a Communication Assembly (CA) accessible to external systems though
RFC. This blocks external access to all other function modules that do not need to be
remote-enabled. The framework introduces virtual hosts to divide a single RFC commu-
nication port into multiple virtual channels. Configuring UCON is a three-step process
that includes phases for logging, evaluating and activating runtime checks for RFMs.
The current version of UCON supports only the RFC scenario. However, future releases
will also support HTTP services in the Internet Communication Framework (ICF). The
ICF is the second method that can be used by external systems and users to access SAP
functions. HTTP, HTTPS and SMTP requests for ABAP environments are forwarded by
the Internet Communication Manager (ICM) to the ICF. Therefore, the ICF enables
external parties to execute ABAP processes in SAP systems from any location via the
Internet.
ABAP functions are presented to external users as ICF services. Each service has a
specific URL path mapped in nodes and subnodes within a service tree managed
through transaction SICF. In common with remote function calls, ICF services should
be secured through the authorization concept. This includes the authorization object
S_ICF and authorizations defined in the SAP Authorization field under Service Data for
each specific service. However, as with RFC, authorization checks are not consistently
applied and, in some cases, not required to execute certain default ICF services and
services with stored logon data. This includes services in the sap/public node.
There are several critical vulnerabilities associated with the standard ICF services listed
/sap/bc/soap/*
in Figure 1.4 when exposed to external systems and users. The service /sap/bc/soap/rfc,
/sap/bc/echo
for example, can be exploited to acquire shell access to SAP systems through the ability
/sap/bc/FormToRfc to call RFMs using HTTP requests. Therefore, these services should be deactivated
/sap/bc/report using SICF. The aack surface in the ICF can be further reduced by deactivating
/sap/bc/xrfc services that are not called by external systems and users. These services can be
/sap/bc/xrfc_test identified through review of the HTTP Log in the ICM accessible through transaction
SMICM. Alternatively, refer to the instructions in Note 1498575 for HTTP tracing and
/sap/bc/error
mass deactivation of ICF services.
/sap/bc/webrfc
/sap/bc/bsp/sap/certreq Aside from minimizing the number of entry points, surface area reduction should also
/sap/bc/bsp/sap/certmap involve reducing the quantity of soware code operating within an environment. This
/sap/bc/gui/sap/its/CERTREQ can be achieved by enabling only the required standard components delivered by SAP.
/sap/bc/gui/sap/its/CERTMAP For custom code, idle code that is not used for productive purposes should be
identified using Coverage Analyzer in Solution Manager (transaction SCOV). Coverage
/sap/bc/bsp/sap/bsp_veri
Analyzer can be used to track the usage of custom programs, function groups and
/sap/bc/IDoc_XML
classes in connected systems. Once enabled, SCOV records relevant statistics in tables
/sap/bc/srt/IDoc that include COVRES and COVREF. These tables are read by functions such as Global
Display and Detail Display. The specific branches and statements within custom
objects that were not executed during a recording period can be detected using source
Figure 1.4: Vulnerable ICF Services
code display in the Branch and Statement Coverage Screen. Lines items highlighted in
red may be redundant and therefore should be removed to lower the aack surface.
The gateway can be started from remote hosts using remote shell (rsh) or secure shell
(ssh). Rsh does not encrypt information transmied through the protocol including
passwords. Therefore, the default seing for the parameter gw/rem_start should be
changed to SSH_SHELL. The gateway should only accept commands from local
gateway monitors through the parameter and value gw/monitor = 1. Furthermore,
since trace files may disclose sensitive information, receiving systems should be
configured to reject trace levels set by a remote gateway. This can be performed by
seing the parameters gw/accept_remote_trace_level and rdisp/accept_re-
mote_trace_level to the value 0.
There are several external server programs installed on SAP application server hosts
that can be launched by specific client-side RFC requests. Once triggered, these
programs could enable remote users to perform unrestricted operating system
commands on an SAP server without authentication. Such commands could be
combined with SQL statements to create SAP users directly within databases with
SAP_ALL privileges or extract usernames and password hashes from SAP tables. Such
scenarios could lead to the complete compromise of an SAP system by abusing the
implicit trust relationship between an operating system and database. Therefore, it is
critical to restrict external access to RFC server programs such as RFCEXEC and
SAPXPG through operating system security files. In the case of RFCEXEC, this can be
performed through logon handlers that check filters configured in the file rfcexec.sec.
However, the preferred method is to use access control lists (ACL) through sec_info.
This file can be used to prevent unauthorized access to all external programs, not just
RFCEXEC.
Each line is used to permit access to programs <tp> or hosts <host> for authorized
users <user> connecting from specific hosts (<user_host>). The user-host parameter
is optional. This format follows a whitelist approach. Therefore, connections that are
not recorded in the file are automatically denied. The second method for the file
syntax (version #2) can be used to configure access blacklists.
An ACL should also be used to control the registration of external programs including
RFC servers in the gateway. This should be performed through the reg_info file. The
file path is set through the parameter gw/reg_info. The file can also be maintained
either through SMGW or the OS.
The required entries for the sec_info and reg_info files can be obtained from gateway
log or trace files before enabling filtering. Alternatively, a restrictive policy can be
applied from the outset and fine-tuned by identifying rejected connection aempts
aer filtering is enabled. Such a policy should only support access from local and
internal hosts using the suggested entries in Figure 2.1. Note that the bit mask in
parameter gw/reg_no_conn_info must be configured correctly to prevent a known
bypass of the gateway security files (refer to Notes 1444282, 1633982, 1697971 and
1298433)
Sec_info
TP=*USER=* HOST=local USER-HOST=local
TP=*USER=* HOST=internal USER-HOST=internal
Reg_info
TP=*, HOST=local
TP=*, HOST=internal
There are several important profile parameters that must be maintained if the
gateway security files are not configured. The parameter gw/acl_file can be used to
reference an ACL file containing permied connections to the gateway, while gw/acl_-
mode can restrict registration and starting of external servers to application servers
within the same system when set to the value 1.
Destinations are used to specify the parameters of each RFC connection including the
connection type, target system, client, and for untrusted connections, username and
password. This is performed through transaction SM59. Destinations are stored in
table RFCDES and are required for sRFC but are not mandatory for tRFC. The target
function modules are invoked in the calling system when no destination is specified
using tRFC.
The risks associated with cross-system communication using the RFC interface
cannot be addressed by network-level security including zoning, firewalls and applica-
tion gateways since RFC traffic cannot be adequately filtered. Therefore, RFC commu-
nication must be secured through the SAP authorization concept. This can be
achieved by selecting the appropriate user types for RFC destinations, controlling
RFC user authorizations and carefully configuring trusted RFC connections between
suitable systems.
RFC destinations should leverage system users rather than communication, service
and especially, dialog users. Communication users are able to change their passwords.
Dialog users are able to logon and interact with SAP servers through clients such as
SAPGUI. There are no such drawbacks with system users. The profile parameter
rfc/reject_expired_password will enforce the use of system users for RFC connections
when set to the value 1 since passwords for system users do not expire.
A unique user should be configured for each RFC destination in accordance with the
principle of cardinality. This will allow authorisations to be tailored for each destina-
tion and limit the damage resulting from a compromise of an RFC user account.
Aackers would not be able to exploit the credentials used for a connection to
perform unrelated functions or access other systems.
On the server side, the authorisation object S_RFC is checked before the RFM
requested by the system user configured in the destination is invoked. Full authorisa-
tions through the use of a wildcard in the field RFC_NAME would enable the user to
call any RFM in the system. Therefore, this field should identify the relevant function
group containing the RFM required by the destination. Since authorisation checks are
performed at the function group level, RFMs should be categorized by function area
or other logical grouping.
The DUI and DUJ event logs should also be reviewed in the Security Audit Log. The
logs record successful and unsuccessful RFC callbacks executed in systems. RFC
callbacks enable servers to open RFC connections in clients during synchronous calls
using the privileges of the RFC user in the client system. This can pose a serious
security risk, especially when destinations are configured with privileged users and
the callback establishes a connection from a system with a lower trust level. The
information logged in the DUI and DUJ event logs should be used to build whitelists
for permied callbacks. The profile parameter rfc_callback_security_method should
be set to 3 to activate whitelists maintained in transaction SM59 aer an appropriate
logging phase.
Trusted RFC connections between systems can provide greater security than untrust-
ed connections by supporting the mapping of user authorisations between systems
and removing the need to store logon credentials. However, trusted connections
should only be configured between systems with the equivalent security classification
or from higher order to lower order systems. For example, production-to-production
or production-to-QA. Connections from lower order to higher order systems such as
development-to-production can be exploited to perform privilege escalation and RFC
hopping between a system landscape, as well as bypass controls in the SAP Transport
Management System.
The authorisation S_RFCACL is used to manage the risks of trusted RFC relation-
ships. The object is used in conjunction with S_ICF and S_RFC. It performs a
server-side check of the user logged in the client that is aempting to establish a
trusted connection with a server system. The user transferred in the request from
the client is checked against the user records within the server. The request is only
Authorisations provided to users are loaded into user buffers at the start of each
session and checked before transactions, programs, RFCs or tables are returned in
response to user requests. To ensure that checks are performed for all authorization
objects, the profile parameter auth/object_disabling_active should be set to the value
N. If the parameter is set to Y, the list of objects excluded from authorization checks
should be closely reviewed through transaction SU25 or AUTH_SWITCH_OBJECTS.
The Basis authorizations outlined in this section provide users with powerful admin-
USER ID CLIENTS PASSWORDS istrative permissions. They should be allocated cautiously and selectively to users
SAP* 000, 001, 066 06071992 based on business need. Some of these authorizations are included in roles assigned
to standard users. Therefore, the ABAP users delivered by SAP in Figure 3.1 should be
SAP* New Clients PASS
locked in all clients and default passwords should be changed. Default passwords
DDIC 000, 001 19920706
should also be changed for users J2EE_ADMIN, J2EE_ADMIN_<SID>, J2EE_GUEST
SAPCPIC 000, 001 ADMIN and J2EE_GUEST_<SID> in Java systems.
EARLYWATCH 066 SUPPORT
TMSADM 000 PASSWORD In accordance with SAP recommendations, all authorization profiles for the user SAP*
should be deleted. 5 The user should be assigned to an authorization group for super
Figure 3.1: Standard SAP Users users and the parameter login/no_automatic_user_sapstar should be set to a value
greater than 0 to prevent logons by SAP*. Authorisation groups should also be used to
secure access to tables containing password hashes including USH02 and
USRPWDHISTORY. Transaction SE54 can be used to create the groups and SE11 to
assign tables to the newly created groups.
The authorisation object S_USER_GRP with activity values 01, 02, 05 or 06 are required
to maintain users, add or remove profiles, change passwords and lock/unlock users. It
is checked within transactions such as SU01, SU10, SU12 and ST14.
The objects S_USER_AUT, S_USER_TCD and S_USER_VAL should be used to define the
range of authorizations, transactions and field values administrators are permied to
maintain in order to segregate and protect sensitive permissions. It is also recom-
mended to separate the creation and modification of roles from the assignment of
ACLSUPERUSER
roles to users. This can be performed by isolating the authorisation S_USER_AGR
MANAGE_ALL activity level 02 (change) from the authorisations S_USER_GROUP and S_USER_AGR
MANAGE_GROUPS activity level 22 (assign). As a prerequisite, the parameter ASSIGN_ROLE_AUTH must
MANAGE_GROUPS be set to ASSIGN rather than CHANGE. This parameter is located within the
MANAGE_ROLES PRGN_CUST table containing customizing seings for the profile generator (Refer to
Notes 312682 and 565108).
MANAGE_USERS
MANAGE_ALL_COMPANIES
Authorization, role and user maintenance in AS Java are performed through the User
MANAGE_ALL_USER_PASSWORDS Management Engine (UME). UME actions are the counterpart to ABAP authorisations.
MANAGE_USER_PASSWORDS Default UME actions are listed in Figure 3.2. The permission AclSuperUser is
MANAGE_ROLE_ASSIGNMENTS Portal-specific and provides ownership privileges for all Portal content. It is included in
SYSTEM_ADMIN the Super Administrator Portal role. The permission Manage_All provides access to all
UME functions including group, role and user administration, user mapping with
BATCH_ADMIN
external stores such as LDAP and AS ABAP, importing and exporting of user data, and
UME configuration. It is incorporated into both the Super Administrator and
Figure 3.2: Standard UME Actions Administrator roles. Hence, such roles should be assigned restrictively to selective
administrators.
Unauthorised access to batch operations including the release and deletion of sched-
uled jobs could have a significant impact on data integrity. Hence, the authorisations
S_BDC_MONI, S_BTCH_ADM and S_BTCH_JOB should be closely guarded.
RFC destinations are maintained via transaction SM59 and requires authorization
object S_RFC_ADM with values 01, 02, 03, 06 or 36. The laer value (36) enables users to
perform extended maintenance including activating and displaying traces.
Trust relationships between SAP systems are configured using transaction SMT1. The
field RFC_TT_TYP for authorisation S_RFC_TT is used to define whether users are
able to maintain calling systems, called systems or both. The fields RFC_SYSID and
RFC_INSTNR can be used to limit permissions for specific system IDs or installation
numbers.
The majority of tables delivered by SAP are not assigned to any authorisation group
and are categorized as unclassified (&NC&). Therefore, users with the S_TABU_DIS
object could be able to view or modify any table that does not have an authorisation
group assignment. In order to address the risk of unchecked table access, SAP provides
the authorisation S_TABU_NAM to enable access control for individual tables.
Required tables and activity levels should be specified in the TABNAME and ACTVT
fields of the object for the relevant users and roles (refer to Notes 1481950 and 1500054).
This section discusses the forensics capabilities of standard SAP components and
provides specific recommendations for enabling logging across multiple areas to
detect and respond to a variety of threats. In order to protect the integrity of log
information, organisations should consider securing the transmission of log informa-
tion, storing log files in an encrypted format and replicating files to separate time
synchronized servers. Logs should also be periodically archived and maintained in
accordance with relevant standards for data retention.
Logging in the ICM and Web Dispatcher is configured using the parameter
icm/HTTP/logging_<xx> for incoming requests and icm/HTTP/logging_Client_<xx>
for outgoing requests. The former has the following syntax:
LOGFILE is used to specify the location of the log and MAXSIZEKB is used to set to
the maximum file size in kilobytes. The option FILEWRAP=on should not be included
in the parameter. This will reset and overwrite the log file when the maximum size is
reached. SWITCHTF can be used to open a new log file by the hour, day or month.
There are several predefined formats available for ICM logs. The SAPSMD and
SAPSMD2 formats can be used to track HTTP requests. Logging procedures will not
record sensitive URL parameters, header fields, cookies and form fields. This includes
jessionid, sap-contextid= and sap-password. The User-Defined Format enables organi-
sations to create custom log formats by selecting from a wide range of log properties
A secondary source of logs for HTTP requests can be provided by the message server, a
standard component used to provision information to application servers and balance
loads for dialog and RFC requests. This is enabled through the parameter ms/hp_log-
ging=1. The log format is defined using ms/HTTP/logging_0. The message server uses
the same syntax as the ICM. SAPMSG is the default format.
The logging of logons and logoffs by application servers to message servers should be
enabled by seing the ms/audit parameter to value 1 or 2, especially if external clients
are able to register application servers and control the internal memory of a message
server. This can be inadvertently enabled by misconfiguring the ms/monitor parame-
ter, supporting unauthorized connections with missing or insecure ACLs, or failing to
configure a separate port for internal communications.
The logging of network connections opened and closed by the SAP gateway, as well as
other actions such as monitor and operating system commands, starting of external
programs, RFC transmissions, server registration and changes to dynamic parameters,
should be enabled through the gw/logging profile parameter. Timestamp variables
should be assigned to file names to ensure that logs are not overwrien when file
sizes are exceeded. This will ensure that logs are retained in the specified directory.
Trace functions can also be used to record detailed information for a range of system
events. Transaction ST01 is used to create and view system traces for authorization
checks, kernel functions, table buffers and other actions. Developer traces configured
using SM50, SMGW, SMMS and SMICM register operations performed through the
gateway, message server, RFC, SAPGUI and transport programs, among other areas.
These traces can be displayed using transaction ST11 or through the operating system.
http://help.sap.com/saphelp_470/helpdata/en/7e/c81ec852c511d182c50000e829fbfe/content.htm
24
6
LOG USER ACTIONS
The Security Audit Log should be used to track user-related actions including dialog
and RFC logon aempts and transaction starts, RFC calls to function modules, and
changes to the audit configuration. Since changes to user master records are logged in
non-transparent tables read by the User Information System (SUIM), it is not neces-
sary to maintain logs for this specific class.
The Security Audit Log must be enabled by seing the profile parameter rsau/enable
to 1. Once enabled, logs for the selected classes and filters are stored in the directory
specified by the rsau/local/file parameter. Audit events generate alerts in the
Computing Center Management System (CCMS). Events can also create alerts in
external systems using BAPIs (Business Application Programming Interfaces). Audit
policies are maintained through transaction SM19 and logs can be viewed through
SM20. Dynamic filters are used to configure event logging without the need to restart
application servers. However, they are deactivated aer a system restart. Therefore,
static filters should be used to permanently log events.
Logging can be restricted to specific systems, users and categories (critical, important
or all). A narrow audit policy will consume fewer system resources but will offer less
forensic value than a more broadly defined policy. Hence, it is important to balance
performance issues with forensic requirements.
The Security Audit log can be configured to create a single or multiple log files for
each day. Since logging is disabled when the maximum size for log files is reached, the
values for the parameters rsau/max_diskspace/local, rsau/max_diskspace/per_file and
rsau/max_diskspace/per_day should correspond to the maximum expected volume of
data for the specific filters configured within each system.
Security events in the J2EE Engine are logged in the UME security log. This includes
user and group creation, edits and deletions, user mapping, successful and failed user
logons and configuration changes. The log is located in the system directory of the
J2EE cluster and can be viewed in the Log Viewer of the Visual Administrator. Log
entries in the file follow the format below.
J2EE Engine log files should be archived using the Log Configurator. The archiving
process should automatically trigger when log files reach a predefined size. The
process will convert log files into a ZIP file which is then transferred to a specified
destination. The default location is .log/archive.
Read Access Logging (RAL) should be enabled to audit user access to sensitive data.
RAL supports calls though RFC, Dynpro, Web Dynpro and Web service channels and is
available in NetWeaver AS ABAP 7.40 and above. Prior to enabling RAL, customers
should follow several predefined configuration steps using the
Steps one and two establish the overarching structure for log information. The actual
fields to be logged are identified during step three through recordings of sessions in
supported user interfaces. Once identified, fields are assigned to log conditions and
domains in step four. RAL is activated when the Enable Read Access Logging in Client
parameter is selected in the Administration tab of the RAL Manager accessed via
transaction SRALMANAGER. This represents the final step of the configuration
process.
Once configured, RAL will log all access to sensitive data including any changes
performed by users. Specific users can be excluded from the analysis. In the example
below, the highlighted log entries reveal that the user SAPADMIN successfully read
the salary details of employee number 109815 during a SAPGUI session at 9.12AM on
September 18 through the soware component SAP_HRRXX.
Logons through SAP GUI should be strictly governed to manage known vulnerabili-
ties in the desktop client that can provide an unguarded corridor to SAP systems.
Wherever applicable, SAP GUI should be upgraded to the latest available release. The
SAP GUI scripting API should be disabled via the parameter sapgui/user_scripting.
This can be abused to execute transactions and processes in the background and may
enable aackers to access unencrypted logon information stored in local files.
Automatic security warnings should be enabled for users that require the use of SAP
GUI scripting. This will alert users when a script is executed.
Security rules should be configured to prevent the ability of aackers to exploit SAP
shortcut commands. Similar to scripting, such commands can enable aackers to
interact with SAP servers without the knowledge of the user.
Input history should be disabled. Although SAP GUI does not store data entered in
password fields, it can be configured to store data keyed by users in other fields. This
may include sensitive customer, financial or other information. The data is stored in a
local Access database.
The SAP GUI security module available in later releases should be leveraged to protect
the local environments of users. The module applies rules to control potentially
dangerous or malicious actions triggered by back-end systems related to specific files,
extensions, directories, registry keys and values, ActiveX controls and command lines.
Rules should be configured and applied centrally but can vary by user or system
groups. They can also be context-dependant. The rules are employed when the module
is configured in 'Customized' mode and are applied in sequential order. Therefore,
higher order rules take precedence over lower rules. The default response configured
for actions not defined in the rules should be 'Ask' or 'Deny' rather than 'Allow'.
Automatic timeouts for SAP GUI sessions are not enabled by default. Therefore, the
parameter rdisp/gui_auto_logout should be set to a recommended value of no more
than 600 seconds (10 minutes).
User authentication for Java applications is performed through either the UME or the
J2EE Engine’s Web Container. Access to Java applications and components that do not
authenticate through the UME should be defined for specific roles using the
<security-constraint> tag in the web.xml file. The file is located within the WEB-INF
directory of the J2EE. Any <hp-method> elements should be removed from the file.
This will protect against verb tampering aacks against Java Servlets and Java Server
Pages.
Servlets, JSPs and other Java specifications should be protected against Cross-Site
Request Forgery (XSRF) aacks by the SAP XSRF Protection Framework. The
Framework was introduced in 2010 to combat XSRF aacks that aempt to send
requests through compromised browsers to application servers using the credentials
of trusted users. Applications that rely exclusively on automatically submied creden-
tials such as session cookies, certificates or username/password combinations are
vulnerable to this form of aack since they are unable to distinguish between legiti-
mate and malicious requests. The Framework applies tokens as an additional parame-
ter to protect against XSRF aacks. The token is generated aer logon and bound to
the user session. Implementation instructions for the Framework are aached to Note
1450166.
SAP passwords can be protected against brute force and other aacks by using the
latest hashing algorithm. Currently, the algorithm iSSHA-1 (iterated Salted SHA-1)
applied through code version H provides the highest level of protection. Organisations
using iSSA-1 should increase the default saltsize and iterations in the login/pass-
word_hash_algorithm parameter.
DEFAULT RECOMMENDED
PARAMETER VALUE VALUE
login/min_password_lng 6 8
login/min_password_digits 0 1
login/min_password_letters 0 6
login/min_password_lowercase 0 5
login/min_password_uppercase 0 1
login/min_password_specials 0 1
login/password_charset 1 2
login/password_max_idle_productive 0 30
login/password_max_idle_initial 0 5
login/password_max_new_valid 0 5
login/password_max_reset_valid 0 5
login/min_password_diff 1 3
login/password_expiration_time 0 90
login/password_change_for_SSO 1 1
login/password_history_size 5 12
login/password_change_waittime 1 1
Java logon and password properties in the UME Security Policy should be aligned to
the parameters in the data source. This includes the properties in Figure 5.2. However,
user account locks based on a predefined number of failed logon aempts should be
deactivated in the UME if the feature is enabled in the data source.
SAP provides customers with several mechanisms to monitor the security of SAP
soware. This includes the EarlyWatch Alert (EWA). However, the EWA is not focused
exclusively on security. The majority of checks performed by the alert cover areas
such as system performance, workload distribution, hardware capacity and database
administration. There are also concerns related to the rating scale used by EWA to
classify security risks.
The most comprehensive and effective mechanisms are available in SAP Solution
Manager. Solution Manager is the second most widely deployed SAP product,
installed in most customer landscapes as part of standard and enterprise support
agreements. The tools outlined below are bundled in Solution Manager and do not
require add-ons, programming, customization or additional soware licensing.
Therefore, Solution Manager provides a centralized, powerful platform to harden,
patch and monitor SAP systems against cyber threats.
Configuration Validation Automated vulnerability scanning for ABAP, HANA, Java and
hybrid systems
System Recommendations Discovery of unapplied Security Notes and Support Packages
Monitoring and Alerting Threat detection and response for security event data in
Infrastructure (MAI) SAP logs
Guided Procedures Best practices for investigating security alerts
Service Level Reports Scheduled vulnerability reports
Dashboards Real-time monitoring for security metrics
Interface Monitoring Monitoring vulnerable RFC and Web-based connections
Change Impact Analysis Analyzing the impact of Security Notes upon application
components, business processes and end users
Forensics Investigating system event data to detect security breaches
IT Infrastructure Monitoring Map landscape topology and monitor alerts for components and
systems
The four-tier priority model used by SAP to rate Security Notes was replaced with a
simplified three-tier approach in December 2013. Security patches are now rated on a
high-medium-low scale. Priority 3 and 4 patches released in the prior model are now
only provided through Support Packages. The Common Vulnerability Scoring System
(CVSS) is sometimes used by SAP to estimate the risk level of vulnerabilities
addressed by Notes. However, the CVSS system cannot be relied upon to rank patches
since SAP does not provide a base score for all Security Notes.
Security Notes are generally released on the second Tuesday of each month known as
Patch Tuesday. This interval enables SAP to synchronize patch cycles with other
vendors, most notably Microso.
Required Security Notes for each managed system should be identified using System
Recommendations accessed through the Change Management Work Center in
Solution Manager. System Recommendations can also be accessed through the Easy
Access Menu via WDC_NOTE_CENTER.
A regular background job should be scheduled to gather patch data from managed
systems for System Recommendations. This can be performed in the functional
seings. Alternatively, administrators can elect to retrieve system information at the
start of the evaluation process. Once the information is retrieved, Solution Manager
connects to SAP Global Support to perform the analysis and return the results.
The results can be filtered for specific system types or soware components. Java
patches can be integrated directly into the Maintenance Optimizer (MopZ) using the
Create Maintenance Transaction option.
This transformation does not call for soware add-ons or third party solutions. The
tools to effectively secure SAP systems are provisioned by SAP to all customers
through standard license agreements. The SAProuter and Web Dispatcher are freely
available at the SAP Service Marketplace. Digital certificates required to secure
communications can be obtained from the SAP Trust Center. Authorizations can be
analyzed through the User Information System. Unified Connectivity and Read
Access Logging are packaged in the most recent versions of NetWeaver AS. Lastly, the
powerful monitoring and patch management capabilities of Solution Manager are
available to all SAP customers as part of standard and enterprise support agreements.
COMPLEXITY
RESOURCES
DURATION
CONTROL
OBJECTIVE CONTROL ACTION
Secure the Network Configure Network Zones Configure firewall rules to segment systems into relevant network zones H M H
Configure single-purpose servers H H H
Filter Network Access Install and configure the SAProuter to filter SAP traffic H M H
Install and configure the Web Dispatcher to filter Web-based traffic H M H
Enable reverse invoke to block incoming connections to servers in the M M H
internal LAN
Protect message servers by limiting the privileges of external programs H M M
and configuring separate internal/ external ports or controlling external
access through ACLs
COMPLEXITY
RESOURCES
DURATION
CONTROL
OBJECTIVE CONTROL ACTION
Restrict Access to Control the assignment of the following authorizations with the relevant M L M
Authorization, Role and activity levels: S_USER_GRP, S_USER_PRO, S_USER_ADM, S_USER_SYS,
User Administration S_USER_SAS, S_USER_AGR, S_USER_AUT
Segregate authorisations for role creation/ modification and role M M M
assignment between administrators
Control the assignment of UME administrator roles and permissions M M M
Restrict Access to System Control the assignment of the S_ADMI_FCD authorisation object H M H
Administration
Remove the object S_DATASET with full authorisations from users M M M
Control the assignment of the batch operations authorisations M M M
S_BDC_MONI, S_BTCH_ADM and S_BTCH_JOB
Control the assignment of the RFC administration authorisations M M M
S_RFC_ADM and S_RFC_TT
Restrict permissions to maintain RFC trust relationships to specific H M H
systems
Control the assignment of the authorisations S_RZL_ADM, S_PROGRAM, M M M
S_TMS_ACT and S_NUMBER.
Restrict Access to Table Control access to critical tables using authorisation groups and/ or the H H H
Maintenance object S_TABU_NAM
Remove full authorisations for table access from users M M M
Control access to the data dictionary M M M
Restrict Access to Control the assignment of the authorisation S_CTS_ADMI with the H M M
Transport Management relevant values in the CTS_ADMFCT field
Control the assignment of the authorisation S_TRANSPRT for the H M M
relevant request types and activity levels
Enable change locks in production systems M M M
Remove developer keys from production systems H M M
Remove the authorisation S_DEVELOP from production users M L M
Control access to the Legacy System Migration Workbench (LSMW) M M M
COMPLEXITY
RESOURCES
DURATION
CONTROL
OBJECTIVE CONTROL ACTION
COMPLEXITY Non-complex, requires minimal Reasonably complex, requires modest Highly complex, requires extensive
experience and expertise experience and expertise experience and expertise
RESOURCES Requires a single resource Requires between two and three resources Requires more than three resources
DURATION One to two days Three to five days More than five days
To schedule a demo for security monitoring using SAP Solution Manager, please
contact [email protected].
CONTACT US
99 Hudson Street
5th Floor
New York, NY 10013
www.layersevensecurity.com