Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

All known fault vectors accounted for, w/ system test per fault #284

Closed
11 of 26 tasks
trentmc opened this issue May 13, 2016 · 4 comments
Closed
11 of 26 tasks

All known fault vectors accounted for, w/ system test per fault #284

trentmc opened this issue May 13, 2016 · 4 comments
Assignees

Comments

@trentmc
Copy link
Contributor

trentmc commented May 13, 2016

Abstract

BigchainDB is built on RethinkDB / MongoDB, which is tolerant to (most) crash faults but not malicious faults. The aim of this project is to identify all fault vectors, identify which ones really matter in practical scenarios, then engineer solutions for them.

Motivation

For production usage, BigchainDB needs to be resilient to all crash and malicious faults (within reason, i.e. that have high impact if they happen and high probability of happening).

Goals

  • Identify & document faults
  • For each fault:
    • Write a system test to expose it
    • Design & implement a solution that passes the test

Challenges

  • Backend DB has no notion of a federation; we have to add that somehow
  • We won't be able to be 100% thorough so this project will be followed by a 3rd party security audit (3rd party security audit, and fixes #292)

Tools to help / ideas

(WIP - spread across many places)

  • Changefeed to catch deletes, etc. (Note added later: this doesn't work, because during the window when the block or whatever is gone from RethinkDB, otherwise invalid transactions [such as double spends] might be valid. The only solution is to prevent deletes [and similar bad things] before they happen.)
  • Snapshotting / continuous backups (Support snapshots / archival backup #283)
  • Make backend DB require signatures?
  • Use a firewall or intrusion detection system that inspects IP packets, checks backend DB wire protocol messages, and block certain actions at that level. Note: this is a big project and got its own issue: Wire protocol firewall #594

Tasks

(label == topic: SEC core consensus) and (label != Project-Issue) and (not already in Project Issue #199)

@sohkai
Copy link
Contributor

sohkai commented Aug 29, 2016

@ttmc I think we should create a milestone around this to group things, and this can be the milestone header issue (since milestones themselves really suck at presenting info).

@ttmc
Copy link
Contributor

ttmc commented Aug 30, 2016

We don't really use milestones. "Project" issues with check-boxed lists of issues already have a nice UI on GitHub, with an auto-generated "3 out of 11" progress bar etc.

@sohkai
Copy link
Contributor

sohkai commented Aug 30, 2016

The only thing I'm not particularly happy about with "Project" issues is that you have to keep updating the project issue if other issues are created after. It's kind of a pain to keep having to remember which issue to link it back to, and then making sure you add it there.

This is necessary when there's cross-repo projects, but for BigchainDB, I don't find it particularly helpful.

@ttmc
Copy link
Contributor

ttmc commented Aug 30, 2016

I don't think it's so awful to remember the "Project" issue you're working on. It's on the wall in the conference room. If you can't get into the conference room to look, then GitHub also automatically says when two issues are linked via mentions.

@ttmc ttmc removed the when: Later label Nov 4, 2016
@ttmc ttmc mentioned this issue Oct 8, 2017
17 tasks
@vrde vrde closed this as completed Mar 13, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants