<feed xmlns='http://www.w3.org/2005/Atom'>
<title>minecraft-ui/piolium/attack-surface/patch-bypass-summary.md, branch master</title>
<subtitle>Everyone-is-equal self-hosted UI for minecraft server hosting.
</subtitle>
<id>https://git.2137697.xyz/minecraft-ui/atom?h=master</id>
<link rel='self' href='https://git.2137697.xyz/minecraft-ui/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/minecraft-ui/'/>
<updated>2026-07-29T00:24:41Z</updated>
<entry>
<title>Security audit fixes: patch 16 vulnerabilities across 7 source files</title>
<updated>2026-07-29T00:24:41Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-29T00:24:41Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/minecraft-ui/commit/?id=c654a6d17eb58adbb15b9c47ab32bcc3a1666307'/>
<id>urn:sha1:c654a6d17eb58adbb15b9c47ab32bcc3a1666307</id>
<content type='text'>
CRITICAL:
- Instance name path traversal (AP-001): sanitize::sanitize_instance_name()
  strips .., /, \, \0, spaces, special chars at all 12 join call sites
- Zip-slip protection in world import: starts_with() guard after enclosed_name()

HIGH:
- RCON command injection: validate_username() rejects non-MC usernames
  across all 6 player action macros (whitelist, op, ban)
- Level-seed properties injection: sanitize_seed() strips \n \r = : \0
- CSRF protection: SameSite=Lax -&gt; SameSite=Strict on session cookie

MEDIUM:
- Session TTL: server-side 24h expiry via strftime check in require_auth
- Rate limiting: in-memory 10-ip/5min sliding window on login
- Background task stale is_active: all queries use concrete WHERE id=?1
- Mod validation DoS: 500MB cap, 10k class scan limit, 10k CP entry cap

LOW:
- Logout auth guard: moved into protected route group + CurrentUser param
- Mod orphan race: DB insert before file write
- Backup orphan race: DB insert before ZIP creation
- Template fix: broken Askama == comparisons in edit.html

All fixes compile clean with zero warnings. 10 unit tests pass.
</content>
</entry>
</feed>
