Skip to content
OpenAdvisories
Medium · 5.4 GHSA-qrfh-cc86-vc8c

Leantime has HTML injection through firstname and lastname fields

Published Mar 5, 2026 · Updated Mar 5, 2026 · Assigned by GHSA

Description

### Summary
Leantime 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.

### Vulnerable File
`app/Domain/Users/Templates/editUser.tpl.php`

### Vulnerable Code (Lines ~14-17)
```php
value="<?php echo $values['firstname'] ?>"
value="<?php echo $values['lastname'] ?>"
```
These fields output raw user input without sanitization.

### Steps to Reproduce
1. Login as admin > Go to Settings > Users > Edit any user
2. Enter HTML payload in First Name or Last Name field:
`<h1>INJECTED</h1>`
3. Save the user profile
4. Create or view an article — the injected HTML renders in the author name

### Fix
Replace unescaped `echo` with `htmlspecialchars()`:
```php
value="<?php echo htmlspecialchars($values['firstname'], ENT_QUOTES, 'UTF-8') ?>"
value="<?php echo htmlspecialchars($values['lastname'], ENT_QUOTES, 'UTF-8') ?>"
```
Or use the existing `$this->e()` helper already used in `editOwn.tpl.php`.

### Impact
- Stored HTML injection visible to all users viewing affected content
- Can be used for phishing, fake login forms, and UI defacement
- Affects all versions before 3.3.0

Affected packages

EcosystemPackageAffectedFixedRecord
Packagist leantime/leantime < 3.3.0 3.3.0 GHSA-qrfh-cc86-vc8c

References