This is a summary of the AI-generated 10-question deep analysis. The full version (longer answers, follow-up Q&A, related CVEs) requires login. Read the full analysis β
Q1What is this vulnerability? (Essence + Consequences)
π¨ **Essence**: A Path Traversal vulnerability in EspoCRM's formula script engine. π **Consequences**: Authenticated admins can overwrite the `sourceId` of attachments.β¦
π‘οΈ **Root Cause**: **CWE-22 (Path Traversal)**. π **Flaw**: The `EspoUploadDir::getFilePath` function concatenates the `sourceId` directly into the file path **without sanitization**.β¦
π’ **Vendor**: EspoCRM. π¦ **Product**: EspoCRM (Open-source Web CRM). π **Affected Versions**: **Before 9.3.4**. β **Fixed Version**: 9.3.4 or later.
Q4What can hackers do? (Privileges/Data)
π΅οΈ **Privileges Required**: **Authenticated Administrator**. π― **Capabilities**: Can overwrite attachment `sourceId` fields. π **Data Impact**: Can read/write **any file** within the web server's `open_basedir` range.β¦
π **Public Exploit**: **No**. π« **PoC Status**: The `pocs` array is empty in the data. π **Reference**: Official advisory exists (GHSA-7922-x7cf-j54x), but no wild exploitation code is currently public.
Q7How to self-check? (Features/Scanning)
π **Self-Check**: 1. Verify EspoCRM version < 9.3.4. 2. Check for admin account exposure. 3. Scan for formula script engine usage in attachments. π οΈ **Tooling**: Use version fingerprinting tools.β¦
β **Fixed**: **Yes**. π¦ **Patch**: Upgrade to **EspoCRM 9.3.4** or newer. π **Source**: Official GitHub Security Advisory (GHSA-7922-x7cf-j54x). π **Action**: Immediate update recommended for all affected instances.
Q9What if no patch? (Workaround)
π§ **Workaround**: 1. **Restrict Admin Access**: Limit who has admin privileges. 2. **Input Validation**: If possible, patch the `EspoUploadDir::getFilePath` logic to sanitize `sourceId`. 3.β¦
π₯ **Urgency**: **High**. π **CVSS**: 9.8 (Critical). π **Priority**: **P1**. β‘ **Reason**: Although it requires admin auth, the impact is full file system access within `open_basedir`.β¦