Chuck and Claude Opus 5.5
bcef1957a9
fix(security): refuse unsafe plugin ids, keep secrets private, validate request bodies ( #643 )
...
* fix(security): refuse unsafe plugin ids, keep secrets private, validate bodies
- install_from_url and the registry install's manifest rename refuse a
plugin id that is not a single safe name (no ../ out of plugins_dir).
- Uninstall and config reset refuse core config sections and ids with
path parts; uninstall of a plugin whose directory is gone still works.
- separate_secrets checks a field's own x-secret marker before recursing,
so object/array secrets no longer land in config.json.
- Backup restore creates missing secrets/wifi/ytm files with mode 640;
export skips non-object manifests and no longer collides on same-second
exports.
- SYSTEM_FONTS includes every bundled font from BUNDLED_FONTS.
- Raw config/secrets saves and validate_request_json require a JSON object.
- A blank max_dynamic_duration_seconds keeps the stored value; other values
are validated to 30-1800 instead of raising a 500.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
* fix(security): validate the id before install_plugin moves anything; claim backup names atomically
- install_plugin set aside plugins_dir / plugin_id before any id check, so
"../x" moved a directory outside the plugins dir (the rollback moved it
back, but only if the install path got that far)
- two exports finishing in the same second could both see a free name and
the later os.replace destroyed the first archive; the name is now
claimed with O_EXCL before the archive is swapped in
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-28 08:24:43 -04:00
..
2026-09-23 16:33:24 -04:00
2026-09-24 17:36:53 -04:00
2026-09-23 12:36:26 -04:00
2026-09-28 08:24:43 -04:00
2026-03-20 15:06:58 -04:00
2026-08-21 11:16:52 -04:00
2026-09-24 17:37:15 -04:00
2026-07-12 10:38:52 -04:00
2026-07-12 10:38:52 -04:00
2026-09-24 17:32:29 -04:00
2026-09-28 08:24:43 -04:00
2026-08-21 11:16:52 -04:00
2026-09-28 08:24:43 -04:00
2026-09-08 08:34:52 -04:00
2026-09-11 10:07:38 -04:00
2026-09-24 17:35:49 -04:00
2026-09-23 12:36:53 -04:00
2026-08-23 11:44:23 -04:00
2026-09-23 12:36:53 -04:00
2026-09-28 08:24:43 -04:00
2026-09-23 10:29:16 -04:00
2026-09-24 17:35:49 -04:00
2026-08-21 11:16:52 -04:00
2026-09-23 10:29:16 -04:00
2026-09-24 17:35:49 -04:00
2026-09-11 10:07:38 -04:00
2026-09-11 10:07:38 -04:00
2026-09-24 17:35:49 -04:00
2026-09-24 17:32:29 -04:00
2026-07-14 08:08:51 -04:00
2026-09-15 10:58:57 -04:00
2026-09-24 15:51:14 -04:00
2026-09-17 16:37:29 -04:00
2026-09-18 09:56:50 -04:00
2026-09-24 17:32:29 -04:00
2026-08-26 10:03:43 -04:00
2026-09-01 09:54:04 -04:00
2026-09-28 08:24:43 -04:00
2026-09-24 17:32:29 -04:00
2026-08-07 16:17:11 -04:00
2026-09-13 11:53:50 -04:00
2026-09-24 15:51:53 -04:00
2026-08-12 08:42:56 -04:00
2026-09-23 12:54:07 -04:00
2026-08-19 12:28:22 -04:00
2026-09-07 13:37:54 -04:00
2026-08-12 08:40:07 -04:00
2026-09-17 12:38:39 -04:00
2026-09-24 15:50:50 -04:00
2026-09-23 12:54:07 -04:00
2026-08-11 14:14:25 -04:00
2026-08-19 17:40:52 -04:00
2026-09-14 09:42:24 -04:00
2026-09-23 16:33:24 -04:00
2026-08-07 10:17:30 -04:00
2026-09-23 12:52:50 -04:00
2026-07-14 08:49:43 -04:00
2026-09-11 10:07:38 -04:00
2026-09-16 17:12:18 -04:00
2026-08-06 14:04:23 -04:00
2026-09-23 12:36:26 -04:00
2026-09-24 17:32:02 -04:00
2026-09-17 16:37:29 -04:00
2026-09-15 18:19:39 -04:00
2026-08-04 13:46:28 -04:00
2026-09-03 16:06:40 -04:00
2026-09-23 12:44:55 -04:00
2026-09-23 16:48:02 -04:00
2026-09-24 15:52:52 -04:00
2026-09-24 17:37:15 -04:00
2026-09-23 10:29:16 -04:00
2026-08-23 11:43:39 -04:00
2026-08-07 16:17:11 -04:00
2026-09-23 10:29:16 -04:00
2026-09-27 18:13:49 -04:00
2026-09-24 17:37:15 -04:00
2026-09-24 17:37:15 -04:00
2026-09-23 12:36:26 -04:00
2026-09-24 19:38:22 -04:00
2026-09-07 13:37:54 -04:00
2026-09-17 16:37:29 -04:00
2026-09-24 17:37:15 -04:00
2026-09-23 12:36:26 -04:00
2026-09-24 19:38:22 -04:00
2026-09-24 17:35:49 -04:00
2026-08-06 14:04:23 -04:00
2026-08-07 16:17:11 -04:00
2026-09-14 13:27:10 -04:00
2026-09-24 17:32:29 -04:00
2026-08-07 13:27:20 -04:00
2026-09-24 17:32:29 -04:00
2026-09-23 12:36:26 -04:00
2026-09-23 14:32:02 -04:00
2026-09-18 09:56:50 -04:00
2026-09-24 17:31:41 -04:00
2026-09-24 17:32:29 -04:00
2026-09-24 17:32:29 -04:00
2026-09-23 16:50:42 -04:00
2026-09-24 19:38:49 -04:00
2026-08-21 14:30:29 -04:00
2026-09-07 13:37:38 -04:00
2026-07-12 10:38:52 -04:00
2026-08-21 15:50:55 -04:00
2026-09-24 17:32:29 -04:00
2026-09-23 12:36:26 -04:00
2026-08-12 14:58:05 -04:00
2026-08-23 11:42:51 -04:00
2026-08-03 16:52:42 -04:00
2026-09-24 17:31:41 -04:00
2026-09-14 17:38:17 -04:00
2026-08-21 15:50:55 -04:00
2026-09-23 10:29:16 -04:00
2026-09-27 18:13:49 -04:00
2026-09-18 11:09:25 -04:00
2026-09-24 17:35:49 -04:00
2026-09-11 08:41:58 -04:00
2026-09-23 12:36:26 -04:00
2026-08-23 11:44:00 -04:00
2026-09-24 17:32:29 -04:00
2026-09-23 12:58:11 -04:00
2026-09-17 16:37:29 -04:00
2026-09-24 17:32:02 -04:00
2026-09-11 11:32:12 -04:00
2026-09-08 08:34:52 -04:00
2026-08-11 16:10:56 -04:00
2026-09-24 19:57:03 -04:00
2026-09-07 13:37:38 -04:00
2026-09-08 08:34:52 -04:00
2026-08-19 12:49:46 -04:00
2026-09-23 10:34:20 -04:00
2026-09-24 17:35:49 -04:00
2026-09-11 15:32:03 -04:00
2026-09-23 12:36:53 -04:00
2026-09-16 17:12:18 -04:00
2026-09-15 19:17:48 -04:00
2026-08-17 15:35:02 -04:00
2026-09-08 08:34:52 -04:00
2026-09-02 09:51:27 -04:00
2026-09-17 16:37:29 -04:00
2026-09-24 15:52:52 -04:00
2026-08-21 16:19:33 -04:00
2026-09-11 08:41:58 -04:00
2026-08-19 12:28:22 -04:00
2026-07-11 08:55:50 -04:00
2026-09-24 17:32:29 -04:00
2026-08-23 11:43:39 -04:00
2026-09-24 17:32:02 -04:00
2026-07-09 07:54:18 -04:00
2026-09-24 17:32:02 -04:00
2026-09-17 16:37:29 -04:00
2026-09-23 12:36:26 -04:00
2026-09-23 12:36:26 -04:00
2026-09-15 18:19:39 -04:00
2026-09-15 18:19:39 -04:00
2026-09-24 15:49:51 -04:00
2026-08-07 13:02:59 -04:00
2026-09-24 19:57:03 -04:00
2026-09-24 17:32:02 -04:00
2026-09-24 17:32:02 -04:00
2026-09-23 16:33:24 -04:00
2026-09-17 16:37:29 -04:00
2026-09-24 17:32:02 -04:00
2026-09-24 19:47:44 -04:00
2026-08-21 16:22:48 -04:00
2026-08-07 10:17:30 -04:00
2026-05-15 10:19:55 -04:00
2026-09-07 13:37:54 -04:00
2026-07-31 09:40:38 -04:00
2026-09-17 16:37:29 -04:00
2026-09-17 16:37:29 -04:00
2026-07-13 09:28:30 -04:00
2026-09-14 12:48:36 -04:00
2026-09-13 11:53:50 -04:00
2026-09-15 15:32:21 -04:00
2026-09-17 16:37:29 -04:00
2026-09-20 18:25:33 -04:00
2026-08-26 11:25:10 -04:00
2026-09-24 15:51:35 -04:00
2026-09-23 16:33:12 -04:00
2026-09-11 10:07:38 -04:00
2026-09-24 17:32:29 -04:00
2026-09-24 17:32:02 -04:00
2026-09-23 12:36:26 -04:00
2026-09-23 16:33:24 -04:00
2026-09-28 08:24:43 -04:00
2026-09-24 17:32:02 -04:00
2026-07-13 09:32:37 -04:00
2026-09-24 17:31:41 -04:00
2026-09-24 17:31:41 -04:00
2026-09-24 15:51:14 -04:00
2026-09-24 17:32:29 -04:00
2026-09-11 08:45:40 -04:00
2026-09-24 17:35:49 -04:00
2026-08-21 14:29:45 -04:00
2026-09-24 17:31:41 -04:00
2026-08-06 14:04:23 -04:00
2026-07-14 08:33:08 -04:00
2026-09-24 17:32:29 -04:00
2026-09-28 08:24:43 -04:00
2026-09-23 12:36:26 -04:00
2026-08-21 14:30:29 -04:00
2026-08-21 14:30:29 -04:00
2026-09-24 17:37:15 -04:00
2026-09-24 17:37:15 -04:00
2026-09-23 10:29:16 -04:00
2026-09-24 19:38:22 -04:00
2026-09-24 19:38:22 -04:00
2026-09-24 19:38:22 -04:00
2026-08-23 11:42:33 -04:00
2026-08-12 14:06:32 -04:00
2026-09-24 17:37:15 -04:00
2026-08-13 17:02:36 -04:00
2026-08-21 15:50:55 -04:00
2026-07-08 09:43:13 -04:00
2026-09-24 17:37:15 -04:00
2026-09-24 17:37:15 -04:00
2026-09-24 19:57:03 -04:00
2026-09-23 16:33:24 -04:00
2026-09-23 12:36:26 -04:00
2026-09-23 12:36:53 -04:00
2026-09-10 17:42:00 -04:00
2026-09-23 12:36:53 -04:00
2026-09-24 15:53:19 -04:00
2026-07-09 09:22:24 -04:00
2026-09-23 10:29:16 -04:00
2026-09-14 09:42:24 -04:00
2026-09-24 15:51:14 -04:00
2026-09-09 16:25:45 -04:00
2026-09-14 09:42:24 -04:00
2026-09-14 12:40:41 -04:00
2026-09-14 12:40:41 -04:00
2026-09-24 17:32:29 -04:00