Files
felhom.eu/documentation/audits/security-2026-11-02/walks/paperless-drill/undo/undo-proof-paperless-ngx.json
T

201 lines
9.5 KiB
JSON

{
"app": "paperless-ngx",
"from": {
"paperless-webserver": "ghcr.io/paperless-ngx/paperless-ngx:2.20.15",
"paperless-postgres": "postgres:18-alpine",
"paperless-redis": "redis:7-alpine"
},
"to": {
"paperless-webserver": "ghcr.io/paperless-ngx/paperless-ngx:3.4.1",
"paperless-postgres": "postgres:18-alpine",
"paperless-redis": "redis:7-alpine"
},
"started": "2026-11-03T01:16:20Z",
"drill_head_before": "c760fca938987f643d42963aebca6e27ed2bbea3",
"failing_compose_main_healthcheck": [
"test: [\"CMD\", \"false\"]"
],
"failing_probe": true,
"update": {
"accepted": true,
"http": "202",
"phases": [
{
"t": 0.0,
"phase": "backing-up",
"label": "Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 22.6,
"phase": "safety-dump",
"label": "Adatb\u00e1zis pillanatk\u00e9p\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 25.6,
"phase": "pulling",
"label": "\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 111.7,
"phase": "copying",
"label": "Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 124.0,
"phase": "starting",
"label": "Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 134.3,
"phase": "verifying",
"label": "M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 437.4,
"phase": "undoing",
"label": "Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 495.8,
"phase": "undone",
"label": "Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra",
"updating": false,
"error": null,
"hold": null
}
],
"duration_s": 495.9,
"final_phase": "undone",
"update_error": null,
"hold_reason": null,
"state": "running"
},
"to_log_while_verifying": [
"-- ******* ---- Linux-7.0.14-26-pve-x86_64-with-glibc2.41 2026-11-03 02:22:27",
"- *** --- * --- ",
"- ** ---------- [config]",
"- ** ---------- .> app: paperless:0x7b72fd464ec0",
"- ** ---------- .> transport: redis://paperless-redis:6379//",
"- ** ---------- .> results: redis://paperless-redis:6379/",
"- *** --- * --- .> concurrency: 1 (prefork)",
"-- ******* ---- .> task events: ON",
"--- ***** ----- ",
" -------------- [queues]",
" .> celery exchange=celery(direct) key=celery",
" ",
"",
"[tasks]",
" . documents.signals.handlers.process_cf_select_update",
" . documents.tasks.apply_ai_suggestions",
" . documents.tasks.build_share_link_bundle",
" . documents.tasks.bulk_update_documents",
" . documents.tasks.check_scheduled_workflows",
" . documents.tasks.cleanup_expired_share_link_bundles",
" . documents.tasks.consume_file",
" . documents.tasks.empty_trash",
" . documents.tasks.index_document",
" . documents.tasks.index_optimize",
" . documents.tasks.llmindex_index",
" . documents.tasks.remove_document_from_index",
" . documents.tasks.remove_document_from_llm_index",
" . documents.tasks.sanity_check",
" . documents.tasks.train_classifier",
" . documents.tasks.update_document_content_maybe_archive_file",
" . documents.tasks.update_document_in_llm_index",
" . documents.workflows.webhooks.send_webhook",
" . paperless_mail.mail.apply_mail_action",
" . paperless_mail.mail.error_callback",
" . paperless_mail.tasks.process_mail_accounts",
"",
"[2026-11-03 02:22:27,997] [INFO] [celery.worker.consumer.connection] Connected to redis://paperless-redis:6379//",
"[2026-11-03 02:22:28,019] [INFO] [celery.apps.worker] celery@f1d639f05454 ready.",
"[2026-11-03 02:22:28,987] [INFO] [paperless.asgi] [init] Paperless-ngx version: v3.4.1",
"[INFO] Shutting down granian"
],
"observables_after": {
"pinned_images": {
"paperless-postgres": "postgres:18-alpine",
"paperless-redis": "redis:7-alpine",
"paperless-webserver": "ghcr.io/paperless-ngx/paperless-ngx:2.20.15"
},
"installed_images": {
"paperless-postgres": "postgres:18-alpine",
"paperless-redis": "redis:7-alpine",
"paperless-webserver": "ghcr.io/paperless-ngx/paperless-ngx:2.20.15"
},
"catalog_images": {
"paperless-postgres": "postgres:18-alpine",
"paperless-redis": "redis:7-alpine",
"paperless-webserver": "ghcr.io/paperless-ngx/paperless-ngx:3.4.1"
},
"live_compose_image_lines": [
"image: ghcr.io/paperless-ngx/paperless-ngx:2.20.15@sha256:6c86cad803970ea782683a8e80e7403444c5bf3cf70de63b4d3c8e87500db92f",
"image: postgres:18-alpine@sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873",
"image: redis:7-alpine@sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499"
],
"docker_inspect": [
"paperless-webserver ghcr.io/paperless-ngx/paperless-ngx:2.20.15@sha256:6c86cad803970ea782683a8e80e7403444c5bf3cf70de63b4d3c8e87500db92f running=true restarts=0",
"paperless-postgres postgres:18-alpine@sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873 running=true restarts=0",
"paperless-redis redis:7-alpine@sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499 running=true restarts=0"
]
},
"running_images_after": {
"paperless-webserver": "ghcr.io/paperless-ngx/paperless-ngx:2.20.15@sha256:6c86cad803970ea782683a8e80e7403444c5bf3cf70de63b4d3c8e87500db92f",
"paperless-postgres": "postgres:18-alpine@sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873",
"paperless-redis": "redis:7-alpine@sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499"
},
"seed_after_undo": true,
"verdict": "proven",
"why": "TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back",
"drill_head_after": "396c0d16879d5a1b60d43680280f16c12669b716",
"drill_tree_equal_to_before": true,
"log": [
"02:16:29 [5] the box's drill mirror now at c760fca93",
"02:16:34 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['PAPERLESS_ADMIN_PASSWORD', 'HDD_PATH']",
"02:16:34 [1] deploy -> 202 {'ok': True, 'message': 'Telep\u00edt\u00e9s elind\u00edtva \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}",
"02:18:44 [1] deployed, controller state=running, pinned={'paperless-postgres': 'postgres:18-alpine', 'paperless-redis': 'redis:7-alpine', 'paperless-webserver': 'ghcr.io/paperless-ngx/paperless-ngx:2.20.15'}",
"02:18:54 paperless-webserver: createsuperuser :: Superuser created successfully.",
"02:19:03 paperless-webserver: seeded superuser drill615739",
"02:19:20 paperless-webserver: readback of the seeded account found=True",
"02:19:21 drill commit 69bb5d7dadc8: paperless-ngx TO with failing checks",
"02:19:30 [5] the box's drill mirror now at 69bb5d7da",
"02:19:34 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Friss\u00edt\u00e9s elindult \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}",
"02:19:34 + 0.0s phase=backing-up label=Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None",
"02:19:57 + 22.6s phase=safety-dump label=Adatb\u00e1zis pillanatk\u00e9p\u2026 err=None hold=None",
"02:20:00 + 25.6s phase=pulling label=\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026 err=None hold=None",
"02:21:26 + 111.7s phase=copying label=Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None",
"02:21:38 + 124.0s phase=starting label=Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026 err=None hold=None",
"02:21:49 + 134.3s phase=verifying label=M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026 err=None hold=None",
"02:26:52 + 437.4s phase=undoing label=Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026 err=None hold=None",
"02:27:50 + 495.8s phase=undone label=Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra err=None hold=None",
"02:28:42 paperless-webserver: readback of the seeded account found=True",
"02:28:42 RESULT proven \u2014 TO started on the data and failed its check; the box undid it: FROM runs again and the seed reads back",
"02:28:50 [X] stop -> 200 {'ok': True, 'message': 'Stack paperless-ngx stop completed'}",
"02:29:22 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'paperless-ngx', 'volumes_removed': ['paperless-ngx_paperless_data', 'paperless-ngx_paperless_postgres_data', 'paperless-ngx_pa",
"02:29:30 [X] after remove: deployed=False leftovers=''",
"02:29:40 [5] the box's drill mirror now at 396c0d168",
"02:29:40 drill revert 69bb5d7dadc8: rc=0",
"02:29:40 drill templates/paperless-ngx equal to before: True"
]
}