4

We have a product which relies on a thin client installed on users machine. We make an ajax get request to a domain pointing to local host which has a real ssl. This fails in edge, works in every other browser including IE11. Note that same works if there is no ssl involved. It also works on Windows 10 Home edition.

Adding a datatype, content-type or request method does not resolve this. Only way to fix this seems to be running following command.

CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"

If this is expected behavior, can someone explain why microsoft would block this on a enterprise version but it works on home edition ?

NotGaeL
  • 8,344
  • 5
  • 40
  • 70
Pit Digger
  • 9,618
  • 23
  • 78
  • 122

1 Answers1

4

Microsoft Edge, and Windows 10 apps in general, use AppContainer Isolation:

Isolating the application from network resources beyond those specifically allocated, AppContainer prevents the application from 'escaping' its environment and maliciously exploiting network resources. Granular access can be granted for Internet access, Intranet access, and acting as a server.

Your thin-client is running on win10 enterprise edge against an intranet ssl service (localhost), so access is by default restricted by this mechanism. With the command

CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"

you are disabling network isolation on that host for the loopback network adapter (localhost) for MS Edge so your app client (and any other locally sourced app) can run on it without restriction against any localhost service.

This fails in edge, works in every other browser including IE11.

They clearly wanted to improve the default security policy of previous versions. It's never too late, MS :) There is actually an Enhanced Protected Mode (EPM) that could prevent your app from running on IE too. Chrome has its Google Chrome Sandbox that can also be tuned like this. Safari and Firefox also have sand-boxing features although I am not familiar with their particularities.

Note that same works if there is no ssl involved.

Typically, if you are using ssl is because you are dealing with sensitive data and/or a critical service. If you are not it is ok to be more lax. Again, just a matter of security policy.

It also works on Windows 10 Home edition. If this is expected behavior, can someone explain why microsoft would block this on a enterprise version but it works on home edition?

Enterprise versions of any product are known to be more restrictive since their target users are more security concerned (IT people typically don't want to expose their company's intranet payroll db service to external attackers, and things like that). Also, in this case the default behavior can be easily defined/altered by experts on the IT department (check out domain security policies) so it's better to leave the default settings to "paranoid" mode and let the experts tweak according to the company's needs.

Note there are other mechanisms at work when you are running a thin client on the browser that make this kind of protection redundant (same domain policy, XSS protection and so on). Nevertheless one can never be too safe: There are ways to work around those defenses such as Self-XSS that require isolation between the browser and the local network to avoid compromising the system. In the end, less exposed surface means less attack vectors, so isolation is good if you can afford it :)

NotGaeL
  • 8,344
  • 5
  • 40
  • 70
  • appreciate your answer. Can you think of anyway on edge to check if the user has LoopbackExempt enabled ? This is a major roadblock. Any idea if microsoft might open this in future ? – Pit Digger May 09 '17 at 19:26
  • Thanks. I don't think there is a straight way for your client to query that. My first idea would be to pop up a warning if the client can connect "please check local server running and LoopbackExempt enabled" or something like that. An alternative would be to check if a typical windows local service (like samba, but ssl) seems to be missing too and in that case jump to the conclusion the client is being blocked from accessing local services. I don't think MS will open this in the future. The tendency is to more secure, more restrictive. Even at home they want users on Windows 10 S... – NotGaeL May 09 '17 at 21:21
  • Anyway as I said what I'd do before deploying this app on any company would be to just warn IT to have this LoopbackExempt domain rule set so every windows10 pro pc on the company domain will run the app without problem. I would be really surprised if I found a company with a security policy too restrictive to allow that... – NotGaeL May 09 '17 at 21:29