By Jonathan Corbet
December 19, 2007
SquirrelMail advertises itself as
"webmail for nuts." It is a PHP-based package which is in wide use; most
distributions include a SquirrelMail package. Security problems in
SquirrelMail are certainly not unheard-of; even so, the
announcement that the source distribution for
version 1.4.12 had been compromised raised some eyebrows. Initially the
project downplayed the problem:
Further investigations show that the modifications to the code
should have little to no impact at this time. Modifications seemed
to be based around a PHP global variable which we cannot track
down. The changes made will most likely generate an error, rather
than a compromise of a system in the event the code does get
executed.
It only took one day, though, before Uwe Schindler pointed out that, in fact, the changes made to
the source opened a remote-execution back door into deployed SquirrelMail
systems. Somewhere along the way, the project discovered that the 1.4.11
release had also been tampered with. The SquirrelMail developers released
version 1.4.13 to close the
vulnerabilities.
There have not been any public reports of systems being compromised by way
of this vulnerability. Additionally, it would appear that all of the
distributors which shipped the affected versions got their version of the
code prior to the attack. So the episode would appear to have ended
reasonably well - as far as we know. There are some lessons that one can
take from this attack, though.
The downplaying of the problem initially was a potentially fatal mistake.
If somebody has been tampering with the sources, there is no excuse not to
go into red-alert mode immediately, even if the developers involved do not
understand the attack. When a project has been compromised at such a
fundamental level, one must assume the worst.
The compromise was discovered after a user noticed that the tarballs on the
download site did not match the posted MD5 checksums. Your editor suspects
that very few of us actually verify checksums in the packages they take
from the net. Doing so more often would be a good exercise in software
hygiene for all of us.
That said, the project got lucky this time around. A smarter attacker
would have replaced the checksums after adding the back door, making the
changes harder to detect. Longer-term, the increasing doubts
about the security of MD5 suggest that relying on it to detect changes
to tarballs might not be entirely safe. Far better to use public-key
signatures; they should have a longer shelf life, and, if the keys
are managed properly, they are impossible to replace. It seems that the
project has posted GPG signatures for 1.4.13, though the Wayback Machine suggests
that this is a recent practice. Your editor was unable to find the public
key needed to verify the signatures.
The modifications to the tarballs were done using a compromised developer's
account. The specific changes made were not put into the SquirrelMail
source repository. The project has said nothing, though, about what has
been done to ensure that no other changes were made there. Some sort of
statement from the project along these lines would be most reassuring to
SquirrelMail's users.
Perhaps the most encouraging conclusion, though, is this: there have been
several attempts to compromise source distributions over the years. Many
of them have succeeded in getting bad code into high-profile packages. But
none of these attacks - so far as we know - have escaped detection for any
significant period of time, and none of them have led to any sort of
wide-scale exploit. As a whole, we would appear to be reasonably resistant
to this kind of attack, even when the front-line defenses fail. With luck,
and continued vigilance, that trend will continue. Both will be required,
though: there is no doubt that the attackers will keep trying.
(
Log in to post comments)