Hi Timothy,

Thanks a lot for the corrections. I have added them to the document, and I expanded the list of recommendations for Monotone. More comments below.

Availability
        Anyone with write access can kill the server by sending
        invalid data. Most of our error checking is similar to
        "if (error) { complain(); die(); }".

        A network read error (say, unplugging the client's network
        cable) used to also kill the server in this manner, I don't
        know if that's been fixed.

Ouch! Hopefully it's not too hard to change this to:

if (error) {
        if (server) stop_processing();
        if (client) { complain(); die(); }
}


Outsiders without privileges
        "If an attacker manages to insert a new RSA key into the
        database"... commits with that key will be ignored *IF* everyone
        is using custom get_revision_cert_trust hooks. If anyone uses
        the default hook, they'll only notice if they're paying
        attention. Keys are transferred whenever needed to validate a
        cert that's also being transferred.

        This should improve in the future, but there's no timeline for
        it.

Is it possible to write a custom get_revision_cert_trust hook that makes a lot of noise when it finds a key that it doesn't know about?

MTN: WARNING! Unrecognized key in the server:
MTN:
MTN: [EMAIL PROTECTED] bc552a65085e0e55472b91a2c169af76ce7b1a62



Malicious developers
        "Encumbrance pollution attack"
                Our solution includes "everyone delete your database",
                does this really count as being able to resist such
                attackts? About the only problem you *won't* have is
                independent revisions changing their names the way some
                centralized systems could potentially change revision
                numbers.

Is it really that bad? Can't people make a new database like the article suggests?

mtn db kill_rev_locally <rev-id>
mtn db init --db=new_db.mtn
mtn serve --db=old_db.mtn
mtn --db=new_db.mtn pull localhost 'net.example*'
<kill mtn serve>
mv new_db.mtn old_db.mtn



Daniel.


_______________________________________________
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel

Reply via email to