{"id":"GHSA-qrfh-cc86-vc8c","aliases":[],"title":"Leantime has HTML injection through firstname and lastname fields","description":"### Summary\nLeantime v2.3.27 is vulnerable to Stored HTML Injection. The `firstname` and `lastname` fields in the admin user edit page are rendered without  HTML escaping, allowing an authenticated user to inject arbitrary HTML that executes when the profile is viewed.\n\n### Vulnerable File\n`app/Domain/Users/Templates/editUser.tpl.php`\n\n### Vulnerable Code (Lines ~14-17)\n```php\nvalue=\"<?php echo $values['firstname'] ?>\"\nvalue=\"<?php echo $values['lastname'] ?>\"\n```\nThese fields output raw user input without sanitization.\n\n### Steps to Reproduce\n1. Login as admin > Go to Settings > Users > Edit any user\n2. Enter HTML payload in First Name or Last Name field:\n   `<h1>INJECTED</h1>`\n3. Save the user profile\n4. Create or view an article — the injected HTML renders in the author name\n\n### Fix\nReplace unescaped `echo` with `htmlspecialchars()`:\n```php\nvalue=\"<?php echo htmlspecialchars($values['firstname'], ENT_QUOTES, 'UTF-8') ?>\"\nvalue=\"<?php echo htmlspecialchars($values['lastname'], ENT_QUOTES, 'UTF-8') ?>\"\n```\nOr use the existing `$this->e()` helper already used in `editOwn.tpl.php`.\n\n### Impact\n- Stored HTML injection visible to all users viewing affected content\n- Can be used for phishing, fake login forms, and UI defacement\n- Affects all versions before 3.3.0","severity":"medium","score":5.4,"published":"2026-03-05T18:05:57.000Z","modified":"2026-03-05T18:16:35.270Z","withdrawn":false,"knownExploited":false,"affected":[{"ecosystem":"Packagist","name":"leantime/leantime","ranges":[{"events":[{"introduced":"0"},{"fixed":"3.3.0"}],"type":"ECOSYSTEM"}],"versions":["2.4","2.4-beta","2.4-beta-7","2.4-beta-8","2.4.1","2.4.2","2.4.3","2.4.4","2.4.5","2.4.7","2.4.8","3.0.0","3.0.0-beta","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.1.0-beta","3.1.1","3.1.2","3.1.3","3.1.4","3.2.0","3.2.0-beta","3.2.0-beta-2","3.2.1","3.3","v2.0","v2.0.1","v2.0.10","v2.0.11","v2.0.12","v2.0.13","v2.0.14","v2.0.15","v2.0.2","v2.0.3","v2.0.4","v2.0.5","v2.0.6","v2.0.7","v2.0.8","v2.0.9","v2.1","v2.1-beta","v2.1-beta2","v2.1-beta3","v2.1-beta5","v2.1-beta6","v2.1.1","v2.1.2","v2.1.3","v2.1.4","v2.1.5","v2.1.6","v2.1.7","v2.1.8","v2.1.9","v2.2.0","v2.2.1","v2.2.10","v2.2.11","v2.2.2","v2.2.3","v2.2.4","v2.2.5","v2.2.6","v2.2.7","v2.2.8","v2.2.9","v2.3.0-beta","v2.3.1-beta","v2.3.10","v2.3.11","v2.3.12","v2.3.13","v2.3.14","v2.3.15","v2.3.16","v2.3.17","v2.3.18","v2.3.19","v2.3.2","v2.3.20","v2.3.21","v2.3.22","v2.3.23","v2.3.24","v2.3.25","v2.3.26","v2.3.27","v2.3.3","v2.3.4","v2.3.5","v2.3.6","v2.3.7","v2.3.8","v2.3.9"],"fixed":["3.3.0"]}],"references":["https://github.com/Leantime/leantime/security/advisories/GHSA-qrfh-cc86-vc8c","https://github.com/Leantime/leantime/commit/3f8b2c6346111694bb18cec558b27c22d3a2b9d1","https://github.com/Leantime/leantime"],"sources":[{"name":"OSV","id":"GHSA-qrfh-cc86-vc8c","modified":"2026-03-05T18:16:35.270983Z","url":"https://osv.dev/vulnerability/GHSA-qrfh-cc86-vc8c"}],"assessments":[{"source":"OSV","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","score":5.4}]}