Store, measured at rest
Recallspection ExactMemory
anchor beside the store on the same disk, the default the product ships
Recallspection ExactMemory was seeded through its own API and edited behind its back nine ways. 1 edits served as genuine, 0 reported on audit, 8 rejected on read, 0 not applicable.
- Measured on
- exactmemory.recallspection 3.2.0 at c62ef7a
- Date
- Source
- github.com/sciencedelicmetatech/exactmemory.recallspection
- Attack versions
- tamper@v1, truncate@v1, delete_middle@v1, reorder@v1, forge@v1, cross_replay@v1, rollback_replay@v1, metadata_tamper@v1, snapshot_rollback@v1
What this means
ExactMemory commits to its whole store with one MAC and gives every record a tag of its own inside it. An attacker who can write the store, but who holds neither key, cannot get a single record edit past the read path: the container MAC fails and the load refuses. What he can still do is put the whole store back to an earlier copy of itself. In this configuration the anchor holding the high-water mark sits beside the store on the same disk, so the rollback takes the anchor with it, the older store opens as current, and the newest genuine record is gone with no error. The row with the anchor moved off the store refuses that same rollback. One deployment choice separates them. The maintainer asked for this row to be published rather than the anchored one alone.
The 9 verdicts
Detection point: the read path. 8 of the nine edits were refused there, 1 served as genuine, 0 not applicable.
Level L3. What L3 means.
| Edit | Verdict | What the tool said |
|---|---|---|
| T1 Content tamper | rejected | detected on reload (TamperError: Container MAC failed) |
| T2 Tail truncation | rejected | detected on reload (TamperError: Container MAC failed) |
| T3 Middle deletion | rejected | detected on reload (TamperError: Container MAC failed) |
| T4 Reordering | rejected | detected on reload (TamperError: Container MAC failed) |
| T5 Forged insertion | rejected | detected on reload (TamperError: Container MAC failed) |
| T6 Cross-context replay | rejected | detected on reload (TamperError: Container MAC failed) |
| T7 Rollback replay | rejected | detected on reload (TamperError: Container MAC failed) |
| T8 Metadata tamper | rejected | detected on reload (TamperError: Container MAC failed) |
| T9 Snapshot rollback | accepted | the older copy opened as current; the newest genuine record is gone without an error |
Where the attacker stands
The attacker reads and writes the store directory, which here includes the anchor. He holds neither the container key nor the record keys, so he cannot forge either MAC.
Reproduce this row
Everything runs offline unless the store is a managed cloud service, in which case the row needs a project of your own. The run seeds a fresh store, applies each edit, confirms it landed, reopens the store and records what came back.
pip install agent-memory-integrity
git clone https://github.com/sciencedelicmetatech/exactmemory.recallspection
cd exactmemory.recallspection && git checkout c62ef7ada64928418a7e5d3251a6b65d005599b6
export AGMI_RECALLSPECTION_REPO=<that checkout>
python agmi/full_runner.py --json results/scorecard.json # every row, this one included
python -m agmi.agent --target recallspection-exact --families at-rest
Badge
Maintainers can link their row from their README. The badge points here and changes nothing on your side:
[](https://agentmemoryintegrity.org/stores/recallspection-exact.html)