SAP Cloud Connector Admin Access & Keystore/SSFS Extraction
The SAP Cloud Connector (SCC) is the on-prem <> SAP BTP bridge: it holds a persistent reverse-invoke TLS tunnel to a subaccount and forwards cloud requests to internal back-end systems. Its own configuration is therefore crown-jewels material - compromising an SCC yields the client certificate/private key BTP uses to authenticate the connector, the full back-end reachability map, local admin user hashes, and (when Principal Propagation is configured) the CA private key that mints forwarded on-prem identities.
The admin UI (Tomcat, default port 8443) is form-authenticated: GET a protected URL to seed a JSESSIONID, then POST /j_security_check with j_username/j_password. Once authenticated, /api/* returns JSON, including a config-backup endpoint that packages every keystore SCC uses plus its own Secure Storage in the File System (SSFS) - the same obfuscation-only mechanism ABAP systems use for RSECTAB, reused here to protect CLOUD_CONN/JAVA_KEYSTORE_PASSWORD and other .p12 unlock secrets.
An attacker who obtains SCC admin access (default credentials, credential reuse, or a captured session) can pull a full configuration backup and recover: the per-subaccount tunnel client certificate/private key (impersonate the connector to BTP), the system-identity keystore, the Principal Propagation CA private key when PP is configured (forge forwarded on-prem identities - see Principal Propagation Abuse), local SCC user password hashes, and the full Cloud-To-On-Premise mapping table (every internal back-end the connector is configured to expose). All of this uses SCC’s own documented, legitimate admin API - the attack is authenticated abuse of intended functionality, not an exploit. Reproducible end-to-end against a customer-operated SCC; no SAP-managed infrastructure involved.
- Authenticate -
POST /j_security_check(j_username/j_password) after seeding a session with aGETto a protected URL. Default credentialAdministrator/manageis worth one check (the 2.15+ installer forces a change on first login, so live defaults are increasingly rare but still found on un-hardened/older installs). - Enumerate topology - authenticated read APIs return versions, configured subaccounts, and the Cloud-To-On-Premise mapping list before any backup is pulled.
- Pull the config backup:
with a caller-supplied passphrase, returning a zip containing:POST /api/v1/configuration/backupconfig/ks.p12- admin UI keystorescc_config/scc.p12- system-identity keystorescc_config/<region>/<subaccount>/scc.p12- per-subaccount tunnel client cert + private key (authenticates the SCC to BTP)SSFS_SCC.KEY/SSFS_SCC.DAT- SAP Secure Storage (holdsCLOUD_CONN/JAVA_KEYSTORE_PASSWORD, and the Principal Propagation CA private key when PP is configured)config/users.xml- local SCC users + hashed passwords
- Decrypt SSFS (redrays-io/SAP_Cloud_Connector_SSFS_Decryption): calls the exported
getRecord()symbol inside SAP’s ownlibsapscc20jni.{so,dll,dylib}- decrypts without reversing the cipher, using SAP’s genuine vendor code:
yields single-line JSON:make # builds decrypt-ssfs.jar once export SAPSYSTEMNAME=SCC export RSEC_SSFS_DATAPATH=/path/to/dir/holding/SSFS_SCC.{KEY,DAT} java -Dscc.jni.lib=/opt/sap/scc/lib/libsapscc20jni.so -jar decrypt-ssfs.jar{"CLOUD_CONN/JAVA_KEYSTORE_PASSWORD": "...", "SYSTEM_CERTIFICATE": "...", "PROXY_PASSWORD": "...", ...}. - Pure-Python fallback (no JDK/native library needed) - reuses the same
RSECCipherprimitive documented for ABAPRSECTAB/SSFS (see Secure Store Decryption): unwrap the 57-byte DEK at offset0x82ofSSFS_SCC.KEY, then decrypt eachRSecSSFsData-prefixed record inSSFS_SCC.DATstarting at offset0xB0. Works entirely offline once the two files are exfiltrated - via the REST backup or via direct OS-level filesystem read of a co-located SCC install’sscc_config/directory. - Unlock the
.p12keystores with the recoveredJAVA_KEYSTORE_PASSWORD:openssl pkcs12 -in scc.p12or any standard PKCS12 parser.
WarningSCC’s ownPOST /api/v1/configuration/backupendpoint applies a second, SAP-proprietary wrapping layer over every.p12in the produced zip, sealed with the backup password from the POST call - notJAVA_KEYSTORE_PASSWORD. A standard PKCS12 parser will reject these blobs (non-0x30DER header) regardless of how correct the recovered keystore password is. To get genuine, unwrappable.p12files, obtain filesystem access to the SCC install directory itself (scc_config/scc.p12,config/ks.p12, per-subaccountscc.p12) rather than the REST backup.
- Post-RCE co-located discovery - from an already-pwned ABAP/Java node, OS-command bundles locate SCC presence on the same host, neighbouring SCCs, SSH keys, and
known_hostsentries - a route into an SCC’s install directory that bypasses the admin API and its double-wrapping entirely.
- Change the default
Administrator/managepassword (2.15+ enforces this on first login); restrict admin UI (8443) to a dedicated management network/VPN; enforce MFA where available. - Treat the config-backup function as a high-sensitivity action: protect and monitor it, require a strong unique passphrase per export, and store backups securely - they contain private keys.
- Restrict OS-level filesystem access to the SCC install directory to the SCC service account only.
- Keep SCC patched (see Known CVEs); rotate the tunnel key, PP CA key, and
CLOUD_CONN/JAVA_KEYSTORE_PASSWORDafter any suspected exposure of an SCC configuration backup or host.
- SCC’s own audit/access logging: config-backup events, admin logons (especially
Administratorfrom unusual sources), and default-credential logon success. - Network:
POST /api/v1/configuration/backupfrom a non-admin workstation; repeated/j_security_checkfailures (credential spray). - Host: OS-level file access to
scc_config//SSFS_SCC.{KEY,DAT}/.p12files by any account other than the SCC service account - host-level file-access auditing/EDR. - Once SSFS/backup files are exfiltrated, both decrypt paths run entirely offline on the attacker’s own host - there is no further target-side telemetry at that point; detection must happen at acquisition time.
- redrays-io - SAP Cloud Connector SSFS Decryption
- SAP Cloud Connector documentation (help.sap.com)
- SAP Note 3424610 - CVE-2024-25642 (SCC)
- Secure Store Decryption - shared
RSECCipher/SSFS mechanism - Principal Propagation Abuse - what the recovered PP CA key enables
- Known CVEs
