{
 "product": "Offline verifiers (NULLIUS)",
 "slug": "offline-verifiers",
 "base": "https://cainstudio.online",
 "page": "https://cainstudio.online/top25-offline-verifiers.html",
 "claims": [
  {
   "id": "C01",
   "kind": "attack",
   "claim": "Ledger: latest record with its verdict edited to NOT_VERIFIED -> Changing any signed field breaks the record hash and signature.",
   "requests": [
    {
     "method": "GET",
     "url": "/keystone/runs/latest"
    },
    {
     "method": "POST",
     "url": "/keystone/verify",
     "body": {
      "record": "${0.record}"
     },
     "set": {
      "record.verdict": "NOT_VERIFIED"
     }
    }
   ],
   "path": "valid",
   "expect": [
    false
   ]
  },
  {
   "id": "C02",
   "kind": "attack",
   "claim": "Receipt with decision flipped to ALLOW on a DENY -> The signature covers the decision.",
   "requests": [
    {
     "method": "POST",
     "url": "/codeguard-keystone/check",
     "body": {
      "action": {
       "tool": "Bash",
       "cwd": "/",
       "command": "rm -rf ~"
      }
     }
    },
    {
     "method": "POST",
     "url": "/codeguard-keystone/verify-receipt",
     "body": {
      "receipt": "${0.receipt}"
     },
     "set": {
      "receipt.decision": "ALLOW"
     }
    }
   ],
   "path": "valid",
   "expect": [
    false
   ]
  },
  {
   "id": "C03",
   "kind": "attack",
   "claim": "Edit an event after sealing -> Changing one event changes its hash and the root.",
   "requests": [
    {
     "method": "POST",
     "url": "/recorder-keystone/recordings",
     "body": {
      "agent": "lab-agent",
      "title": "attack lab"
     }
    },
    {
     "method": "POST",
     "url": "/recorder-keystone/recordings/${0.id}/events",
     "body": {
      "name": "tool.call",
      "attributes": {
       "tool": "refund"
      },
      "payload": {
       "order": 1182
      }
     }
    },
    {
     "method": "POST",
     "url": "/recorder-keystone/recordings/${0.id}/seal",
     "body": {}
    },
    {
     "method": "GET",
     "url": "/recorder-keystone/recordings/${0.id}"
    },
    {
     "method": "POST",
     "url": "/recorder-keystone/verify",
     "body": {
      "recording": "${3..}"
     },
     "set": {
      "recording.events.0.name": "tool.read"
     }
    }
   ],
   "path": "valid",
   "expect": [
    false
   ]
  },
  {
   "id": "C04",
   "kind": "attack",
   "claim": "Digest changed -> The quorum signed this digest, not yours.",
   "requests": [
    {
     "method": "GET",
     "url": "/verify-yourself-receipt.json"
    },
    {
     "method": "POST",
     "url": "/api/v1/quorum/verify",
     "body": {
      "receipt": "${0..}"
     },
     "set": {
      "receipt.digest": "0000000000000000000000000000000000000000000000000000000000000000"
     }
    }
   ],
   "path": "verdict",
   "expect": [
    "NOT_VERIFIED"
   ]
  },
  {
   "id": "C05",
   "kind": "control",
   "claim": "KEYSTONE ledger chain re-verifies -> The whole hash chain, live.",
   "requests": [
    {
     "method": "GET",
     "url": "/keystone/ledger/verify"
    }
   ],
   "path": "valid",
   "expect": [
    true
   ]
  }
 ]
}