Much of this could be addressed by using https for the comms which encrypts the payload and headers if properly set up. But Haravikk's comments are on target. You can't trust the transport without https. I can probably count on one hand the number of grids that have all that set up correctly if it even works. Regardless the script writer has all the tools to add content to a payload or via headers and secure it. Hence I wouldn't recommend the patch approach as it is.
Mike -----Original Message----- From: opensim-dev-boun...@opensimulator.org <opensim-dev-boun...@opensimulator.org> On Behalf Of Haravikk Sent: Tuesday, November 12, 2019 11:18 AM To: opensim-dev@opensimulator.org Subject: Re: [Opensim-dev] Opensim-dev Digest, Vol 60, Issue 8 > On 12 Nov 2019, at 15:35, Fred Beckhusen <f...@mitsi.com> wrote: > > --ooo------/\/\/\-----|(------ooo------/\/\/\-----|(------ooo---- > Fred K. Beckhusen > President > Micro Technology Services, Inc. > fre...@mitsi.com > tel: (888) 230-MTSI Toll Free > cel: (469) 951-7635 > http://www.mitsi.com > > I would think a grid could be be very trustworthy with this patch, as the headers are set in code. No one but the grid operator can change them. I am assuming the HTTP_CUSTOM_HEADER does not override these settings, or can be detected. Has this been tested? While custom headers set by script should already be overridden by generated ones, the problem with trusting these headers is that they can still be very easily spoofed by other means; unless the web-service you are sending the request to maintains a list of valid simulator IP addresses, it has no way of knowing if a request came from a legitimate simulator, or from some other source. For example, common command line tools such as cURL can be used to be build custom http requests, allowing you to set the value of headers to anything you like, because that's just how HTTP works. So if I were a malicious actor and can figure out enough about your API, I can send it any requests I want. This is why I raised the possibility of a callback mechanism a little while ago, as this could at least be used to verify whether an IP address is permitted to send HTTP requests on behalf of a grid: http://opensimulator.org/wiki/User:Haravikk_Mistral/RegionVerification <http://opensimulator.org/wiki/User:Haravikk_Mistral/RegionVerification> Even with that, all this does is confirms that a request came from a (probably) genuine simulator belonging to the grid that the request claimed to come from, i.e- you can be reasonably sure the request is from an actual script on an OpenSimulator grid. If you know that the grid is fully privately operated (i.e- doesn't allow others to setup simulators and properly configures them) then, and only then, can you be confident that the headers weren't spoofed and should be okay to process without additional checks. But that still doesn't do anything to establish the trustworthiness of the specific object sending the request, or the owner of that object, which is why for anything sensitive you still need some kind of authentication like a password, public key or such that only the person you expect could have provided. Of course, if all you're tracking is non-sensitive information (like the example of a lost object tracker) then none of this is all that critical, but for anything else headers are useful information, but they shouldn't be viewed as always reliable or authoritative. _______________________________________________ Opensim-dev mailing list Opensim-dev@opensimulator.org http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev _______________________________________________ Opensim-dev mailing list Opensim-dev@opensimulator.org http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev