Files
chimera-gfx-Public/docs/runtime/phase-0.9d-readback-feasibility.md
Chimera GFX release export a6037502d7
phase0-ci / build-and-audit (push) Successful in 2m14s
Publish Chimera GFX source
2026-09-03 03:27:14 +02:00

6.6 KiB

Phase 0.9D existing-stack readback feasibility

Date: 2026-07-18 Decision: BLOCKED_NO_READBACK_PATH

Route search, in required order

Order Candidate Source result Binary framing Short-read / EOF / size Decision
1 Payload Manager download no endpoint exists absent absent ABSENT
2 Payload Manager file read internal reads are not returned to HTTP client absent absent ABSENT
3 elfldr response or host pipe controlled route returns fixed status text and disables payload stdio; legacy stdio requires a payload process no file protocol no file completeness contract rejected
4 exploit host README sends host-to-PS5; implementation absent no reverse framing unproven rejected
5 browser/USB host browser uploads toward PS5; USB move writes device storage reverse direction or mutating no host-copy contract rejected
6 repository tools deploy scripts send through port 9021 only no reverse framing absent rejected
7 no route all audited paths exhausted selected

Hardened elfldr socksrv.c:288-375 sends only rejection, error, or Controlled payload exited status. The payload data is discarded after loading and controlled stdio is -1. Controlled Manager verified_launcher.c:31-184 verifies and sends a descriptor to elfldr and then closes; ps5_launcher.c:18-69 exposes connect/send/close only. Neither side contains a receive path for component bytes.

Flag semantics

server_active_flag

  • Declaration and initial value: static volatile integer initialized to zero, src/log_server.c:20-23.
  • Sole writer: log_server_set_active() assigns one.
  • Sole reader: pldmgr_server_is_active(), used by src/autoload.c:101 only to suppress fallback notification behavior while a browser/server request has occurred.
  • Reset: none in the process.
  • Lifetime: process-local; it cannot persist as this variable after process exit or reboot. Exact manager process lifetime on hardware is unobserved.
  • No source path connects it to filesystem writes, autoload enablement, payload launch, request authorization, shutdown, or boot configuration.
  • Disconnect does not reset it; a crash/process exit destroys the process state.

Classification: LOW_VOLATILE, not ANTI_BRICK_CRITICAL. Because there is no reset semantic within the running process, any otherwise observational route remains PARTIAL and a future permission must explicitly accept this effect, log-ring changes, connection state, buffers, sockets, and counters.

autoload_triggered

  • Declaration/initial value: static volatile integer zero, src/autoload.c:31.
  • Writers: pldmgr_autoload_get_status() sets one (:45); pldmgr_autoload_reset() sets zero (:235).
  • Readers: autoload worker wait logic at :82-86.
  • /autoload_status calls the mutating getter before building its response (src/http_server.c:1037-1041).
  • Reset is explicit clear/resume logic, not disconnect cleanup.
  • It is process-local, but can change worker timing and therefore launch behavior while that process exists.

Classification: HIGH_FUNCTIONAL. /autoload_status is excluded from Windows 1 and 2. The later duplicate route at http_server.c:1104-1111 is unreachable because the first identical comparison already matches.

Path inventory

Literal path Source Meaning Live status Evidence
/data/pldmgr controlled Manager include/pldmgr.h:8 base device directory configured default only source literal
/data/pldmgr/payloads same :12 payload storage configured default only source literal
/data/pldmgr/autoload.txt same :9 Manager autoload list configured default only source literal
/data/pldmgr/pldmgr_config.txt same :10 Manager config configured default only source literal
/data/pldmgr/repository_cache.json same :11 repository cache configured default only source literal
/data/pldmgr/sources.json same :14 repository sources configured default only source literal
/mnt/usb0/pldmgr/mnt/usb7/pldmgr payload_mgr.c:201-218 USB scan roots possible source directories source literal/pattern
/data/pldmgr/payloads/chimera-controlled controlled Manager source/profile controlled staging directory explicitly not installed offline candidate only
/data/pldmgr/payloads/elfldr/elfldr_v0.23.elf historical Phase-0.6 manifest/tool input stock identity reference not runtime-observed reference_only
/data/pldmgr/payloads/pldmgr/pldmgr_v0.3.1.elf historical Phase-0.6 manifest/tool input stock identity reference not runtime-observed reference_only
/data/payload.elf elfldr README example generic manual launch example not a current mapping documentation example
/user/temp/payload_<pid>.self elfldr self-loader source temporary converted image runtime-generated, not component live path source template
/system/vsh/app/NPXS40112/eboot.bin elfldr bootstrap source injection victim executable not an elfldr installation path source literal

No audited input binds an actual live elfldr or Manager object to a current path. The package/reference paths and configured defaults therefore produce PATH_CONFLICT; no future readback window may guess.

Readback decision matrix

  • NEW_OBSERVER_FEASIBILITY: BLOCKED
  • EXISTING_STACK_MANUAL_FACT_COLLECTION: PARTIAL
  • EXISTING_STACK_SINGLE_READBACK: BLOCKED_NO_READBACK_PATH
  • EXISTING_STACK_REPEAT_READBACK: BLOCKED
  • ELFLDR_INDEPENDENT_RECOVERY: PARTIAL
  • PAYLOAD_MANAGER_INDEPENDENT_RECOVERY: PARTIAL
  • SIDE_BY_SIDE_FEASIBILITY: BLOCKED
  • DEVICE_WRITE: NOT_AUTHORIZED
  • TARGET_EXECUTION: NOT_AUTHORIZED
  • INSTALLATION: NOT_AUTHORIZED

There is no possible first readback component: the component-risk order cannot override an absent transport. A missing metadata query would merely reduce a copy to SOURCE_MAPPING_PARTIAL; here the earlier condition—getting complete binary bytes—already fails.

A future read-only request could reasonably entail sockets, temporary buffers, heap allocation, connection/request counters, scheduler activity, cache or atime effects, audit/process/network accounting, stdout logging, ring logging, and a process-local server_active_flag=1. These effects are not claimed absent. They are acceptable only if the chosen route has no device-file write, launch, autoload, service, or persistent configuration effect and the artifact-specific permission names them.

No such permission is requested in Phase 0.9D.