GitHub Advisoryadvisory · Packagist

GHSA-534c-hcr7-67jg Kimai has an XXE Leading to Local File Read

HIGH Published 2024-09-17 Modified 2024-11-14 Official page ↗
Ecosystem
Packagist
Packages
kimai/kimai
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
Weaknesses
CWE-1395, CWE-611
Reviewed
2024-09-17

Affected packages

• Packagist kimai/kimai: < 2.21.0 → fixed in 2.21.0

Description

Summary Kimai uses PHPSpreadsheet for importing and exporting invoices. Recently, a CVE was identified in PHPSpreadsheet, which could lead to an XXE vulnerability. Details Exploitation requires an Administrator account, allowing the upload of an `XLSX` template containing the payload. The vulnerability is triggered by the following code snippet: ```php // https://github.com/kimai/kimai/blob/b1903ba18359be16dd32ea9c40377c486498f082/src/Invoice/Renderer/AbstractSpreadsheetRenderer.php#L41 public function render(InvoiceDocument $document, InvoiceModel $model): Response { $spreadsheet = IOFactory::load($document->getFilename()); $worksheet = $spreadsheet->getActiveSheet(); $entries = $model->getCalculator()->getEntries(); $sheetReplacer = $model->toArray(); $invoiceItemCount = \count($entries); if ($invoiceItemCount > 1) { $this->addTemplateRows($worksheet, $invoiceItemCount); } } ``` The `IOFactory::load` function utilizes `simplexml_load_string`, which has previously been demonstrated to be vulnerable to XXE attacks. While this is not directly an XXE in Kimai, it does however impact the latest stable version. PoC By uploading a malicious `XLSX` template, the payload will be triggered every time an invoice is generated. ```xml +ADw-!DOCTYPE foo [ %xxe;]>..... ``` For a better a visibility, I will upload both a: • Malicious template sample for testing • An exported invoice, showing the contents of target file during the export. Impact Local File Read / RCE in edge cases where `phar://` can be utilized with gadget chains . export.xlsx sample_template.xlsx

Related

Weakness · CWE (2)

  • CWE-1395 Dependency on Vulnerable Third-Party Component weakness
  • CWE-611 Improper Restriction of XML External Entity Reference weakness

References