mirror of
https://github.com/BigBodyCobain/Shadowbroker.git
synced 2026-06-08 15:23:54 +02:00
107 lines
3.9 KiB
JSON
107 lines
3.9 KiB
JSON
{
|
|
"_comment": "Fault-injection vectors — corrupted/downgraded/tier-spoofed/replayed messages for test_fault_injection.py",
|
|
"corrupted_ciphertext": {
|
|
"category": "corruption",
|
|
"description": "Bit-flip in MLS ciphertext; decrypt must fail cleanly without panic",
|
|
"gate_id": "finance",
|
|
"mutation": "flip_byte_0"
|
|
},
|
|
"truncated_ciphertext": {
|
|
"category": "corruption",
|
|
"description": "Ciphertext truncated to 16 bytes; decrypt must fail cleanly",
|
|
"gate_id": "finance",
|
|
"mutation": "truncate_16"
|
|
},
|
|
"empty_ciphertext": {
|
|
"category": "corruption",
|
|
"description": "Empty ciphertext string; schema validation must reject",
|
|
"gate_id": "finance",
|
|
"mutation": "empty"
|
|
},
|
|
"oversized_ciphertext": {
|
|
"category": "corruption",
|
|
"description": "Ciphertext exceeding reasonable bounds; should be rejected before MLS",
|
|
"gate_id": "finance",
|
|
"mutation": "oversized_1mb"
|
|
},
|
|
"wrong_epoch_ciphertext": {
|
|
"category": "replay",
|
|
"description": "Ciphertext from epoch N sent with epoch N+1 header; epoch binding must reject",
|
|
"gate_id": "finance",
|
|
"mutation": "epoch_mismatch"
|
|
},
|
|
"replayed_event_id": {
|
|
"category": "replay",
|
|
"description": "Same event_id submitted twice; replay filter must reject",
|
|
"event_type": "message",
|
|
"mutation": "duplicate_event_id"
|
|
},
|
|
"sequence_rollback": {
|
|
"category": "replay",
|
|
"description": "Event with sequence < last seen for same node; must be rejected",
|
|
"event_type": "message",
|
|
"mutation": "sequence_decrease"
|
|
},
|
|
"format_downgrade_gate": {
|
|
"category": "downgrade",
|
|
"description": "Gate message with format=legacy_cleartext; must be rejected by schema",
|
|
"gate_id": "finance",
|
|
"format": "legacy_cleartext"
|
|
},
|
|
"format_downgrade_dm": {
|
|
"category": "downgrade",
|
|
"description": "DM with format=dm1 when MLS lock is active; must be hard-failed",
|
|
"format": "dm1"
|
|
},
|
|
"tier_spoof_private_to_public": {
|
|
"category": "tier_spoof",
|
|
"description": "Envelope claiming private_strong when supervisor reports public_degraded; must be clamped",
|
|
"claimed_tier": "private_strong",
|
|
"actual_tier": "public_degraded",
|
|
"expected_clamped_tier": "public_degraded"
|
|
},
|
|
"tier_spoof_private_transitional_to_strong": {
|
|
"category": "tier_spoof",
|
|
"description": "Envelope claiming private_strong when only transitional is available; must be clamped",
|
|
"claimed_tier": "private_strong",
|
|
"actual_tier": "private_transitional",
|
|
"expected_clamped_tier": "private_transitional"
|
|
},
|
|
"forbidden_field_injection_ip": {
|
|
"category": "field_injection",
|
|
"description": "Public ledger event with ip_address field; must be rejected",
|
|
"event_type": "message",
|
|
"injected_field": "ip_address",
|
|
"injected_value": "10.0.0.1"
|
|
},
|
|
"forbidden_field_injection_transport": {
|
|
"category": "field_injection",
|
|
"description": "Public ledger event with transport_lock field; must be rejected",
|
|
"event_type": "message",
|
|
"injected_field": "transport_lock",
|
|
"injected_value": "meshtastic"
|
|
},
|
|
"forbidden_field_injection_secret": {
|
|
"category": "field_injection",
|
|
"description": "Public ledger event with session_key field; must be rejected by validate_public_ledger_payload",
|
|
"event_type": "message",
|
|
"injected_field": "session_key",
|
|
"injected_value": "s3cret"
|
|
},
|
|
"invalid_signature_on_event": {
|
|
"category": "integrity",
|
|
"description": "Valid event with corrupted signature; must fail strict signature verification",
|
|
"mutation": "corrupt_signature"
|
|
},
|
|
"node_id_binding_mismatch": {
|
|
"category": "integrity",
|
|
"description": "Event where node_id does not match SHA-256(public_key); must be rejected",
|
|
"mutation": "wrong_node_id"
|
|
},
|
|
"revoked_key_event": {
|
|
"category": "integrity",
|
|
"description": "Event signed by a revoked key; must be rejected for all types except key_revoke",
|
|
"mutation": "use_revoked_key"
|
|
}
|
|
}
|