Sandboxes
In an ideal world, it would be nice if Sublime had a robust sandbox with granular permissions
What do you want? Excellent extendability or another notepad.exe? Sorry for the hard words, but what do you expect from a sandbox? It just disables functionality which was added by a scripting engine a step earlier. It is a desperate try to repair a broken and poorly designed scripting engine!
If you really want to achieve a maximum of security, you need only 3 steps:
- Choose your software well (here ST and the packages you use)
- Place all of them into a folder which only a trusted person has write access to (portable setup)
- Run the app with minimal rights (ordinary user)?
Means: Create a trusted fixed setup and use it in a trustworthy environment instead of try to repair the broken environment with your software.
Sublime Text
With that said: Sublime Text may even be one of the most trustworthy pieces of software these days!
All bigger companies only want our best - not our money - our data! We are just sources of information they can mine to get more and more power!
But the guys behind Sublime Text don’t only talk about but really care about your privacy!
The only network connection Sublime Text establishes is to the license server to validate it or revoke licenses after refund!
If you use Package Control, it will send back information about installed/removed packages and their version. As it is open source, you can check the information sent. They don’t contain any personal information nor any content of your work. (If you don’t want it, you can disable sending stats in the settings.)
All packages in Package Control are revised before accepted/published to not do any harmful things and can be dropped at any time if they start doing so. There was a very popular case about SideBarEnhancements recently, which was compromised by a kite API to send usage statistics.
Plugins
It made me wonder if files opened/saved with ST3 can be viewed/saved/uploaded in some way by a 3rd party plugin or server related to ST. Is this possible?
Technically a 3rd party plugin could do anything with your text. It is the most basic meaning of the plugin-API to give plugins the ability to interact with your text in any way. Without it, most packages/plugins and the API were just useless!
Packages like GitGutter or SublimeLinter need to store a temporary copy of your content in the %temp% directory as the backend tools (git.exe, linters) need it as input.
But most packages/plugins are simple helpers, which don’t save any data somewhere.
Most packages are open source and can therefore be checked. Just look for imports like urllib
, socks
, http
or things like that and check what they do if found.
Packages named like GoogleTranslate may need to sent the selected text to google to be translated, but this is pretty obvious. You don’t need to use such plugins.
The SFTP plugin can be used to securely sync your local files with a secure ftp server. It uses psftp.exe as backend.
Plugins-Runtime
Any *.py file placed somewhere in the Data/Packages folder providing the required API classes, will be loaded and executed as plugin at any time. Means if a user downloads and places a plugin in one of the tracked folders, it will be loaded. If such a plugin does harmful things, you loose. But changing that in some way would break any plugin upgrade handled by Package Control and would most likely need user interaction or a specified attack against your ST setup to let someone place extra plugins during runtime. I guess there are global techniques to harden your setup against such attacks.
Package Control
Package Control uses https to communicate with the internet and validates the hostname against the certificate to avoid man in the middle attacks.
I didn’t find any package in the official repositories right now, which compromises privacy. If so we could report it at any time!
To increase security, you
- don’t need to use Package Control
- use it with your own private repository.
The 2nd and maybe better way is what many companies seem to do. They manage their own package repository to provide their employees only trusted and revised packages.
Conclusion
- Sublime Text itself is designed to provide as much privacy as possible.
- It does not send any harmful information about you and your projects home.
- It’s plugin-API is as secure as the ones of any other scripting engine driven plugin-API of other editors/tools. (Don’t thing huge JavaScript engines, of some big Silicon Valley IT companies are more rustworthy and secure!).
- The overall security depends on your infrastructure. ST is not designed to try to fix a malicious environment.