Integrity records for installed module files, kept in sealed storage.
cfw_module_file is SQL, so any PHP with a database write can plant a row that is mounted on
every boot. The record of what each row should hold lives in key-value storage, which the SQL
bridge cannot read or write, so a row with no record or a different digest is not trusted.
A record is path -> sha256 hex of the file's UTF-8 bytes, grouped per package in chunks of at
most MODSUM_CHUNK_BYTES under modsum:<package>:<index>. A Durable Object with SQLite
storage takes a key and value up to 2 MB combined, and a legacy key-value object 128 KiB
(developers.cloudflare.com/durable-objects/platform/limits), so 100 KiB fits both.
Integrity records for installed module files, kept in sealed storage.
cfw_module_fileis SQL, so any PHP with a database write can plant a row that is mounted on every boot. The record of what each row should hold lives in key-value storage, which the SQL bridge cannot read or write, so a row with no record or a different digest is not trusted.A record is
path -> sha256 hexof the file's UTF-8 bytes, grouped per package in chunks of at most MODSUM_CHUNK_BYTES undermodsum:<package>:<index>. A Durable Object with SQLite storage takes a key and value up to 2 MB combined, and a legacy key-value object 128 KiB (developers.cloudflare.com/durable-objects/platform/limits), so 100 KiB fits both.