• 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: VWR-2502
Type: New Feature New Feature
Status: Reopened Reopened
Priority: Normal Normal
Assignee: Soft Linden
Reporter: Dale Glass
Votes: 25
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
1. Second Life Viewer - VWR

Add mute button to script notices

Created: 17/Sep/07 09:59 AM   Updated: 10/Sep/09 10:46 AM
Return to search
Component/s: User Interface
Affects Version/s: 1.18.2.0
Fix Version/s: None

File Attachments: 1. Text File mute_button.patch (0.9 kB)
2. Text File permission_throttle.patch (2 kB)

Issue Links:
Duplicate
 
Relates

Last Triaged: 10/Sep/09 10:07 AM
Source Version: 1.18.2.0
Linden Lab Issue ID: SL-55202


 Description  « Hide
This patch adds a "Mute" button to the script notices, such as permissions request to animate the avatar.

This fixes an exploit where a script floods an avatar with requests, stealing focus and making it impossible to get rid of it.



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Corsi Mousehold added a comment - 17/Sep/07 10:02 AM
I honestly am not sure why this was not part of the programming for the request originally. But this will save ALOT of issues and help SL in general.

Mako Minogue added a comment - 17/Sep/07 10:14 AM
A change to the "MaxAnimationRequestQueueDepth" to be <= 3 would defang this particular DOS style attack at the source neatly.

Animation requests from griefer cubes can come in at a very high rate, 1-5+ per second if there are many cubes in the 96M range, and the animation request queue depth grows rapidly.

A lost legit new animation request with an existing request queue depth <= 3 would be a rare event and of no serious in game experience loss.

Requests > 3 should fail silently to keep things simple.

Thanks!
Mako


Gigs Taggart added a comment - 18/Sep/07 03:21 PM
I wrote a patch to throttle requests from a single task owner. If more than a certain number of requests in a row come from the same owner, then it silently drops them.

Gigs Taggart added a comment - 18/Sep/07 03:26 PM
I'd keep the limit high on this type of throttle. For example my "copycat" game will ask again if you deny it permission_debit, so I'd say keep this at least 10-20.

Gigs Taggart added a comment - 18/Sep/07 03:28 PM
I should also point out, my patch is complimentary with Dale's.. they aren't mutually exclusive, and both work to mitigate the attack in different ways. Dale's fixes the problem on a longer term basis, and mine obviates the need to relog after such an attack.

Mako Minogue added a comment - 18/Sep/07 06:49 PM
10-20 is far too high, as you will end up having to click 10-20 times when a griefer object is spamming you to death.

I suggest the queue depth default at 3, and then be configurable as a Debug Settings parameter for those who require a deeper queue capability.


WarKirby Magojiro added a comment - 19/Sep/07 07:17 AM
Mako. 3 is utterly stupid.

