Sagar Miglani created SLING-11776:
-------------------------------------

             Summary: Sling ResourceMerger may cause high cpu utilization
                 Key: SLING-11776
                 URL: https://issues.apache.org/jira/browse/SLING-11776
             Project: Sling
          Issue Type: Bug
          Components: Extensions
    Affects Versions: Resource Merger 1.4.0
            Reporter: Sagar Miglani


If a bogus path like the following is used, resource merger can consume high 
amount of CPU and may lead to Denial of Service:
{code:xml}
/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override
{code}
*Steps to reproduce*
 # Spawn an AEM author instance and login
 # Open
[http://localhost:4502/aem/start.html//mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override]
OR use
curl -u <user>:<pass> 
[http://localhost:4502/aem/start.html//mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override/mnt/override]

In 
[MergingResourceProvider|https://github.com/apache/sling-org-apache-sling-resourcemerger/blob/master/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java#L164-L174],
 we are calculating the relative path, which is just removing the merge root 
path from from the actual path.
And this relative path is used for finding the resources under it.
eg: if path is {{/mnt/override/mnt/override/mnt/override/bin}} then relative 
path will be {{/mnt/override/mnt/override}}
And because this relative path again starts with {{/mnt/override}} again 
[MergingResourceProvider|https://github.com/apache/sling-org-apache-sling-resourcemerger/blob/master/src/main/java/org/apache/sling/resourcemerger/impl/MergingResourceProvider.java]
 will be picked and same calls will be executed.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to