Skip Navigation

How safe is open source software? What are the general benefits?

So with open source software more on my mind lately I was wondering - while I get the benefits of transparency and such, how safe is it? If the source code is available to all, isn't it easier to breach for people (like the recent cookies hack)? If I'd have an open source password manager, would it be easier for people to get my passwords somehow than if I use something not open source? Do I just not understand how software works in general?

And what are other benefits that may be not so obvious to someone not so knowledgable about this?

Edit: thank you all for really insightful answers! Among other things I also learned just how much I don't know :)

57 comments
  • Security through obscurity is never a good thing, this has been proven many times over.

    Basically, both models have been set to the test years after years, open source software always wins in regards of security over closed source solutions. Security holes are patched faster, and in most cases, way before they're even exploited.

    Other benefits are... well, you can change it however you like... or pay someone to change it (not so uncommon as some might think).

    • Providing enterprise support for open source software ain’t much, but it’s honest work

      • It still beats closed source solutions. We had SonicWall at work, it got breached 3 times. Now we have an OS solution, a company maintains it, we haven't had a single breach in years.

  • "Given enough eyeballs, all bugs are shallow." - Linus Torvalds

    Open Source software is (caveat, qualifier) safer than proprietary software. (And I'll get to the caveats and qualifiers later.)

    Software exploits are possible only because of mistakes, oversights, negligence, or mistaken assumptions on the part of the developer of user of the code. More eyes on the code help suss out those mistakes, oversights, negligence, and mistaken assumptions, creating a more secure (and bug-free) piece of software.

    Besides that, companies that make proprietary software have incentives to put evil things into said proprietary software that endanger you to enrich them. (For instance, phone apps collecting personal data about you only to sell to advertising companies.) Companies that contribute to open source software also have incentives to put evil things into open source software, but when everyone has access to view the source code, it's a lot harder to get away with that. (Not to say it's never happened that purposeful vulnerabilities have gotten into open source software, but it's a lot easier to catch such vulnerabilities in open source software than proprietary software.)

    As others have said, the way algorithms related to security are designed, the security doesn't depend on keeping the algorithm secret. (But rather, keeping a "key" -- a bit of data generated by the algorithm -- secret.)

    Now, caveats.

    I do believe there is some extent to which open source software is trusted to be safe even when the "chain of custody" is questionable. There are ways to ensure integrity, but there are repositories such as NPM that carry large amounts of open source software that is used by huge numbers of people on a regular basis that don't utilize sufficient integrity checking techniques. As a result, there have been a few cases where malicious code has sneaked into NPM and then into codebases.

    There are also cases where governments have gotten malicious code into open source projects. (Though, I'd expect that's more of a problem with proprietary software, not less.)

  • There are good comments here already, but I thought I'd provide a practical breakdown of my experience using both in web development.

    Open source software is generally better overall from a programming perspective. The "many eyes" dynamic can be extremely positive if the project has a strong developer community. Even smaller communities make great software.

    On a security level, I'd say they're about on par - I've had about as many security issues with open source as I have with closed. It was what to do when that security problem arose that the real difference came into play. In open source, you either have to figure it out yourself, or wait for the community to fix it. In closed source, you're paying someone to fix it for you. On the balance, closed source security issues get fixed faster than open source in my experience, but it really depends on the strength of the community behind the open source project, versus the size of the closed source company - bigger companies move a lot slower than many of the smaller services I've used.

    On a software evolution level, open source wipes the floor with closed source. There's simply no competing with the amount of creative minds behind open source development. Most closed source successes in the online world are built on the backs of open source developers - if not directly, than on the ideas that had their genesis in the open source space.

    When it comes to consistency and stability, they're about neck and neck, with a slight advantage to closed source. Again, it's the difference between volunteers maintaining the code and someone you're paying.

    On a personal level, how much do you want to be involved with running the software? If you want to have a greater level of control, build new features, and have the time to maintain it, go open source. If you just want it to work and you're willing to pay someone else to maintain it, go closed source.

    Note in a corporate setting, it's often better to go with closed source, as then you have more plausible deniability and someone else to blame when it fails.

  • Like most things, it's about balance. All changes to open source software must be approved by the community managing it, and if that community is lazy or poorly managed or simply too busy then there's an opportunity for new vulnerabilities to be created, either accidentally or maliciously.

    But for well managed software, as other people have said you can get more changes more frequently, more security as many people are evaluating the code base, and greater attention to what users want rather than what's profitable. Whereas with closed source software there is a greater focus on profitability, and sometimes that leaves vulnerabilities open when development is rushed and/or vulnerabilities are not seen as important enough to justify the cost to fix, but sometimes that tendancy towards profitability can also ensure the product stays a market leader. Steam may be a good example of a good closed source product.

  • The idea is that having "many eyes" on the code, the vulnerabilities should be found and solved more readily. BUT... of course this is true only for big projects which actually do have many contributors.

    Viceversa, while skilled (or high budget) attackers can still find vulnerabilities in proprietary software (think of how people still crack consoles and games), good-intentioned people cannot contribute to weed out these vulnerabilities.

    But most important of all, it's trust. There is no way to be sure that a proprietary piece of software is actually as secure or respectful of privacy as it claims to be. Whatsapp claims to have end to end encryption, but you can't tell if it's truly secure or if it has a backdoor or some other spyware in it. For OSS instead you can always read the code yourself, or trust the many eyes that did.

    Some months ago it came out that as soon as windows 11 is boot up for the first time, it starts contacting services like Amazon and steam (allowing for tracking) before even asking for license and privacy agreement. The same thing could not happen in Linux because the code is open.

    Also, by using proprietary software from big corporations you give them power over your infrastructure and your work, and possibly on other people interacting with you. Which is definitely not poggers.

  • Most interactions in life are based on trust, so I don't think you can be totally safe. However, you can choose who you trust enough so you don't have to constantly worry. You might find this speech titled Reflections on Trusting Trust by Ken Thompson relevant.

    Also see Linus' Law, which postulates that more people looking at code means bugs get noticed and fixed quicker, and large open source projects usually have a lot of people working on it.

  • If you know how to code and you audit the code and compile it yourself from the source code ? Then it is 100% safe.

    If the program is from a well regarded community and the source code is easily accessible to the public and it has been regularly reviewed by experts ? Then it is pretty safe.

    If the program is from an unknown source and the source code is difficult to access by the public or it is obfuscated and no reviews are available? It is probably better to give it a miss and keep looking for a program that is more trustworthy which suits your needs.

57 comments