[cosmo-dev] options to fix security hole

Jeffrey Harris jeffrey at osafoundation.org
Wed Feb 6 15:09:48 PST 2008


Hi Randy,

> I'm leaning more towards option B, and although it will require some 
> desktop work, it will prevent a lot of hassle down the road.
> 
> Thoughts?  Other ideas?  Do I see an option C?

Travis and I talked about this a little while today.  Let me see if what 
I'm thinking (based on what Sam Halliday was suggesting on IRC 
yesterday) is what you're thinking:

There are collection tickets, and there are item tickets, each in edit 
or read-only flavors.

If I have an edit ticket to a collection, I can add/create items in that 
collection, but it doesn't automatically grant me edit access to all 
items in the collection.

Having edit access to a collection gives me access to that collection's 
"item-edit ticket list" (this implies item tickets are associated with 
one item, but potentially many collections).

If I have write access to collection A, I can create item Foo in it. 
When I do this, read-only and edit tickets are created for that item, 
call them ReadItemTicket1 and EditItemTicket1.  EditItemTicket1 is added 
to collection A's item-edit ticket list, and now anyone with edit access 
to collection A can edit Foo.

If I give Randy read-only access to collection A, he gets a read-only 
ticket for item Foo.  So if Randy has an edit ticket for collection B, 
he can add Foo to collection B with ReadItemTicket1, and ReadItemTicket1 
is then associated with collection B, but *not* EditItemTicket1, so 
other people with edit access to collection B can't edit Foo.

Does that match up with what you're suggesting?

------------------------

One possible option C would be to not bother with read-only item 
tickets.  If I know a UUID, I can always add it to a collection, I just 
don't get edit access to it.  This seems like a reasonable approach to 
me.  I think it might give a smoother transition for the desktop and 
morse code:  everything would continue to work, but behind the scenes 
when morse code added items to multiple collections, those items 
wouldn't be editable.

I think that might actually work reasonably well with existing Desktop 
code (although not perfectly) immediately if we made the server silently 
(or at least non-fatally) fail to process changes to read-only items. 
Existing desktop users would still change the item in question when they 
synced the read-write version, and they could still add items to new 
collections.

There'd definitely be problems; user's who didn't have read-write access 
through some collection wouldn't know they didn't have edit-access but 
think they did.  Still, this seems better than requiring all desktop 
clients to upgrade immediately.

Sincerely,
Jeffrey


More information about the cosmo-dev mailing list