Adobe Experience Manager (AEM) runs public websites, so its weak points are the administrative paths, default accounts and technical credentials that sit one Dispatcher rule away from the internet. AEM comes as on-premise or Adobe Managed Services AEM 6.5, as AEM as a Cloud Service (AEMaaCS), and with AEM Forms, including the older AEM Forms on JEE stack. In October 2025 CISA added CVE-2025-54253, an AEM Forms on JEE flaw rated CVSS 10.0, to its Known Exploited Vulnerabilities (KEV) catalogue. This guide covers how authors, administrators and services authenticate, the default credentials and bundles to remove, the Dispatcher rules that keep administration private, technical account and service user governance, logging, and a hardening baseline drawn from Adobe's own checklists. It is for AEM architects, platform administrators and security engineers working on either deployment model.
Key takeaways
- Two default passwords, not one. AEM 6.5 has the
adminaccount and a separate Apache Felix OSGi Web Console login; Adobe's checklist says to change both, with different strong passwords. - The Dispatcher is the access control boundary. Adobe asks for allow-list
/filterrules that deny by default and block administrative URLs such as the Web Console on publish. - Replication and transport users must not be admin. Use a restricted copy of the bundled replication-receiver user so a stolen agent credential cannot administer publish.
- Cloud Service technical accounts are long lived secrets. The credential JSON holds a private key and client secret, certificates last a year by default, and the resulting access tokens are typically valid for 24 hours.
- AEM Forms on JEE needs its own patch track. APSB25-82 fixed CVE-2025-54253 and CVE-2025-54254 in AEM Forms on JEE 6.5.0-0108; Forms servers are often run by a different team from the sites stack.
How identity and access work in AEM
AEM stores users, groups and access control lists (ACLs) in its content repository (Apache Jackrabbit Oak). What differs between models is where people sign in.
| Aspect | AEM 6.5 (on-premise or Managed Services) | AEM as a Cloud Service |
|---|---|---|
| Author sign-in | Local repository users, LDAP sync, or SAML 2.0 authentication handler | Adobe IMS over OAuth, optionally federated to your SAML 2.0 identity provider through the Admin Console |
| Administrators | admin account and members of the administrators group | Users in the AEM Administrators product profile for that instance; local admin login still offered on the logon screen |
| Regular authors | Repository users and groups | AEM Users product profile; IMS groups sync at login and are added to local AEM groups such as DAM Users |
| Provisioning | Manual, LDAP sync handler | Manual, CSV upload, or User Sync Tool (one-way from Active Directory or OpenLDAP) |
| Permissions | ACLs in the repository | Still ACLs in AEM; IMS decides who can sign in |
| OSGi Web Console | Separate Felix credentials | Not exposed to customers in the same way; configuration through code and Cloud Manager (own knowledge) |
For AEMaaCS, the strongest move is to federate the IMS organisation to your corporate identity provider, so author MFA, joiner and leaver processing and conditional access come from one place. Adobe notes that renaming the AEM Administrators product profile removes admin rights from its members, so treat profile names as configuration, not labels. The SAML Security Guide covers the federation side.
Site visitors are a separate matter. Publish instances serve anonymous users, and any visitor sign-in (closed user groups, forms, customer portals) should be reviewed as a customer identity system, not as an AEM author feature. Adobe's Anonymous Permission Hardening Package adds a deny rule that hides jcr:createdBy and jcr:lastModifiedBy from anonymous users, which stops author user names leaking through public content.
Admin roles and privileged access
- Change the admin password: in AEM 6.5 change it in the Granite Operations Users console straight after install, and give administrators named accounts in the administrators group so actions are attributable.
- Change the Felix console credentials: in the Apache Felix OSGi Management Console configuration, change User Name and Password. Anyone with the Web Console can install bundles, which is code execution on the instance.
- Remove developer tools from production: uninstall
com.adobe.granite.crxde-support,com.adobe.granite.crx-explorer,com.adobe.granite.crxde-liteand the Sling bundleorg.apache.sling.tooling.support.install. CRXDE Lite gives direct repository editing. - Disable WebDAV: stop
org.apache.sling.jcr.webdavandorg.apache.sling.jcr.davexunless authors need them; no restart is needed. - Cloud Service admins: keep the AEM Administrators profile small and named, require MFA at the IdP, and review Cloud Manager product profiles too, since Cloud Manager controls deployments and environment access.
- Host access: on 6.5, anyone with shell access to
crx-quickstartcan read the repository and the crypto keys. Manage those logons through the Privileged Access Management Guide process.
Integrations, API tokens and service accounts
AEM depends on several kinds of non-human identity, and each needs an owner, least privilege and a rotation plan.
| Identity | Model | What it can do | Control |
|---|---|---|---|
| Replication agent user (Agent User Id) and transport user | 6.5 | Pushes content from author to publish | Never admin; use a restricted copy of the replication-receiver user |
| Sling service users | Both | Background code access to the repository via ServiceUserMapper | Principal-based mappings in ServiceUserMapperImpl.amended; no loginAdministrative |
| Technical accounts (service credentials) | AEMaaCS | Server-to-server API calls with a JWT exchanged for an IMS access token | Product profile with minimum groups; certificate renewal before the one-year expiry; separate private key per integration |
| Local development token | AEMaaCS | Developer testing against a dev environment | Valid up to 24 hours; never used in pipelines or production |
| Cloud Manager and pipeline credentials | AEMaaCS | Deploy code to every environment | Named users, MFA, separate profiles for deploy and view |
| Encryption keys (HMAC and master) | 6.5 | Protect encrypted configuration values | Copy only when replicating to a new instance; restrict file access |
- Service users: Sling deprecated
loginAdministrativeand related methods because they grant overly broad access; bundles that still use them must be allow-listed throughLoginAdminAllowList.fragmentconfigurations. Audit those fragments, since each one is code running with full repository rights. Principal-based mapping is preferred because it does not inherit permissions from group memberships. - Technical account hygiene: the credential JSON contains a certificate, private key,
clientIdandclientSecret, and Adobe says to treat it as a secret. Customers can create up to ten technical accounts, including deleted ones, so do not create one per experiment. If a private key is compromised, add a new key, switch over, revoke the old certificates and delete the compromised one. All certificates under one private key count as active if any one is, so use separate keys where you need isolation. - Older accounts: technical accounts created before mid-2023 may only be in the Contributors group; Adobe recommends adding a product profile, which is a good moment to set the minimum groups explicitly.
Store credential files in a secrets manager, never in the code repository. The Secrets Management Guide and the Service Account Security Guide cover inventory and rotation.
Known exploited vulnerabilities and patching
CVE-2025-54253 is listed in KEV (added 15 October 2025) as an AEM Forms on JEE flaw allowing arbitrary code execution. Adobe's bulletin APSB25-82, published 5 August 2025 and updated 16 October 2025, rates it CVSS 10.0 (incorrect authorisation) alongside CVE-2025-54254, an XML external entity flaw allowing arbitrary file system reads (CVSS 8.6). Both affect AEM Forms on JEE 6.5.23.0 and earlier on all platforms, both had public proof of concept code at publication, and both are fixed in AEM Forms on JEE 6.5.0-0108. For AEM 6.4, 6.3 and 6.2, Adobe directs users to customer care.
- Know which AEM you run: AEMaaCS is updated by Adobe; AEM 6.5 service packs and AEM Forms on JEE patches are yours. Inventory Forms servers separately.
- Track bulletins: follow Adobe's AEM and AEM Forms security bulletins and the KEV feed. See the CISA KEV Catalogue Guide.
- Stage: apply the service pack or patch to a non-production author and publish pair, run regression and Dispatcher tests, and keep a repository backup or snapshot for rollback.
- Reduce exposure meanwhile: confirm Forms on JEE administration and service endpoints are not reachable from the internet, and that Dispatcher filters block administrative paths.
- Check after patching: review the Operations Dashboard Security Health Checks and hunt on any exposed, unpatched server before trusting it. See the Emergency Out-of-Band Patching Playbook.
Logging and detection
AEM writes Java application logs to error.log, request and response pairs to request.log and one line per request to access.log (in crx-quickstart/logs locally). AEMaaCS adds Apache web server, Dispatcher and CDN logs and supports forwarding to Azure Blob Storage, Datadog, HTTPD, Elasticsearch or OpenSearch, and Splunk (not for sandbox programs).
| Signal | Where | Why it matters |
|---|---|---|
Requests to /system/console, /crx/de or /crx/explorer at publish | Dispatcher and web server access logs | Probing for administration; should be blocked and rare |
| Bundle installs or OSGi configuration changes outside a deployment window | error.log, change records | Code execution or persistence via the Web Console |
Successful local admin sign-ins on AEMaaCS | AEM logs, IMS logs | Should be break-glass only once IMS is federated |
| New members of administrators or AEM Administrators | AEM user admin, Admin Console logs | Privilege escalation (T1078) |
| Technical account use from unexpected networks | IMS and CDN logs | Stolen credential JSON |
| The Forms on JEE or AEM Java process spawning a shell | EDR, Sysmon Event ID 1, auditd | Exploitation of public-facing application (T1190) |
| Spikes in selector or query requests, large JSON responses | Access and CDN logs | Denial of service or content enumeration |
Metrics:
- Days from Adobe bulletin to patch on AEM 6.5 and Forms on JEE (target: inside the KEV due date for listed CVEs).
- Number of administrative paths reachable through the publish Dispatcher in a quarterly test (target: zero).
- Number of members in administrators and AEM Administrators, reviewed quarterly.
- Percentage of technical accounts with a named owner, a product profile and a certificate expiry date recorded.
- Number of
LoginAdminAllowListentries (target: zero or declining).
Hardening baseline
Adobe asks that the AEM 6.5 checklist be applied from top to bottom. The order below follows it, with the Dispatcher checklist alongside.
- Production Ready Mode: run AEM in Production Ready Mode, which applies many OSGi settings and removes sample We.Retail content. Remove Geometrixx content where present.
- HTTPS: on both author and publish.
- Hotfixes: install the latest Adobe security hotfixes and service packs.
- Default passwords: change
adminand the Felix console credentials to different strong values. - Error handling: custom error pages, especially 404 and 500, to stop information disclosure.
- Dispatcher: latest version; allow-list
/filterrules that deny by default; deny administrative URLs; block/etc/and/libs/on publish and allow only paths such as/etc/clientlibs/*; restrict which clients can flush the cache; run as a dedicated user with write access only to the cache folder; disable the.formselector. - CSRF and clickjacking: CSRF Protection Framework on; Apache Sling Referrer Filter with Allow Hosts set and Allow Empty unchecked; allow
/libs/granite/csrf/token.jsonand theCSRF-Tokenclient header at the Dispatcher;X-FRAME-OPTIONS: SAMEORIGIN. - Debug off: disable Debug and Timing in the Granite HTML Library Manager, disable the Day CQ WCM Debug Filter, set WCM Mode to disabled on publish, and turn off Generate Debug Info in the Sling JavaScript and JSP handlers.
- Developer bundles and WebDAV: uninstall CRXDE and Sling tooling bundles, stop WebDAV bundles.
- Denial of service limits: restrict selectors, set
json.maximumresultsin the Sling GET Servlet, disable its HTML, text and XML renderers (not JSON), and disable the AssetDownloadServlet if not needed. - Replication users and health checks: non-admin replication and transport users, then a clean Operations Dashboard Security Health Checks result before go-live, followed by a penetration test.
Rollback: OSGi changes should be delivered as code in content packages or the Cloud Manager pipeline so a previous package can be redeployed; test Dispatcher filter changes in a staging farm, since an over-tight filter breaks page rendering before it breaks attacks.
Choosing a model: AEMaaCS moves patching and much of the infrastructure hardening to Adobe and puts the weight on IMS federation, product profiles, technical accounts and Dispatcher configuration in code. AEM 6.5 on-premise keeps full control, and full responsibility for service packs, Felix credentials, host access and Forms on JEE. Smaller teams usually gain most from AEMaaCS; organisations with strict data residency or heavy Forms on JEE use often stay on 6.5 and need a stronger patch process.
Common misconfigurations
- Felix console left on default credentials: the admin password was changed but the separate Web Console login was not.
- Block-list Dispatcher filters: trying to deny known bad paths instead of allowing only what the site needs, leaving new selectors and servlets reachable.
- Replication agents running as admin: the agent credential becomes full admin on every publish instance.
- Technical account JSON in a repository: the private key and client secret are committed with integration code and copied into CI logs.
- Forms on JEE forgotten: the sites stack is on AEMaaCS but an old Forms on JEE server, exposed for a single workflow, is several patches behind.
- CRXDE Lite in production: developer tools left installed give anyone with author credentials direct repository write access.
Framework mapping
| Control area | NIST SP 800-53 Rev. 5 | NIST CSF 2.0 | CIS Controls v8.1 | ISO/IEC 27001:2022 Annex A |
|---|---|---|---|---|
| Service packs, Forms patches, KEV | SI-2, RA-5 | ID.RA-01, PR.PS-02 | Control 7 | A.8.8 |
| Production Ready Mode, debug off, bundles removed | CM-6, CM-7 | PR.PS-01 | Control 4 | A.8.9 |
| Admin, Felix and product profile control | AC-6, IA-2 | PR.AA-05 | Controls 5 and 6 | A.8.2, A.8.5 |
| Technical accounts and service users | IA-5, AC-6 | PR.AA-01 | Control 5 | A.5.17 |
| Dispatcher filtering and administrative paths | SC-7, AC-3 | PR.IR-01 | Controls 12 and 13 | A.8.20 |
| Log forwarding and monitoring | AU-6, AU-12, SI-4 | PR.PS-04, DE.CM-09 | Control 8 | A.8.15, A.8.16 |
Practitioner checklist
- Record which AEM model, version and Forms components you run, including any Forms on JEE servers.
- Apply APSB25-82 (AEM Forms on JEE 6.5.0-0108) and current service packs; track Adobe bulletins and KEV.
- Change the
adminand Felix console credentials; give administrators named accounts. - Federate AEMaaCS IMS to your identity provider with MFA, and keep AEM Administrators and Cloud Manager profiles small.
- Set replication and transport users to restricted, non-admin accounts.
- Review Sling service user mappings and remove
LoginAdminAllowListentries. - Inventory technical accounts, store their JSON in a secrets manager and diary certificate renewal.
- Use allow-list Dispatcher filters and test that administrative URLs are blocked on publish.
- Run Production Ready Mode, remove developer bundles and WebDAV, and turn debug off.
- Forward AEM, Dispatcher and CDN logs to the SIEM and alert on console access and admin changes.
Standards and references
- Adobe: AEM 6.5 Security Checklist
- Adobe: Dispatcher Security Checklist
- Adobe: Security Bulletin APSB25-82 for AEM Forms on JEE
- Adobe: IMS Support for AEM as a Cloud Service
- Adobe: Generating Access Tokens for Server-Side APIs
- Adobe: Logging for AEM as a Cloud Service
- Apache Sling: Service Authentication
- CISA: Known Exploited Vulnerabilities Catalog
Related NHI Mgmt Group resources: Adobe ColdFusion Hardening Guide · SAML Security Guide · Secrets Management Guide · Web Application Firewall Guide · Service Account Security Guide