@7365admin1/core 3.48.1-staging.180 → 3.48.1-staging.181

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,22 @@
1
+ ---
2
+ "@7365admin1/core": patch
3
+ ---
4
+
5
+ Constrain what a HID configuration write may contain, and stop storing password salts
6
+
7
+ `PUT /readers/:readerId/configuration` is a passthrough to the reader's
8
+ `set_configuration.fcgi`, and its body schema was `Joi.object().unknown(true)`.
9
+ That reaches `monitor.hostname`, `monitor.port` and `monitor.path` — the block
10
+ that decides which server receives every identification at that door — so one
11
+ request could redirect a reader's entire event stream. Writes are now limited to
12
+ the two modules the product actually writes, `pjsip` and `identifier`, which are
13
+ the only two `setReaderConfiguration` call sites in `layer-common`. Module
14
+ contents stay unvalidated (the vendor owns those keys), reading configuration is
15
+ unchanged, and the monitor block is still managed by the server through
16
+ `setReaderMonitor` and `configureReaderIntegration`, which do not use this
17
+ schema.
18
+
19
+ `sanitizeHidPayload` — the central redaction every `addEvent` already passes
20
+ through — did not include `salt`, so a password salt was still being persisted
21
+ beside the hash it belongs to. `salt`, `salt_value` and `saltvalue` are now
22
+ redacted like the rest. This does not touch records already stored.
package/dist/index.d.ts CHANGED
@@ -10659,6 +10659,21 @@ declare const schemaUpdateHidSitePermissions: Joi.ObjectSchema<any>;
10659
10659
  declare const schemaHidAmicoExecuteActions: Joi.ObjectSchema<any>;
10660
10660
  declare const schemaHidAmicoIntercomCall: Joi.ObjectSchema<any>;
10661
10661
  declare const schemaHidAmicoConfiguration: Joi.ObjectSchema<any>;
10662
+ /**
10663
+ * A configuration WRITE is a passthrough to `set_configuration.fcgi`, so an
10664
+ * unrestricted body reaches `monitor.hostname`, `monitor.port` and
10665
+ * `monitor.path` - the block that decides which server receives every
10666
+ * identification at that door. A single request could redirect a reader's
10667
+ * entire event stream.
10668
+ *
10669
+ * Writes are limited to the two modules the product actually writes, which are
10670
+ * the only two `setReaderConfiguration` call sites in `layer-common`:
10671
+ * `pjsip` (HidIntercomManagement.vue) and `identifier`
10672
+ * (HidQrCodeConfiguration.vue). Module CONTENTS stay unvalidated - the vendor
10673
+ * owns those keys - and READING configuration is unchanged. The monitor block
10674
+ * is still managed by the server through `setReaderMonitor` and
10675
+ * `configureReaderIntegration`, which do not go through this schema.
10676
+ */
10662
10677
  declare const schemaHidAmicoSetConfiguration: Joi.ObjectSchema<any>;
10663
10678
  declare const schemaHidAmicoMonitor: Joi.ObjectSchema<any>;
10664
10679
  declare const schemaHidAmicoObjectOperation: Joi.ObjectSchema<any>;
package/dist/index.js CHANGED
@@ -43463,7 +43463,10 @@ var schemaHidAmicoIntercomCall = import_joi64.default.object({
43463
43463
  target: import_joi64.default.string().trim().min(1).max(255).pattern(/^(?:sip:)?[A-Za-z0-9_.+-]+(?:@[A-Za-z0-9.-]+(?::\d{1,5})?)?$/).required()
43464
43464
  }).unknown(true);
43465
43465
  var schemaHidAmicoConfiguration = import_joi64.default.object().pattern(import_joi64.default.string(), import_joi64.default.array().items(import_joi64.default.string())).min(1).unknown(true);
43466
- var schemaHidAmicoSetConfiguration = import_joi64.default.object().unknown(true);
43466
+ var schemaHidAmicoSetConfiguration = import_joi64.default.object({
43467
+ pjsip: import_joi64.default.object().unknown(true),
43468
+ identifier: import_joi64.default.object().unknown(true)
43469
+ }).min(1).unknown(false);
43467
43470
  var schemaHidAmicoMonitor = import_joi64.default.object({
43468
43471
  enabled: import_joi64.default.boolean().required()
43469
43472
  });
@@ -43672,6 +43675,9 @@ var SENSITIVE_KEYS = /* @__PURE__ */ new Set([
43672
43675
  "pin",
43673
43676
  "pin_value",
43674
43677
  "pinvalue",
43678
+ "salt",
43679
+ "salt_value",
43680
+ "saltvalue",
43675
43681
  "card_value",
43676
43682
  "cardvalue",
43677
43683
  "cardno",