• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: SVC-3243
Type: Bug Bug
Status: Resolved Resolved
Resolution: Won't Finish
Priority: Normal Normal
Assignee: kelly linden
Reporter: Periapse Linden
Votes: 0
Watchers: 3
Operations

If you were logged in you would be able to see more operations.
2. Second Life Service - SVC

http-in beta: "DOS" for http-in functionality

Created: 15/Oct/08 10:27 AM   Updated: 14/Jan/09 02:51 PM
Return to search
Component/s: None
Affects Version/s: None
Fix Version/s: None

Issue Links:
Relates
 


 Description  « Hide
A malicious user can gobble up all available urls, breaking further http-in on that parcel. Only requirement is that the parcel allow rezzing and scripting.

This is likely to be an issue in sandboxes, maybe even during this beta.



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Periapse Linden added a comment - 15/Oct/08 10:28 AM
From Roberto Salubrius:
lets say I have a vendor on my store that allows people to rez things with a very simple script they could render my objects
useless, just by adding this script:

default
{
state_entry()

{ llRequestURL(); }

http_request(key id, string method, string body)
{

if(method != URL_REQUEST_GRANTED)

{ llOwnerSay("no url"); llRequestURL(); }

if (method == URL_REQUEST_GRANTED)

{ llOwnerSay("URL: " + body); llOwnerSay((string)llGetFreeURLs()); llRequestURL(); }

}
}

now I tought about solutions and the best solution I have seen so far is to add a parcel flag that would allow other residents
to open URLS. so they can rez object but not create URLS. just a tought. and basically with a few of those scripts I rendered
the llhttp part useless on the sim... in the case of a sandbox for an example.

that or maybe co-relate the number of open URLS per sim per owner ?


Periapse Linden made changes - 15/Oct/08 10:30 AM
Field Original Value New Value
Description A malicious user can gobble up all your urls, breaking your http-in based vendor. Only requirement is that your parcel allow rezzing and scripting. A malicious user can gobble up all available urls, breaking further http-in on that parcel. Only requirement is that the parcel allow rezzing and scripting.

This is likely to be an issue in sandboxes, maybe even during this beta.
Periapse Linden made changes - 15/Oct/08 10:31 AM
Link This issue Relates to SVC-3238 [ SVC-3238 ]
Darien Caldwell added a comment - 15/Oct/08 01:22 PM - edited
I'm wondering if it may make more sense for people who are visiting a parcel to be limited to their own 38 'personal' urls, even if they come from their own rezzed objects. This would prevent this kind of problem.

Perhaps group membership for the land group could then give access to the full parcel URL pool to others. Just a thought.

But on second thought, if you have build on, you also run the risk of someone filling your parcel with prims. so if you are willing to risk that, it seems you should be open to the risk someone uses all your URLs too.

This has given me another idea for a suggestion I'm going to open.


baron nowhere added a comment - 15/Oct/08 04:02 PM
In the case above, there is a difficult balance between the rights of users WEARING or REZZING objects, and the rights of land owners. Maybe the system should give preference to HTTP_IN servers by age. Where oldest URL_REQUEST is always the highest priority.

Another suggestion, is that since the prim http server can support incoming GET and PUT - I wouldn't mind if the server could only get a single URL that matches the prim UID. you could always send in arguments via GET and design a robust web site inside of your object with a single URL per prim.

Issues like this are going to be the key issue for Kelly to manage, as the demonstration for resource management. I don't have a perfect answer here, but Kelly already talks about other avenues for DOS too on this page:

http://wiki.secondlife.com/wiki/LSL_http_server/design

I think a core goal should be for the transaction to be reliable and provide a clear code upon failure for the external source to re-try.

QUOTE:
We currently have 2 XMLRPC servers each processing about 30-40 concurrent requests.
I don't know the actual rate of requests, but I do know that we start failing at ~150
concurrent requests (out of a theoretical max of 200) per server, or ~300 total.
Kelly Linden 12:52, 14 May 2008 (PDT)


destiny niles made changes - 18/Oct/08 07:52 PM
Link This issue is related to by SVC-3245 [ SVC-3245 ]
kelly linden added a comment - 19/Oct/08 11:02 AM
People can "DOS" available prims in that case too. So you have to do cleanup. My opinion is that what is missing is not limits per avatar or group, but better reporting on who and what is using urls, such as SVC-3245 so that cleanup can be done.

Implementing per avatar/group/category limits on urls is I think a feature request in the same vein as doing it for prims. It would be a nice feature, but it is a feature request, and not strictly required. And it shouldn't be done without also doing it for prims.


Sue Linden made changes - 13/Nov/08 12:06 PM
Workflow jira-2007-12-22a [ 60456 ] jira-2008-11-14 [ 81441 ]
Sue Linden made changes - 13/Nov/08 04:34 PM
Workflow jira-2008-11-14 [ 81441 ] jira-2008-11-14a [ 88260 ]
Sue Linden made changes - 13/Nov/08 04:58 PM
Workflow jira-2008-11-14 [ 88260 ] jira-2008-11-14a [ 96348 ]
Thomas Shikami added a comment - 20/Nov/08 10:29 PM
I just wonder, what happens if an attachment that has an URL is dropped on a parcel that has all slots used up? Will the parcel be overused just like rezzed temp objects that are turned into permanent then?

