5.3. The Centralized Anti-Virus Update
This last example of beneficial self-replicating is the most
successful one. Implementations of it are widely used by several
anti-virus companies in their products.
Consider a company that has several hundreds, even thousands of PCs,
all networked together in a LAN. The company also takes the virus
problem seriously, and insists that each and every of those PCs must
be running the latest version of some particular virus scanner, before
it is allowed to access the network. Let's ignore for a moment whether
the decision to rely on a scanner for virus protection is wise or not.
Even if the company uses some other kinds of defense (integrity
checking, monitoring, access control, and so on), a well thought out
scheme for anti-virus defense should contain a scanner as one of the
lines of protection, although possibly not the most important one.
Insisting that all PCs are running the latest version of the scanner
is a very reasonable requirement, because scanners tend to get old
faster than normal programs, and a new virus could sneak in undetected
by an obsolete scanner and wreak havoc on the network, before any
other kind of defense has had the opportunity to react.
So, the person responsible for the network has imposed a requirement:
a PC that does not run the latest version of the scanner is not
allowed to log in. That's fine, but how to achieve it? The simple
answer is - by keeping a copy of the (presumably resident) scanner on
each of the PCs and regularly updating them.
The only problem is - how to keep thousands of PCs up-to-date? And on
the top of that - to keep them up-to-date with a product, a new
version of which is released on average every month? Trying to
achieve this by going to each PC and updating it manually from a
floppy is a hopeless task. A month will not be sufficient to update
them all - before you have finished, you'll have to start all over
again - updating them with the next version of the scanner. The PCs
will be probably in different buildings, some of them - in obscure
places, used rarely - all this will definitely not make the task
easier. In fact, it is a real nightmare for the PC technical support
team.
The obvious alternative is to keep one copy of the anti-virus package
on the server and update the PCs from there. However, if the person
responsible for maintaining the virus protection has to go personally
to each computer and download the new version of the package manually
from the server, the situation has not improved very much. One option
is to tell the users to do it themselves regularly, and even set up
some sort of automatic system that sends them automatic reminders each
time the copy of the software on the server has been updated.
Unfortunately, this still leaves two problems. First, the users tend
to be lazy and "automatically" ignore the automatic reminders. Second,
they - or at least some of them - lack the necessary qualification for
installing anti-virus packages, and could easily mess up something
while installing the update.
A much, much better solution is to design the anti-virus package as a
network virus (a worm, actually), making it able to copy itself
across the network to the workstations. One segment of the worm will
constantly monitor the logins. Each time a workstations attempts to
login, that segment automatically queries that workstation whether
it is running the anti-virus product and which version of it. If it
turns out that a newer version is available, the segment will inform
the user about this and will propose to update the local version on
the workstation. If the user refuses the update, then access to the
network is denied for that workstation. If the user accepts the
update, another segment of the worm will fetch the relevant (updated)
parts of the anti-virus package from the server, will copy them to the
workstation, and will reboot the latter, in order to make sure that
the changes will take effect. Of course, the user is always kept
informed about what is going to happen, and user permission is
requested each time.
The software that performs the automatic update, is actually part of
the anti-virus package. Since it copies (parts of) itself across the
network to other computers, it is a virus, according to Dr. Cohen's
definition of the term - although probably most people will not see it
as such. Such a virus is very easy to implement - even by using
trivial modifications to the login scripts. It could be used for the
initial installation of the anti-virus package too - not only for the
updates. If the network consists of more than one server, then the
whole virus - the anti-virus programs, together with the code that
implements the replication - could transfer themselves from server to
server and begin to distribute the updates from there.
Does the beneficial "virus" described above conform to all conditions
listed in section 2? It seems so.
It does conform to the Control requirement. The virus attempts to
spread only on the computers attempting to access the network on which
it is running. This is perfectly acceptable, because, as we stated,
the company's policy is that all computers attempting to access the
network must run the latest version of the anti-virus product.
Simultaneously, the user is always given the option to refuse the
programs that insist to run on the user's computer - but then access
to the network is denied for that computer.
It does conform to the Recognition requirement. Since the "virus" is
actually part of the anti-virus defense, it will be easy for it to
recognize itself and allow itself to run. Currently, the products
implementing this approach do not use cryptographic means for
authentication - they rely on file names, directory paths, and so on.
However, it is very easy to add any additional authentication as the
need for it arises.
It does conform to the Resource Wasting requirement. Since the virus
is of the worm type and therefore self-contained, only a single copy
of it will be running on each workstation - therefore, no resource
wasting will occur. In fact, the unnecessary parts of it (e.g., the
replication code) will not be copied, if they are not needed.
The fact that it is a worm and spreads as a whole on the network makes
it relatively easy to fulfil the Bug Containment requirement too. If
a bug is discovered in any piece of the software, the same viral
replication means can be easily used to distribute the fix to each
workstation as it logs in.
Since the "virus" modifies only old copies of itself and does not
touch other programs, no compatibility problems due to its virus-like
behaviour will occur. Of course, it is still possible that the
anti-virus software running on the workstation is having compatibility
problems with any of the hardware or software components of this
workstation. However, those problems are independent on the viral way
for distribution of the package and can be usually solved by
contacting the company that provides technical support for the
package. If a fix in the anti-virus software is necessary, in order
to solve the problems, then the viral distribution mechanism can be
used to send it to the workstation that needs it.
The kind of job that such a "virus" performs, clearly demonstrates
that it fulfils the requirement for Effectiveness too. Actually, any
other way to regularly distribute updates of the package to a large
number of PCs would be horribly ineffective.
Since the package updates/modifies only older copies of itself, there
are no legal and/or ethical problems related to unauthorized data
modification or copyright - therefore, the package described above
fulfils those requirements too. Since the company that installs the
"virus" owns the network on which it runs, it has the right to decide
what is the exact policy to allow machines to connect to that network.
Therefore, if the policy is "either run the latest version of the
anti-virus software or be denied access", it is their right to enforce
it. The user has always the option to refuse and not to use the
network.
The way currently such packages are implemented makes their misuse by
an attacker relatively difficult, but still possible. However, as
mentioned above, as the need arizes, cryptographically strong means
for authentication could be easily introduced to take care of this
problem.
The responsibility requirement is fulfilled too - in fact, the whole
"viral" package is designed mainly as a means to fight real, malicious
viruses.
At last, the psychological problems are easily resolved by using the
fact that most people would consider such a package as a real computer
virus in the first place. The companies using this approach usually
call it "centralized software update" or some other nicely-looking
name - a name that doesn't even remotely suggest that the package is a
virus.
Actually, this approach could be used for any kind of software - not
just for distribution of anti-virus packages. However, the need to
update the anti-virus packages often allows us to demonstrate the best
how useful and beneficial the approach is. Similar tools for general
software distribution exist too - for instance, the program rdist,
used on many Unix machines. However, it acts like a virus only when
distributing new versions of itself, which doesn't happen that often.
Return to Top.
6. Conclusion
In this paper we listed the set of reasons why computer viruses are
usually considered bad and emphasized that any self-replicating
program that claims to be beneficial and non-malicious must not
contradict the conditions expressed by those reasons. We also
demonstrated that it is possible to design such programs, although
most people probably wouldn't consider them to be viruses.
Return to Top.
7. References
- [Bontchev92] Vesselin Bontchev, "Possible Virus Attacks Against
Integrity Programs And How To Prevent Them", Proc. 2nd
Int. Virus Bulletin Conf., September 1992, pp. 131-141.
-
[Bontchev94] Vesselin Bontchev, "Methodology of Computer Anti-Virus
Research", Ph.D. Thesis, in print.
-
[Chaum] David Chaum, "Achieving Electronic Privacy", Scientific
American, August 1992, pp. 96-101.
-
[Cohen84] Fred Cohen, "Computer Viruses - Theory and Experiments",
7th Security Conf., DOD/NBS, September 1984, pp. 143-158.
-
[Cohen89] Fred Cohen, "Computational Aspects of Computer Viruses",
Computers & Security, 8 (1989), pp. 325-344.
-
[Cohen91] Fred Cohen, "Trends In Computer Virus Research", ASP,
1991.
-
[Cohen92] Fred Cohen, "A Formal Definition of Computer Worms and
Some Related Results", Computers & Security, 11 (1992),
pp. 641-652.
-
[Cohen94] Fred Cohen, "It's Alive!", John Wiley & Sons, 1994, ISBN
0-471-00860-5.
-
[Seborg] Brian Seborg, An article in the electronic forum
Virus-L/comp.virus.
-
[Shoch] John F. Shoch, Jon A. Hupp, "The 'Worm' Programs - Early
Experience with a Distributed Computation", CACM, vol.
25, 3, March 1982.
Return to Top.