All the no buttons are at the same point. You just have to position your mouse over that point, and click 20 times. P{erhaps you have feeble hands, but I can easily click 20 times in under 3 seconds.


Soft Linden added a comment - 23/Sep/07 06:07 PM
3 is too low to be useful for the reason WarKirby points out. But War - try not to be so vicious about it.

Dale Glass added a comment - 23/Sep/07 06:26 PM
Actually I think 3 was a quite good number.

It seems people haven't actually read the patch What it does is ignore requests when more than 3 requests in sequence come from the same avatar. It's not 3 queued requests totals max, but 3 from the same avatar without requests from any other avatars in the middle. I don't see any good reason to allow the same avatar to send you 20 requests.

That said, the patch is also buggy. At first glance:

It declares a static char array, then doesn't initialize it, and uses strcmp on it. BAD!
It uses a char array. Why when there's LLString, and why even that when tracking by LLUUID is easier?
The count is a declared, but again not initialized. Very likely that the uninitialized value happens to be high, resulting in ignoring the first request after starting SL.

Not a bug but also not good: The count is for requests from the same avatar in a sequence, but no timestamp is kept. I think the count should reset after say, 20 seconds pass. This avoids requests sent by somebody while you're away from getting lost.


Soft Linden added a comment - 23/Sep/07 06:33 PM
Yes, I'm in the middle of redoing Gigs' patch. It's a great concept, but it would kill someone testing their own scripts without the sequence expiring.

There's an existing throttling mechanism that throttles based on the number of times an event happens attributed to an LLUUID each second. I'm refactoring that to work with arbitrary data types, and moving it from simulator code to llcommon, and I'm using this.


Nikki Claymore added a comment - 28/Sep/07 01:09 PM
it should be noted mute_button.patch does not work as implimented the line

gMuteListp->add(LLMute(cbdata->mItemID, cbdata->mObjectName, LLMute::OBJECT));

should be

gMuteListp->add(LLMute(cbdata->mTaskID, cbdata->mObjectName, LLMute::OBJECT));

ItemID refers to the key of the script TaskID refers to the key of the object containing the script.


WarKirby Magojiro added a comment - 16/Nov/07 05:52 AM
I can personally think of a reason why 3 wouldn't be enough. Objects need permission to attach to the avatar. I have plans for a transforming sull prim avatar, of sorts. The only feasible way top do it is to rez all the parts, and have them flood the owner with attach requests, so they can attach.

Perhaps some compromise, allowing a higher limit from objects you own. That would work.


Siro Mfume added a comment - 20/Nov/07 10:28 AM
How was the internal fix implemented? Any ideas on what the set point for throttling was? And how will this affect scripts that only direct their attention at the owner, wherein we need to be spammed for testing?

WarKirby Magojiro added a comment - 22/Nov/07 08:22 PM
oh. Another issue. ignoring only mass requests from one av, could lead to griefers using multiple accounts at the same time, much like multiple scripts are used to work around script delays.

WarKirby Magojiro added a comment - 05/Dec/07 04:23 PM
This issue is a central one in the whole blue dialog affair, yet it's rather hard to find. I've linked it to a few more similar issues, which should raise visibility.

WarKirby Magojiro added a comment - 22/Dec/07 01:09 PM
I've changed all fixed internally issues to Resolved: Fix pending.

Delerium Hannibal added a comment - 14/Jun/08 08:16 PM
This fix I assume went live, because it has already messed up me rezzing my own vendors. I get capped at 5 requests from objects, and any queued requests over 5 get blacklisted until I either log off or leave the sim and come back. No timer was put into place to un-blacklist. This is not a viable solution as we sometimes need to turn this security OFF. It's silly when a prim and script that I created and own gets blacklisted by my own client.

Al Sonic added a comment - 05/Jan/09 11:32 AM
Voted purely for the sake of a mute button, as I was spammed by blue box messages that had none, and very slowly the framerate dropped until I crashed. By the time I realized the messages were probably still piling on, it was too late to use the Mute dialog to perform a search for the troublesome avatar. Thus I suppose an absolute limit of held messages (64?) would be handy purely for the sake of stability. I crashed on a normally smoothly running system:

Second Life 1.22.4 (106127) Dec 16 2008 12:22:22 (Second Life Release Candidate)
CPU: Intel Core 2 Series Processor (2133 MHz)
Memory: 2047 MB
OS Version: Microsoft Windows XP Service Pack 2 (Build 2600)
Graphics Card Vendor: NVIDIA Corporation
Graphics Card: GeForce 7900 GS/PCI/SSE2
OpenGL Version: 2.1.2

I don't see the need to do really restrictive message throttling. 16 messages or so from any one outside agent allowed once every 30 seconds wouldn't even get annoying (or I'd mute it before it got to be). Then again I did get a score of 112 on http://www.urban75.com/Mag/java7.html Just for the sake of those who can't, Mute buttons could also kill all messages from the source (and if not that, then how about an Ignore All?).


Cheshyr Pontchartrain added a comment - 19/Jun/09 03:36 PM
Voted simply because Linden Lab has a responsibility to actually implement things they claim are fixed internally. If there is a good reason why this isn't, or it's made redundant by other changes, then please just let us know so we can close this issue.

Damen Hax added a comment - 19/Jun/09 04:00 PM
I could create an object to spam someone visiting a given sim, crashing them each time they arrive.
Literally nothing they can do about it.

I'd never do anything to risk loosing what I've created in SL, sadly this view is not shared by all.

Useless fixe aka they (if i can they can) will create a workaround;
-limiting by any number.
an army of bots is not difficult these days, I foresee someone charging for the service of their army of short lived alts

Only Valid fix;
-Mute entire UUID, period.
no requests.. nothing. if(UUID_MUTED == TRUE){return;

Another Issue closely related;
-Deeding to group allowing partial anonymity
We'd need a way for UUID_MUTED to recognize 'who' deeded the object to any given group.


Soft Linden added a comment - 19/Jun/09 06:41 PM
Reopening. We had this for a while, and it looks like it got stomped on by the notifications rework.

Ezian Ecksol added a comment - 25/Jun/09 11:37 AM
Damen Hax wrote: -Deeding to group allowing partial anonymity

In the third-party viewer GEMINI we can see in the build/editor menu not only the owner and the creator, but also the LAST OWNER. This is very useful for griefing objects deeded to a group. We see the last and in this case the actual owner (to whom the object is returned).

So LL has already a LAST OWNER entry, it would be nice to show it not only in third-party viewers, but also in the LL viewers. That would make it easier to write abuse reports in case of griefing abuse of deeding objects.


Rob Linden added a comment - 10/Sep/09 10:46 AM
Removing patch attached flag because the patch is no longer applicable to the codebase