secubox-openwrt/package/secubox/luci-app-device-intel/htdocs/luci-static/resources/view/device-intel/settings.js
CyberMind-FR e58f479cd4 feat(waf): Update WAF scenarios with 2024-2025 CVEs and OWASP threats
Add detection patterns for latest actively exploited vulnerabilities:
- CVE-2025-55182 (React2Shell, CVSS 10.0)
- CVE-2025-8110 (Gogs RCE), CVE-2025-53770 (SharePoint)
- CVE-2025-52691 (SmarterMail), CVE-2025-40551 (SolarWinds)
- CVE-2024-47575 (FortiManager), CVE-2024-21887 (Ivanti)
- CVE-2024-3400, CVE-2024-0012, CVE-2024-9474 (PAN-OS)

New attack categories based on OWASP Top 10 2025:
- HTTP Request Smuggling (TE.CL/CL.TE conflicts)
- AI/LLM Prompt Injection (ChatML, instruction markers)
- WAF Bypass techniques (Unicode normalization, double encoding)
- Supply Chain attacks (CI/CD poisoning, dependency confusion)
- Extended SSTI (Jinja2, Freemarker, Velocity, Thymeleaf)
- API Abuse (BOLA/IDOR, mass assignment)

CrowdSec scenarios split into 11 separate files for reliability.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-12 05:02:57 +01:00

159 lines
4.7 KiB
JavaScript

'use strict';
'require view';
'require form';
'require ui';
'require uci';
'require secubox/kiss-theme';
return view.extend({
load: function() {
return L.resolveDefault(uci.load('device-intel'), {});
},
render: function() {
var m, s, o;
m = new form.Map('device-intel', _('Device Intelligence Settings'),
_('Configure aggregation, display, classification, and emulator modules.'));
// ── Main Settings ──
s = m.section(form.NamedSection, 'main', 'device-intel', _('General'));
o = s.option(form.Flag, 'enabled', _('Enable Device Intelligence'));
o.default = '1';
o.rmempty = false;
o = s.option(form.Value, 'cache_ttl', _('Cache TTL (seconds)'));
o.datatype = 'uinteger';
o.default = '30';
o.placeholder = '30';
o.description = _('How long to cache aggregated device data before refreshing.');
o = s.option(form.Flag, 'auto_classify', _('Auto-classify'));
o.default = '1';
o.description = _('Automatically classify devices using heuristic rules.');
o = s.option(form.Value, 'classify_interval', _('Classify Interval (seconds)'));
o.datatype = 'uinteger';
o.default = '300';
o.placeholder = '300';
o.depends('auto_classify', '1');
o = s.option(form.Value, 'mesh_query_timeout', _('Mesh Query Timeout (seconds)'));
o.datatype = 'uinteger';
o.default = '3';
o.placeholder = '3';
// ── Display Settings ──
s = m.section(form.NamedSection, 'display', 'display', _('Display'));
o = s.option(form.ListValue, 'default_view', _('Default View'));
o.value('grid', _('Grid'));
o.value('table', _('Table'));
o.default = 'grid';
o = s.option(form.ListValue, 'group_by', _('Group By'));
o.value('type', _('Device Type'));
o.value('zone', _('NAC Zone'));
o.value('node', _('Source Node'));
o.value('status', _('Online Status'));
o.default = 'type';
o = s.option(form.Flag, 'show_offline', _('Show Offline Devices'));
o.default = '1';
o = s.option(form.Flag, 'show_mesh_peers', _('Show Mesh Peers'));
o.default = '1';
o = s.option(form.Flag, 'auto_refresh', _('Auto-refresh'));
o.default = '1';
o = s.option(form.Value, 'refresh_interval', _('Refresh Interval (seconds)'));
o.datatype = 'uinteger';
o.default = '15';
o.placeholder = '15';
o.depends('auto_refresh', '1');
// ── USB Emulator ──
s = m.section(form.NamedSection, 'usb', 'emulator', _('USB Emulator'));
o = s.option(form.Flag, 'enabled', _('Enable'));
o.default = '1';
o = s.option(form.Value, 'scan_interval', _('Scan Interval (seconds)'));
o.datatype = 'uinteger';
o.default = '120';
o.placeholder = '120';
o = s.option(form.Flag, 'track_storage', _('Track Storage Devices'));
o.default = '1';
o.description = _('Detect USB mass storage devices and mount points.');
o = s.option(form.Flag, 'track_serial', _('Track Serial Devices'));
o.default = '1';
o.description = _('Detect USB serial adapters (Zigbee/Z-Wave dongles).');
// ── MQTT Emulator ──
s = m.section(form.NamedSection, 'mqtt', 'emulator', _('MQTT Emulator'));
o = s.option(form.Flag, 'enabled', _('Enable'));
o.default = '0';
o = s.option(form.Value, 'broker_host', _('Broker Host'));
o.default = '127.0.0.1';
o.placeholder = '127.0.0.1';
o.depends('enabled', '1');
o = s.option(form.Value, 'broker_port', _('Broker Port'));
o.datatype = 'port';
o.default = '1883';
o.placeholder = '1883';
o.depends('enabled', '1');
o = s.option(form.Value, 'discovery_topic', _('Discovery Topic'));
o.default = '$SYS/#';
o.placeholder = '$SYS/#';
o.depends('enabled', '1');
o = s.option(form.Value, 'scan_interval', _('Scan Interval (seconds)'));
o.datatype = 'uinteger';
o.default = '60';
o.depends('enabled', '1');
// ── Zigbee Emulator ──
s = m.section(form.NamedSection, 'zigbee', 'emulator', _('Zigbee Emulator'));
o = s.option(form.Flag, 'enabled', _('Enable'));
o.default = '0';
o = s.option(form.Value, 'coordinator', _('Coordinator Device'));
o.default = '/dev/ttyUSB0';
o.placeholder = '/dev/ttyUSB0';
o.depends('enabled', '1');
o = s.option(form.ListValue, 'adapter', _('Bridge Adapter'));
o.value('zigbee2mqtt', 'Zigbee2MQTT');
o.value('deconz', 'deCONZ');
o.default = 'zigbee2mqtt';
o.depends('enabled', '1');
o = s.option(form.Value, 'api_port', _('Bridge API Port'));
o.datatype = 'port';
o.default = '8099';
o.placeholder = '8099';
o.depends('enabled', '1');
o = s.option(form.Value, 'bridge_topic', _('Bridge MQTT Topic'));
o.default = 'zigbee2mqtt/bridge/devices';
o.depends({ 'enabled': '1', 'adapter': 'zigbee2mqtt' });
return m.render().then(function(node) {
return KissTheme.wrap(node, 'admin/secubox/services/device-intel/settings');
});
},
handleSaveApply: null,
handleSave: null,
handleReset: null
});