|
Does the open nature of Open
Source make it more vulnerable to attack? Or,
does the ability to review code and submit bug
fixes make Open Source superior to proprietary
software?
Borland positioned a backdoor in their database
server 'InterBase' that allowed any local or remote
user to take over the system as root. This backdoor
stayed snugly in place for seven years and no
one other than Borland was any wiser. Safe, or
at least distanced from public scrutiny, Borland
had no compelling incentive to remove the backdoor.
Then, in July 2000, Borland released its source
code to the public. Within six months the serious
security flaw was discovered, and CERT published
the vulnerability as an advisory in Jan 2001.
This happened a few months after the uproar in
April 2000 when it was exposed that developers
of the Microsoft FrontPage web server had inserted
a backdoor that lay concealed in the proprietary
software for four years. The backdoor's password
was: "Netscape engineers are weenies!"
- a barb that reflected the intense competition
between Microsoft and Netscape at the time.
The Borland and Microsoft incidents may well encourage
vehement testimony favouring open source software
since it is open for review by the public; but
that should be no source for comfort in reality.
Even some of the most widely reviewed pieces of
open source software have had significant flaws
that managed to remain undetected for years, despite
the innumerable 'eyeballs' poring through them.
For instance, some of the recently discovered
buffer overflow flaws in Kerberos, an open source
security protocol used for authentication, remained
concealed, or at least unobserved, for over ten
years! So, there is no guarantee that those scrutinizing
open source code will find any flaws in the code,
much less all of them.
Most people scrutinize the open source code to
customise it to their unique needs, or they review
code as part of a security audit. Others may do
it to improve the code for altruistic purposes.
Unfortunately, some scrutinize open source code
with the sole intent of lodging malicious code
within it, or to uncover a flaw before anyone
else does. Detractors of open source software
lambast the ease that is accorded to attackers
in harming systems. They tend to propound the
view that if code is distributed only as binaries
the bar will be raised high enough to deflect
attackers away.
Shrouding closed source software
But this argument does not hold water. While
it is true that Trojan horses and other malicious
code can be inserted into open source code, that
eventuality can occur just as well in proprietary
code. A disgruntled or dishonest employee could
do the deed - and the likelihood of it being found
out would be marginal.
Distribution of binaries too doesn't provide much
succour because any binary code that can run in
a computer can be reverse-engineered, using decompilers
or disassemblers, to re-create the source code
for the product. An attacker can then scrutinize
the reverse-engineered source code to detect attack
loopholes, much the same way, as he would do to
open source code.
Keeping source code closed does not necessarily
secure it. For proponents of closed source software
a system cannot be truly secure when its source
is open for all to read. For them, secrecy means
security. However, in reality, many of the 'most
secure' systems available today are based on the
open source model. For instance, the US has recently
adopted the Advanced Encryption Standard, a public
algorithm, as its national standard, which will
be used to protect the most sensitive traffic.
The shroud of secrecy over proprietary software
leads not to true security but a false head-in-the-sand
sense of security. One does not know what is in
there, and one cannot verify it. And, one cannot
check the integrity or motivation of the people
who wrote it. Simply put, one has to blindly accept
the assurance on security, which the proprietary
software vendor hands them. This, very clearly,
isn't enough, considering the fact that their
assurances have built-in disclaimers absolving
them of legal penalties in case the software is
flawed.
Eyeballing open source software
If closed is taboo, is open the answer? While
openness is essential for trust, the moot point
is whether or not open source software provides
that trust. The basic open source philosophy can
be summed up as "security through eyeballs".
With thousands of people scrutinizing the open
source code, bugs and security flaws are more
likely to be found and reported which may
not happen in the case of a closed application
audited by paid employees working behind closed
doors, fired by varying commitment.
Then again, simply because open source code is
viewed by 'lots of eyeballs' does not mean that
it is reviewed for security. If the code is complex
or follows an uncommon design methodology, people
are likely to be discouraged from reviewing the
code. This situation may be worsened by the lack
of documentation. Anything that makes it harder
for the average user means fewer eyeballs. Most
people only look at the parts of the code they
want to modify, which may be only a small section
of the code; and they may not do so with security
in mind. Many eyeballs are amateurs with only
a rudimentary knowledge of security. Considering
that many security problems are very subtle and
may span large parts of the source code tree,
an eyeball may miss the flaw.
Therefore, even if open source code receives many
eyeballs, it may not be more secure. And on the
ground, there may not be the high quality auditing
that people believe happens. Everyone presumes
that someone else has done the proper security
audit - while in fact no one may have. This can
lull people into a false sense of security. It
is for this reason that security flaws in open
source software may remain undetected for many
years.
Linux - the open source magic potion
In the case of the prime open source software
Linux the kernel may be more secure
because it is under tighter control and receives
expert code review by a core group led by Linus
Torvalds himself. However, the many 'applications'
that run on Linux do not get the kind of attention
people normally expect. The Linux kernel 2.5.37
is 5.1 million source lines of code, whereas the
Linux 'distributions' are very much larger. For
instance, RedHat distribution has 30 million lines
and Debian has a whopping 55 million lines of
source code - the sizes differing because of the
kind of applications the vendor bundles into the
distribution. Linux does not inherently provide
the management ease that systems such as Windows
provide, which people have become used to. Therefore,
vendors bundle their own management software with
their distributions. Such software may receive
few eyeballs for code review and therefore, may
not be secure. It is, therefore, common to find
vendors of Linux distributions regularly issuing
security patches for flaws that affect their distributions.
Thus, while Linux per se may be more secure, the
Linux distributions may vary in their security
levels.
A matter of trust
Finally, the trust that one can repose in
software, whether it is open or closed, is directly
proportionate to the robustness of its security.
Trust comes from perceived security; and Microsoft's
initiatives such as Palladium and the Trustworthy
Computing enable trust through enhanced security.
Trust also comes from openness; therefore, the
Microsoft source code is now available to Governments
for scrutiny if they so desire. In future, trust
will come from legally binding assurances. As
per Gartner, by 2008 the standard liability disclaimers
in software licensing agreements will no longer
protect software vendors against lawsuits stemming
from breaches of fundamentally insecure software.
In that legal environment, the open source model
will reign.
|