5 ms·
Remember that critical Go security update? Usual procedure - update the shared library, restart affected services. Go - recompile everything.
by _yy 11y ago
Remember that critical Go security update?
Usual procedure - update the shared library, restart affected services. Go - recompile everything.
- falcolas 11y ago> update the shared library, restart affected services ... look for programs to break at runtime because of some unrelated API change in the shared library.
- _yy 11y agoThat's why Debian Stable and RHEL exist. Security patches don't break the API.
- falcolas 11y ago> Security patches don't break the API. shouldn't When the patched library is not part of Debian Stable or RHEL's repositories (for example, if you require features from a release less than a year old) all bets of API stability are off. OpenSSL and libc are not the only libraries which are patched for security that people use.
- jvoorhis 11y agoAnd heaven help you if RedHat decides not to backport a critical bugfix. OpenSSL on CentOS 6 has 99 patch files, a script named "hobble-openssl" and non-trivial changes to the build system that affect linkage, making DIY backports less than trivial.
- marssaxman 11y agoI am willing to believe that they come closer to the ideal than others, but nobody is perfect, and I'd rather discover incompatibilities myself, when I'm getting a new version of my app ready, before shipping, instead of trying to understand why random users are incoherently reporting impossible app failures.
- zwischenzug 11y agoWhich only needs to happen once.
- _yy 11y agoYes but still. If you have a procedure in place to recompile and redeploy everything, you could just deploy the libraries as well.
- protomyth 11y agoPlus, the system admin doesn't just have to wait on the new security-patched library to be ready, they have to wait for everyone who used Go to recompile and distribute their programs.
- jakub_h 11y agoSo you're redeploying one binary instead of another binary. You still need to deploy something. In fact, what about just switching connections to freshly launched VMs?
- deleted 11y ago[deleted]
- IshKebab 11y agoYeah that's the usual refrain, but the only situation where you have shared libraries is on Linux with a package manager. In that case it is trivial to recompile all packages that depend on the insecure library anyway. On Windows you have to package most shared libraries with your app anyway so you have to get a new version of it anyway.
- _yy 11y agoSure but that's one of the reasons I use Linux.
- jerf 11y agoYeah, but... that's not really the "usual procedure" though. Nobody who knows what they are doing literally downloads openssl manually, compiles the new shared library, manually installs it, and manually restarts the affected services, on the grounds that if you do that you have just proved you don't know what you are doing. (Most charitably, you're doing a "Linux From Scratch" for educational purposes, but that's just about the only valid reason.) Once you have introduced package management and/or system management tools, it doesn't seem like a significantly different problem anymore, and likely to be utterly swamped by the other bigger problems that appear at scale.
- _yy 11y agoNo, you update the shared library using your distribution's package manager and then restart the affected services using one of the small scripts for that purpose. What's the issue with that?