Siann Beck added a comment - 24/Nov/08 06:23 AM - edited
I'll confess I've been unable to attend a few office hours lately, so perhaps this has been discussed and resolved, but no one I've discussed it with has been able to come up with a use case for more than one URL per prim. I just don't see a need for it, as data can be passed in the request to designate where/how it's handled.

The DOS potential extends beyond public sandboxes, where it is certain to be a problem. Since the URL pool is sim-wide, all a griefer has to do is find one parcel with build and scripting enabled, and s/he can block new URLs for the whole sim.

If someone can come up with a strong use case for multiple URLs, I'd be interested to hear it; otherwise I think URLs should be limited to 1 per prim; I'd even go so far as to limit it to one per object.

Edit: Apparently this has been changed, so that URLs are divided among parcels, according to prim limits. This is good, but just means that griefers will be limited to one parcel at a time. It still has tremendous griefer potential.


Darien Caldwell added a comment - 14/Jan/09 09:24 AM
One use for multiple urls is to provide services to multiple clients on a volatile basis. You assign each client (and by client I mean user) their own URL access to the service, for the duration of it's use. When their use is up, you remove their URL. If it was a common URL, you couldn't do this without removing access to all other clients. Having multiple, disposable URLs is very useful for this application, as active clients can continue to use their URL without it changing every time someone else's access is terminated.

I'm sure I could come up with other scenarios where multiple URLs were useful, but really, it isn't useful for this discussion. The grief potential is incredibly small, as I have already outlined above. Nobody can force an item onto your parcel that you can't remove.


Siann Beck added a comment - 14/Jan/09 09:44 AM
I understand what you're saying, but that could be done just as well with URL+key, and expire the key. I don't think the grief potential is small. I could be wrong, but griefers can be very creative. I guess we'll see!

Darien Caldwell added a comment - 14/Jan/09 01:07 PM
Well, I could be wrong, but must griefers I've met seem to enjoy causing people emotional upset and getting a reaction. This is something more easily achived through screaming boxes, lagging sims, and littering sims with nasty floating particles. Somehow I don't think "haha, I iz uzing yur URLZ!" is going to get much of a reaction out of most people. But yes, we will see.

Periapse Linden added a comment - 14/Jan/09 01:37 PM
Siann, Darien – thanks for the discussion. I'm going to ask Kelly to have one last look at this issue, but I think we're going to resolve it as a feature request that we just don't see the need for at present. I agree with Kelly's earlier statement that URL overloading should be treated the same as primcount overloading.

As for griefing potential, yeah, I can see that sandboxes might be stricken, but anyone who really needs to test their http-in code has options besides agni sandboxes (including going out to aditi).


kelly linden added a comment - 14/Jan/09 02:00 PM
There are use cases for multiple urls:
  • Different urls for different scripts. More efficient and easier to manage conceptually than a url handling script that routed messages via linkmessage or chat.
  • Different urls for different users.
  • Different urls for different services
  • Different urls for different levels of access

Yes, it is probably possible to work around a single url on a prim for these cases but given the general resource constraints on scripts (memory size and cpu cycles) simplifying things in this way does actually make some things possible that would have been so cumbersome otherwise as to have been essentially impossible.

Additionally this is a test case for the concept of allocating resources to pools based on land ownership in a region, something we are considering expanding to other resources.

If you attempt to rez or drop an object onto a parcel that can not support the number of urls the object is using then the object will not be rezed, or will be returned in the case of dropping. As such the parcel will not go over limit.

If an object is already on a parcel and attempts to request more urls than are available the request will be denied and no urls granted.

The only time objects can possibly get returned is when someone owns multiple parcels and sells one such that after the sale one of the parcel owners (the old owner or new owner) has too many urls being used. In all other cases we simply prevent the actions that would cause you to go over limit.


kelly linden added a comment - 14/Jan/09 02:04 PM
We do need better tools for better information on resource usage, however this is no more a DOS attack vector than simply rezing enough prims to fill a parcel. The same tools we already have for combating that (object return, banning or limiting access to the parcel) will work for this situation as well.

kelly linden made changes - 14/Jan/09 02:04 PM
Status Open [ 1 ] Resolved [ 5 ]
Resolution Misfiled [ 6 ]
Assignee kelly linden [ kelly linden ]
kelly linden made changes - 14/Jan/09 02:17 PM
Status Resolved [ 5 ] Resolved [ 5 ]
Resolution Misfiled [ 6 ] Won't Finish [ 2 ]
Periapse Linden made changes - 14/Jan/09 02:50 PM
Link This issue is related to by SVC-3238 [ SVC-3238 ]
Periapse Linden made changes - 14/Jan/09 02:51 PM
Link This issue Relates to SVC-3238 [ SVC-3238 ]