What does Tor Browser test for that fails when using a different / non-local Tor as the client?
With the default settings, Tor Browser:
- Starts its own instance of Tor when you first open the browser
- Asks the browser what proxy settings have been set in the TorButton Preferences menu
- Asks the instance of Tor that the browser started what SOCKS proxy address and port it is listening on (by sending a GETINFO request to its control port)
- Compares the results of 2 and 3. If they agree, show the 'Congratulations' page, otherwise show the 'Something went wrong' page
[Source: torbutton.js from the Tor Browser source code https://gitweb.torproject.org/torbutton.git/blob/7f46869cd1b53e9a94dda54bd8101f66b78ed3ab:/src/chrome/content/torbutton.js#l1801]
Using this test method, it's clear that Tor Browser will always fail the test if you just change the proxy settings in TorButton preferences.
To force Tor Browser to do a more useful test when you've changed the proxy settings, you can go to about:config and set 'extensions.torbutton.local_tor_check' to false. This makes Tor Browser make a request to check.torproject.org to check if it's connecting through Tor, giving correct results even with custom proxy settings.
Is [using a different / non-local Tor] a bad thing to do? Does it in any way hurt security or anonymity?
This would depend on the details of your setup. A non-exhaustive list of things to watch out for that might have adverse effect on security/anonymity:
Improperly configured control port. Unless you've made a deliberate effort to make your Tor Browser connect to the control port of your non-local Tor client, you're not getting new circuits when you click the New Identity button in the browser; Tor Browser will still be using the default control port, which corresponds to the local Tor client started by the browser. Configuring a custom control port can be done fairly easily but that should probably have a question of its own.
Mixing of different identities. If you have several computers all connecting to the same port on your non-local Tor client you might find streams you wanted to keep separate end up on the same circuit, which might allow an attacker to deduce they came from the same person. It might be worth giving each computer its own dedicated SOCKS port, or even an entire dedicated instance of the Tor client.
Attacks on the traffic between you and your non-local Tor. Do you trust the network between you and your Tor client and/or the security of the proxying protocol (in your case SOCKS)? Transparent proxying, for example, sends your traffic unencrypted, so would be unwise to use with a non-local Tor on an untrusted network.
Effect of setting 'extensions.torbutton.local_tor_check' to false (?). This would mean your Tor Browser makes one more request to torproject.org each time the browser is opened compared to using all default settings. I don't know whether this could actually be used for fingerprinting.
It is possible to imagine situations in which having a non-local Tor process could present a security advantage. For example
- If the machine running Tor Browser is compromised the Tor Process itself is not automatically compromised.
- You could set up your network so that one or more computers have no direct connection to the internet, only the connection via your non-local Tor client. This could prevent leaks even if the computers/browsers are compromised.