luci/modules
Fuad Hasan 76a7614620 luci-base: reject quoting characters in auth plugin asset paths
normalize_assets() rejects .. and whitespace but not quotes or angle
brackets, and every sysauth template interpolates the surviving src
straight into an attribute without escaping:

	<script src="{{ asset.src }}"></script>

A src of /luci-static/plugins/<uuid>/x.js"></script><script>... passes
both existing checks and closes the attribute. It needs no whitespace,
so the existing character class does not stop it.

The three in-tree templates could entityencode() instead, but
normalize_assets() is the single point every theme goes through, so
filtering here also covers out-of-tree themes carrying the same markup.

src comes from a plugin's own check(), which is server-side ucode able
to emit script through the html field regardless, so this is not a
privilege boundary. It matters for a plugin deriving src from request
input, and it keeps the filter consistent with what it already tries to
do.

Signed-off-by: Fuad Hasan <fuad.antor@gmail.com>
2026-09-18 20:18:17 +02:00
..
luci-base luci-base: reject quoting characters in auth plugin asset paths 2026-09-18 20:18:17 +02:00
luci-compat modules: remove my extraneous copyrights 2026-09-07 23:07:10 +03:00
luci-lua-runtime luci-lua-runtime: update timezone data to 2026d 2026-09-16 11:54:45 +02:00
luci-mod-admin-full
luci-mod-battstatus
luci-mod-dashboard luci-mod-dashboard: rework the layout using standard LuCI markup 2026-09-17 23:01:15 +03:00
luci-mod-dsl treewide: sync translations 2026-09-16 18:50:14 +03:00
luci-mod-network treewide: wrap loose view content in cbi-section 2026-09-06 21:47:04 +03:00
luci-mod-status treewide: wrap loose view content in cbi-section 2026-09-06 21:47:04 +03:00
luci-mod-system treewide: wrap loose view content in cbi-section 2026-09-06 21:47:04 +03:00