Skip to main content
SAP Pentest Playbook
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

SNC Downgrade Attack

Description

Secure Network Communications (SNC) wraps the DIAG (SAP GUI), RFC, and CPIC protocols with authentication, integrity, and encryption. “SNC is enabled” is widely read as “the traffic is confidential” - but SNC has three separable properties (authentication, integrity, encryption), each selected by a quality-of-protection (QoP) level, and by default the server accepts connections that provide less than all three. This page covers assessing whether SNC actually encrypts, whether it can be downgraded, and whether the negotiated cipher/protocol is strong. It pairs with Profile Parameter Drift (SNC parameters are dynamic) and Trusted-RFC Impersonation (per-destination SNC settings).

Risk

An SNC deployment that is enabled but not enforced to encrypt, or that permits a downgrade to authentication/integrity-only, transmits DIAG and RFC traffic - including credentials and business data - in a form an on-path attacker can read or tamper with, while presenting a “secured” status to operators. Weak legacy ciphers or protocols undermine confidentiality even when encryption is nominally on. The impact is credential and data interception and, for integrity-only connections, message tampering across the trust domain.

Options

  • “SNC on” does not guarantee encryption. QoP level 1 provides authentication only and level 2 integrity only - neither encrypts; only QoP level 3 and above seal (encrypt) the payload. A server running in a default SNC mode with a GUI QoP of 2 can be passively intercepted; a QoP of 1 can be actively tampered with in a man-in-the-middle position. On the wire, a DATA_SIGNED/DATA_MIC frame (as opposed to DATA_SEALED/WRAP) indicates no encryption - observable with the SAP dissector for a network analyzer.
  • Optional/opportunistic by default (downgrade path). Unless the enforcement parameters are set to reject, the server also accepts insecure (non-SNC) connections. Check the running values of snc/only_encrypted_gui, snc/only_encrypted_rfc, and the snc/accept_insecure_* family (accept_insecure_gui, accept_insecure_rfc, accept_insecure_r3int_rfc, accept_insecure_cpic); any that permit insecure connections is a downgrade path. Also check snc/data_protection/{min,use,max} - a min below 3 allows a client to negotiate down to no encryption.
  • Per-destination QoP overrides the profile. An SM59 destination can carry its own SNC QoP of 1 or 2 even when the system default is 3, so a destination reported as “SNC enabled” can still transmit unencrypted. Audit each destination’s QoP (via RSRFCCHK/SM59), not only the profile default; values 8/9 defer to the use/max profile parameters.
  • Weak protocol/cipher lingers on old crypto libraries. Older CommonCryptoLib versions permit legacy protocols and MEDIUM-strength ciphers, and there is no perfect forward secrecy without ECDHE. Check the ccl/snc/* protocol/cipher parameters (a modern setting pins the protocol to 2010_1_1 with HIGH ciphers and ECDHE) and confirm certificate revocation checking is enabled where required (ccl/.../pkix_revocation_check).

Mitigation

  • Enforce encryption: set snc/only_encrypted_gui = 1, snc/only_encrypted_rfc = 1, the entire snc/accept_insecure_* family to 0, and snc/data_protection/min = 3.
  • Apply the SAP Note that blocks unencrypted SAP GUI / RFC (SAP Note 1690662) so a downgrade cannot succeed even if a client requests it.
  • Use a current CommonCryptoLib (SAP Note 1848999), pin the protocol to 2010_1_1 with HIGH ciphers and ECDHE for forward secrecy, and enable revocation checking.
  • Audit per-destination SNC QoP in SM59 so no destination silently drops below the system default.
  • Enable snc/log_unencrypted_rfc to surface any cleartext RFC still occurring during the transition.

Detection and Monitoring

  • Read SNC parameters from the running configuration (RSPFPAR/RZ11, or remotely via PFL_GET_SINGLE_PARAMETER): snc/enable, snc/only_encrypted_*, snc/accept_insecure_*, snc/data_protection/{min,use,max}, and ccl/snc/*. Because these are dynamic, compare the running value against the profile (see Profile Parameter Drift).
  • snc/log_unencrypted_rfc, once enabled, records RFC connections that are still transmitted without encryption - a direct list of what remains to be hardened.
  • On the network, the negotiated QoP and cipher are visible with the SAP protocol dissector; a signed-but-not-sealed frame confirms a connection is not encrypted.

References