Skip to content

Updating txAdmin to v8.1.0 - #1121

Merged
tabarra merged 76 commits into
masterfrom
develop
Jun 3, 2026
Merged

Updating txAdmin to v8.1.0#1121
tabarra merged 76 commits into
masterfrom
develop

Conversation

@tabarra

@tabarra tabarra commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

tabarra and others added 30 commits March 8, 2025 15:59
Revamped the link/text to the new event, instead of the current deprecated version
tweak: healedPlayer -> playerHealed
The changes reflect the acquisition of txAdmin by Cfx.re as [announced](https://forum.cfx.re/t/txadmin-officially-joins-cfx-re/5319010).
tabarra and others added 28 commits December 26, 2025 13:57
It's fine to do this without migration because the old version was never published.
Increased timeline legend offset.
Increased timeline mouse event debouncing delay.
Fixed drilldown loader cards order.
Added the script to generate the player drops stats file v2.
This commit tightens up server-side rendering and a few client-side error surfaces to avoid “string-to-HTML/JS context” footguns, and centralizes escaping/sanitizing rules so we don’t have to re-solve this in every route/view. Thank you very much @gtasnail (Kypos) for the report.

IMPORTANT NOTE: There’s **no evidence** of these issues being exploited in the wild, and **none of the recent incidents** are related to these issues (or to txAdmin at all).

Two specific issues addressed:

1. **Config-driven script context injection via server name**
- A crafted value for `txConfig.general.serverName` could be rendered into a sensitive UI boot/script-constants context in a way that allowed arbitrary script execution in the browser.
- **Practicality:** triggering this requires **admin-level access** over the txAdmin configuration. This isn’t reachable by regular players/users, but it’s still worth eliminating because it touches a high-risk render context.

2. **Setup recipe validation errors injected into the DOM**
- Invalid recipe/template details could influence an error string that was then displayed via `innerHTML` in the setup UI, allowing markup interpretation and script execution.
- **Practicality:** the setup flow is **admin master–only**, and the string originates from the recipe/template you are choosing to validate/run. If you’re feeding the setup wizard an untrusted recipe, a browser injection is the least of your problems — but the UI should still treat error strings strictly as text.

Defense-in-depth hardening included:
- Add `core/lib/htmlRenderSafety.ts` (with tests) for context-appropriate escaping:
  - text nodes vs quoted attributes vs raw-text elements (`<script>/<style>`), plus minimal safe HTML sanitization for legacy message rendering.
- Remove the old `core/lib/xss.js` helper and migrate callers to the new utilities.
- Adjust several routes/pages to prefer safe message rendering (`renderMessage`) and avoid passing user-influenced strings (e.g. from errors) into markup/JS contexts without the correct escaping.
@tabarra
tabarra merged commit 372e915 into master Jun 3, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants