You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(threat-model): add insurance pool specific risk analysis
Resolves#562
Added comprehensive threat model section covering insurance pool-specific risks:
- Premium Manipulation: Risk of admin-controlled premium rates without bounds
- Claim Fraud & Moral Hazard: Potential for collusion between members and payers
- Pool Drainage / Insolvency: Risk of insufficient reserves for claims
Includes attack scenarios, current mitigations, residual risk assessment, and
detailed recommendations for each threat (dynamic premium adjustment, claim
prioritization, reserve requirements, stop-loss mechanisms, reinsurance options).
Copy file name to clipboardExpand all lines: docs/threat-model.md
+116Lines changed: 116 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -531,6 +531,119 @@ Some token implementations allow partial transfers. If token transfers less than
531
531
532
532
---
533
533
534
+
### G. INSURANCE POOL SPECIFIC THREATS
535
+
536
+
#### G1. Premium Manipulation
537
+
538
+
**Description:**
539
+
The insurance pool allows members to deposit premiums. If premium calculations are incorrect or the admin can manipulate premium rates, members may overpay or underfund the pool.
540
+
541
+
**Attack Scenario:**
542
+
```
543
+
1. Admin calls update_premium_rate() with inflated rate (e.g. 50% instead of 5%)
544
+
2. Members attempting to enroll see high premium cost
545
+
3. Members are priced out of insurance
546
+
4. Pool remains underfunded or fills slowly
547
+
5. When claims occur, pool cannot cover losses
548
+
```
549
+
550
+
**Current Mitigation:**
551
+
- ✅ **Configurable Parameters:** Premium rates are set via governance (admin-controlled)
- ✅ **Enrollment Validation:** Members must explicitly approve premium amounts
554
+
555
+
**Residual Risk:** ⚠️ **MEDIUM**
556
+
- Admin can unilaterally set premium rates
557
+
- No bounds checking on premium_rate_bps (could be set to 100%+ of pool coverage)
558
+
- Members may not understand premium mechanics (off-chain communication required)
559
+
- No automatic premium rate discovery mechanism (rates are hardcoded by admin)
560
+
561
+
**Recommendation:**
562
+
- Add parameter bounds: `premium_rate_bps` should be capped at reasonable % (e.g., <= 1000 bps or 10%)
563
+
- Document premium model and member communication (expected rates, annual yield)
564
+
- Consider gradual premium increases (no step changes > 100 bps per update)
565
+
- Monitor enrollment trends for drop-offs after rate increases
566
+
567
+
#### G2. Claim Fraud & Moral Hazard
568
+
569
+
**Description:**
570
+
Members can submit claims on defaults. Without proper verification, a member could coordinate with a payer to fraudulently claim insurance (moral hazard attack).
571
+
572
+
**Attack Scenario:**
573
+
```
574
+
1. Member A and Payer B collude
575
+
2. Member A submits invoice to Payer B (high amount, reasonable terms)
576
+
3. Member A and Payer B stage a default (Payer B intentionally doesn't pay)
577
+
4. Member A claims insurance for full invoice amount
578
+
5. Pool pays out fraudulent claim
579
+
6. Payer B and Member A split the payout off-chain
580
+
```
581
+
582
+
**Current Mitigation:**
583
+
- ✅ **Enrollment Verification:** Pool can verify member address and require KYC (off-chain)
584
+
- ✅ **Invoice History:** Claims are tied to actual invoice_liquidity defaults (immutable on-chain)
585
+
- ✅ **Admin Review:** Admin can investigate claims and contest fraud
586
+
- ✅ **Payer Reputation:** Payers with low default history are less incentivized to stage defaults
587
+
588
+
**Residual Risk:** ⚠️ **HIGH**
589
+
- No cryptographic proof of member legitimacy or payer creditworthiness
590
+
- Admin review is manual and subjective
591
+
- Repeated small defaults by same payer pair may not be detected
592
+
- Pool does not validate that invoice terms are "reasonable" (collusion incentives opaque)
593
+
594
+
**Recommendation:**
595
+
-**Implement Claims Adjudication:** Require admin or DAO multi-sig approval for large claims (> threshold)
596
+
-**Fraud Detection:** Monitor for patterns:
597
+
- Same member + same payer submitting multiple defaults in short window
598
+
- Member submitting claims shortly after enrollment
599
+
- Payer default rate >> average default rate in system
600
+
-**Claim Dispute Window:** Allow community to dispute claims for X days before payout
601
+
-**Proof of Loss:** Require evidence (invoice, evidence of payment attempt) off-chain
602
+
-**KYC for High-Value Claims:** Require identity verification for claims > pool balance threshold
603
+
604
+
#### G3. Pool Drainage / Insolvency Risk
605
+
606
+
**Description:**
607
+
The pool accepts claims up to enrolled capacity. If claim frequency exceeds projections, the pool may become insolvent and unable to cover all claims.
608
+
609
+
**Attack Scenario:**
610
+
```
611
+
1. Pool enrolls $10M in coverage with $1M premiums
612
+
2. Unexpectedly high default rate in ILN network (10% vs expected 2%)
613
+
3. Members submit $2M in claims in one week
614
+
4. Pool only has $1M in premiums + interest ($100k) = $1.1M available
615
+
5. Pool is insolvent; claims are partially paid or stuck in queue
616
+
6. Later claims are rejected due to insufficient funds
617
+
```
618
+
619
+
**Current Mitigation:**
620
+
- ✅ **Capacity Tracking:** Pool tracks total coverage committed and premium collected
621
+
- ✅ **Funding Mechanism:** Premiums accumulate in pool for payout reserves
622
+
- ✅ **Admin Oversight:** Admin can pause claims or enroll new members if capacity is exceeded
623
+
- ✅ **Transparent Reserves:** On-chain balance is queryable (members can check solvency)
624
+
625
+
**Residual Risk:** ⚠️ **HIGH**
626
+
- No automatic trigger to halt enrollment if claims exceed safe reserves
627
+
- Premium rates may be too low to cover expected default rates
628
+
- Pool has no reinsurance mechanism (no capital backstop)
629
+
- Economic incentives misaligned: member wants low premiums, pool needs high premiums for safety
630
+
- No automatic claim rejection or payout reduction if pool depletes
631
+
632
+
**Recommendation:**
633
+
-**Dynamic Premium Adjustment:** Link premium_rate_bps to pool utilization ratio:
634
+
- If utilization > 80%, increase premiums 10-20% automatically
635
+
- If utilization < 20%, decrease premiums to attract members
0 commit comments