Loading HuntDB...

Async search stores authorization headers in clear text

Medium
E
Elastic
Submitted None
Reported by alexbrasetvik

Vulnerability Details

Technical details and impact analysis

Cleartext Storage of Sensitive Information
**Summary:** The `.async-search` index stores the results of async searches. It also stores a copy of the requests authorization headers, in clear text. These clear text authorization headers are then available to anyone with access to `.async-search`, probably mostly super users. **Description:** While you have to be a superuser to read this index, there's potential for lateral movement or impersonating other users if credentials are re-used, which would be the case if e.g. LDAP or Active Directory integrations are used. Kibana is understandably eager in its use of async-search. The default `waitForCompletionTimeout` is 100ms, so if you want to get the password of someone else on your cluster, then it's probably already there if they use Kibana. If not, send them a link to a Kibana dashboard that trigger searches that take longer than 100ms. I first noticed this on a recent 8.0.0-snapshot, but 7.10.0 is the latest release containing it. ## Steps To Reproduce: ``` # This just triggers an async-search as yourself. POST /_async_search?size=0&wait_for_completion_timeout=0 { "query": { "match_all": {} } } # This shows where the clear text authorization header is stored POST /.async-search/_search { "_source": "headers.*" } ``` ## Supporting Material/References: * Video walkthrough ## Impact - Super users can get the clear text credentials of other users. - An XSS with a superuser victim can now trivially get the authorization headers of its target.

Report Details

Additional information and metadata

State

Closed

Substate

Resolved

Bounty

$1000.00

Submitted

Weakness

Cleartext Storage of Sensitive Information