Paul Nothaft
b36dd0ebfe
fix(backend): contain and sanitize the SQLite restore source path
...
The restore flow accepted an unvalidated database.backup_file from
the manifest (absolute paths and traversal both worked, and no
containment check enforced the configured backup root), then
interpolated it unescaped into a `sqlite3 .restore '<path>'` command,
letting an attacker-chosen source file replace the live database.
2026-09-10 20:42:38 +02:00
..
2026-05-02 22:56:04 +02:00
2026-07-22 21:27:12 +02:00
2026-08-02 21:17:05 +02:00
2026-09-01 16:29:03 +02:00
2026-05-27 14:04:15 +02:00
2026-08-18 22:14:41 +02:00
2026-07-16 10:55:10 +02:00
2026-09-02 09:33:34 +02:00
2026-05-26 18:18:51 +02:00
2026-05-26 18:18:51 +02:00
2026-06-02 11:33:45 +02:00
2026-06-23 18:11:58 +02:00
2026-05-14 23:11:00 +02:00
2026-08-02 21:17:11 +02:00
2026-05-03 22:06:06 +02:00
2026-05-03 22:06:06 +02:00
2026-09-07 20:02:57 +02:00
2026-09-08 15:34:09 +02:00
2026-08-26 08:46:29 +02:00
2026-08-26 08:36:45 +02:00
2026-07-17 20:55:49 +02:00
2026-05-26 18:18:51 +02:00
2026-06-18 18:40:11 +02:00
2026-09-07 22:29:55 +02:00
2026-08-26 08:28:48 +02:00
2026-08-23 11:15:01 +02:00
2026-07-19 22:00:46 +02:00
2026-08-29 12:22:50 +02:00
2026-05-04 23:26:25 +02:00
2026-08-26 08:53:05 +02:00
2026-08-22 21:37:49 +02:00
2026-07-19 22:00:46 +02:00
2026-09-08 08:33:04 +02:00
2026-08-26 20:55:54 +02:00
2026-07-17 21:51:21 +02:00
2026-05-26 18:18:51 +02:00
2026-07-03 07:27:43 +02:00
2026-05-26 18:18:51 +02:00
2026-07-03 07:49:45 +02:00
2026-06-15 23:17:57 +02:00
2026-08-29 12:15:31 +02:00
2026-08-26 08:53:39 +02:00
2026-07-19 22:36:52 +02:00
2026-07-03 11:37:51 +02:00
2026-09-05 15:21:40 +02:00
2026-07-11 02:01:20 +02:00
2026-05-26 18:18:51 +02:00
2026-08-23 11:15:01 +02:00
2026-08-23 22:07:50 +02:00
2026-08-29 11:10:05 +02:00
2026-06-17 22:25:12 +02:00
2026-08-26 20:55:54 +02:00
2026-08-26 08:36:45 +02:00
2026-07-16 12:27:59 +02:00
2026-07-16 12:56:34 +02:00
2026-09-08 08:41:53 +02:00
2026-08-04 16:36:12 +02:00
2026-08-03 14:48:50 +02:00
2026-08-02 21:17:17 +02:00
2026-05-26 18:18:51 +02:00
2026-09-02 09:43:10 +02:00
2026-06-16 18:54:55 +02:00
2026-08-03 22:03:31 +02:00
2026-09-10 20:42:38 +02:00
2026-06-23 18:11:58 +02:00
2026-09-08 15:34:09 +02:00
2026-09-08 15:34:09 +02:00
2026-06-15 19:54:18 +02:00
2026-06-18 18:40:22 +02:00
2026-07-29 12:38:26 +02:00
2026-08-10 08:10:54 +02:00
2026-08-09 13:40:03 +02:00
2026-06-23 18:11:58 +02:00
2026-08-04 16:36:50 +02:00
2026-06-29 20:20:13 +02:00
2026-07-18 23:46:40 +02:00
2026-09-02 09:43:10 +02:00
2026-09-07 20:03:15 +02:00
2026-09-08 16:25:51 +02:00
2026-09-08 16:25:51 +02:00
2026-09-07 20:03:15 +02:00
2026-09-07 20:03:15 +02:00
2026-09-08 16:25:51 +02:00
2026-09-08 16:25:51 +02:00
2026-09-07 20:03:15 +02:00
2026-09-06 21:34:04 +02:00
2026-07-29 12:38:26 +02:00
2026-09-10 13:48:48 +02:00
2026-09-08 15:54:01 +02:00