💾 Archived View for spam.works › mirrors › textfiles › virus › ibmpaper.vir captured on 2023-06-16 at 21:03:05.

View Raw

More Information

-=-=-=-=-=-=-

 
 
 
 
 
 
          Coping with Computer Viruses and Related Problems
 
          Steve R. White
          David M. Chess
          IBM Thomas J. Watson Research Center
          Yorktown Heights, NY
 
          Chengi Jimmy Kuo
          IBM Los Angeles Scientific Center
          Los Angeles, CA
 
          Research Report (RC 14405)
          January 30, 1989
 
 
 
          This research report is provided without restriction;
          we encourage its redistribution.
 
 
 
 
 
          Copies may be requested from:
 
          IBM Thomas J. Watson Research Center
          Distribution Services F-11 Stormytown
          Post Office Box 218
          Yorktown Heights, New York 10598
 
          (This report will be available from this address up to
           one year after the IBM publication date (up to Jan 1990))
 
 
          This online version differs from the hardcopy report only
          in pagination, and in using *asterisks* for emphasis.  It
          is formatted to print at 66 lines per page, and 80 or so
          characters per line (including a 10 character margin on
          either side).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                     Coping with Computer Viruses and Related Problems
 
 
 
 
 
 
 
 
 
 
                                                        Steve R. White
                                                        David M. Chess
                                  IBM Thomas J. Watson Research Center
                                                  Yorktown Heights, NY
 
                                                      Chengi Jimmy Kuo
                                     IBM Los Angeles Scientific Center
                                                       Los Angeles, CA
 
 
 
 
 
                                       Research Report Number RC 14405
 
                                                      January 30, 1989
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
          ABSTRACT
 
 
 
          We discuss computer viruses and related problems.  Our
          intent is to help both executive and technical managers
          understand the problems that viruses pose, and to suggest
          practical steps they can take to help protect their
          computing systems.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
          Abstract                                                  ii
 
 
 
 
 
 
 
 
 
          CONTENTS
 
 
 
          1.0  Executive Summary   . . . . . . . . . . . . . . . . . 1
          1.1  What Is a Computer Virus?   . . . . . . . . . . . . . 1
          1.2  How Can Computer Viruses Affect an Organization?  . . 2
          1.3  How Serious Is The Problem?   . . . . . . . . . . . . 2
          1.4  Summary and Recommendations   . . . . . . . . . . . . 3
 
          2.0  Coping with Computer Viruses: A Guide for Technical
           Management  . . . . . . . . . . . . . . . . . . . . . . . 5
          2.1  How Viruses Infect Computing Systems  . . . . . . . . 5
          2.2  How Viruses Differ From Other Security Threats  . . . 6
          2.3  General Security Policies   . . . . . . . . . . . . . 7
            2.3.1  User Education  . . . . . . . . . . . . . . . . . 7
            2.3.2  Backups   . . . . . . . . . . . . . . . . . . . . 7
          2.4  Decreasing the Risk of Viral Infection  . . . . . . . 8
            2.4.1  Isolated Systems  . . . . . . . . . . . . . . . . 8
            2.4.2  Limited-Function Systems  . . . . . . . . . . . . 9
            2.4.3  Policies for Software Repositories  . . . . . .  10
            2.4.4  Policies for Production Systems   . . . . . . .  11
          2.5  Detecting Viral Infections  . . . . . . . . . . . .  12
            2.5.1  Watching for Unexpected Things Happening  . . .  13
            2.5.2  Some Symptoms of Known Viruses  . . . . . . . .  13
            2.5.3  Watching for Changes to Executable Objects  . .  15
            2.5.4  Using External Information Sources  . . . . . .  17
          2.6  Containing Viral Infections   . . . . . . . . . . .  17
            2.6.1  The Importance of Early Detection   . . . . . .  17
            2.6.2  The Importance of Rapid Action  . . . . . . . .  18
          2.7  Recovering from Viral Infections  . . . . . . . . .  19
            2.7.1  Restoration and Backups   . . . . . . . . . . .  19
            2.7.2  Virus-Removing Programs   . . . . . . . . . . .  20
            2.7.3  Watching for Re-Infection   . . . . . . . . . .  20
          2.8  Summary and Recommendations   . . . . . . . . . . .  21
 
          For Further Reading  . . . . . . . . . . . . . . . . . .  23
 
          Glossary   . . . . . . . . . . . . . . . . . . . . . . .  24
 
          Appendix: Viral Infections in PC-DOS   . . . . . . . . .  27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
          Contents                                                 iii
 
 
 
 
 
 
 
 
 
          PREFACE
 
 
 
          While this document has been widely reviewed, and many
          helpful suggestions have been incorporated, the authors are
          entirely responsible for its present content.  It does not
          represent the opinions, policies, or recommendations of IBM
          or any other organization.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
          Preface                                                   iv
 
 
 
 
 
 
 
 
 
          1.0  EXECUTIVE SUMMARY
 
 
 
          Computer viruses present a relatively new kind of security
          problem in computing systems.  The purpose of this section
          is to acquaint the senior management of an organization with
          the nature of the problem.  It also outlines some of the
          steps that can be taken to reduce the organization's risk
          from computer viruses and other, similar, problems.
 
          Traditional computer security measures are helpful, but new
          measures are needed to deal with the problems effectively.
          The computer security management of the organization will
          play a key role in reducing the risk.  But education and
          ongoing participation of the users are also vital.
 
 
 
 
          1.1  WHAT IS A COMPUTER VIRUS?
 
 
          A computer virus is one kind of threat to the security and
          integrity of computer systems.  Like other threats, a
          computer virus can cause the loss or alteration of programs
          or data, and can compromise their confidentiality.  Unlike
          many other threats, a computer virus can spread from program
          to program, and from system to system, without direct human
          intervention.
 
          The essential component of a virus is a set of instructions
          which, when executed, spreads itself to other, previously
          unaffected, programs or files.  A typical computer virus
          performs two functions.  First, it copies itself into
          previously-uninfected programs or files.  Second, (perhaps
          after a specific number of executions, or on a specific
          date) it executes whatever other instructions the virus
          author included in it.  Depending on the motives of the
          virus author, these instructions can do anything at all,
          including displaying a message, erasing files or subtly
          altering stored data.  In some cases, a virus may contain no
          intentionally harmful or disruptive instructions at all.
          Instead, it may cause damage by replicating itself and
          taking up scarce resources, such as disk space, CPU time, or
          network connections.
 
          There are several problems similar to computer viruses.
          They too have colorful names:  worms, bacteria, rabbits, and
          so on.  Definitions of them are given in the glossary.  Each
          shares the property of replicating itself within the
          computing system.  This is the property on which we will
          focus, using viruses as an example.  There are also a
          variety of security issues other than viruses.  Here, we
 
 
          Executive Summary                                          1
 
 
 
 
 
 
 
 
 
          will deal only with viruses and related problems, since new
          measures are required to deal with them effectively.
 
 
 
          1.2  HOW CAN COMPUTER VIRUSES AFFECT AN ORGANIZATION?
 
 
          Let us examine a particular sequence of events, by which a
          virus could enter an organization and spread within it.
          Suppose that the organization hires an outside person to
          come in and perform some work.  Part of that person's work
          involves working on one of the organization's personal
          computers.  The person brings in a few programs to aid in
          this work, such as a favorite text editor.
 
          Without the person having realized it, the text editor may
          be infected with a virus.  Using that editor on one of the
          organization's machines causes the virus to spread from the
          editor to one of the programs stored on the organization's
          machine, perhaps to a spreadsheet program.  The virus has
          now entered the organization.
 
          Even when the outside person leaves, the virus remains on
          the machine that it infected, in the spreadsheet program.
          When an employee uses that spreadsheet subsequently, the
          virus can spread to another program, perhaps to a directory
          listing program that the employee keeps on the same floppy
          disk as the spreadsheet data files.  The listing program is
          then infected, and the infection can be spread to other
          computers to which this floppy disk is taken.  If the
          employee's personal computer is connected to the
          organization's network, the employee may send the listing
          program to another user over the network.  In either case,
          the virus can spread to more users, and more machines, via
          floppy disks or networks.  Each copy of the virus can make
          multiple copies of itself, and can infect any program to
          which it has access.  As a result, the virus may be able to
          spread throughout the organization in a relatively short
          time.
 
          Each of the infected programs in each of the infected
          machines can execute whatever other instructions the virus
          author intended.  If these instructions are harmful or
          disruptive, the pervasiveness of the virus may cause the
          harm to be widespread.
 
 
 
          1.3  HOW SERIOUS IS THE PROBLEM?
 
 
          Traditional security measures have attempted to limit the
          number of security incidents to an acceptable level.  A
 
 
          Executive Summary                                          2
 
 
 
 
 
 
 
 
 
          single incident of lost files in a year may be an acceptable
          loss, for instance.  While this is important, it only
          addresses part of the problem of viruses.  Since a single
          virus may be able to  spread throughout an organization, the
          damage that it could cause may be much greater than what
          could be caused by any individual computer user.
 
          Limiting the number of initial viral infections of an
          organization is important, but it is often not feasible to
          prevent them entirely.  As a result, it is important to be
          able to deal with them when they occur.
 
          Most actual viruses discovered to date have either been
          relatively benign, or spread rather slowly.  The actual
          damage that they have caused has been limited accordingly.
          In some cases, though, thousands of machines have been
          affected.  Viruses can easily be created which are much less
          benign.  Their *potential* damage is indeed large.
          Organizations should evaluate their vulnerability to this
          new threat, and take actions to limit their risks.
 
 
 
 
          1.4  SUMMARY AND RECOMMENDATIONS
 
 
          o   A computer virus is a program that can infect other
              programs by modifying them to include a copy of itself.
              When the infected programs are executed, the virus
              spreads itself to still other programs.
 
          o   Viruses can spread rapidly in a network or computing
              system and can cause widespread damage.
 
          o   Unlike many other security threats, viruses can enter a
              given computing system without anyone intending them to.
 
 
          o   There are no known ways to make a general computing
              system completely immune from viral attacks, but there
              are steps you can take to decrease the risks:
 
              -   Use good general security practices.  (For a more
                  complete discussion of these points, and some
                  examples of others, see reference (6).)
 
                  --  Keep good backups of critical data and programs.
                  --  Periodically review overall controls to
                      determine weaknesses.
                  --  Use access control facilities to limit access to
                      information by users, consistent with their job
                      duties and management policies.  Audit accesses
                      that do occur.
 
 
          Executive Summary                                          3
 
 
 
 
 
 
 
 
 
                  --  Do not use network connections to outside
                      organizations without a mutual review of
                      security practices.
                  --  Consider limiting electronic mail communications
                      to non-executable files.  Separate
                      communications that must move executable files
                      from electronic mail, so that they can be
                      separately controlled.
                  --  Make security education a prerequisite to any
                      computer use.
 
              -   Put a knowledgeable group in place to deal with
                  virus incidents.
 
                  --  The group may be a formal part of the
                      organization, or may be an informal collection
                      of knowledgeable people.
 
                  --  The group should be responsible for educating
                      users about the threat of viruses, providing
                      accurate information about viruses, responding
                      to reports of viruses, and dealing with viral
                      infections when they occur.
 
                  --  Make sure each employee who works with a
                      computer knows how to contact this group if they
                      suspect a viral infection.
 
              -   Develop a plan to deal with viruses *before* there is
                  a problem.
 
                  --  Decrease the risks of an initial infection, from
                      internal and external sources.
                  --  Put mechanisms in place to detect viral
                      infections quickly.
                  --  Develop procedures to contain an infection once
                      one is detected.
                  --  Know how to recover from a viral infection.
 
              -   Test the plan periodically, as you would test a fire
                  evacuation plan.
 
                  --  But *do not* use a real virus to test the plan!
 
 
 
 
 
 
 
 
 
 
 
 
 
          Executive Summary                                          4
 
 
 
 
 
 
 
 
 
          2.0  COPING WITH COMPUTER VIRUSES: A GUIDE FOR TECHNICAL
          MANAGEMENT
 
 
 
          Once an organization makes a commitment to deal with the
          problems of computer viruses, there are specific areas which
          should receive attention.  The purpose of this section is to
          acquaint technical management with the problems and to
          indicate the actions that can be taken to limit the risks
          posed by viruses.
 
 
 
          2.1  HOW VIRUSES INFECT COMPUTING SYSTEMS
 
 
          There are many ways in which a system can become infected
          with a virus.  Any time a program is run which can alter one
          or more other programs, there is the possibility of viral
          infection.  Any time a user executes a program which is
          written by anyone else, compiled by a compiler, or linked
          with run time libraries, all the resources to which that
          program has access are in the hands of every person who
          contributed to that program, that compiler, or those
          libraries.
 
          The initial introduction of an infected program can occur
          through a large variety of channels, including:
 
          o   Software introduced into or used on the system by an
              outsider who had access to the system,
 
          o   Software used at home by an employee whose home computer
              system is, unknown to the employee, itself infected,
 
          o   Software purchased from a commercial software company
              whose production facilities are infected,
 
          o   Software that turns out to be infected that has been
              down-loaded from public bulletin boards for business
              use, or by employees,
 
          o   Software intentionally infected by a malicious or
              disgruntled employee,
 
          o   *Any* other time that a piece of software (including
              programs, operating systems, and so on) is created
              within the organization, or brought in from *any*
              outside source.
 
          See the appendix for an example of sources and locations of
          possible infection for one operating system.
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                 5
 
 
 
 
 
 
 
 
 
          2.2  HOW VIRUSES DIFFER FROM OTHER SECURITY THREATS
 
 
 
          There are many kinds of threats to security.  Threats
          traceable to dial-in systems are greatly reduced with the
          use of call-back systems.  Simple threats created by
          disgruntled employees can often be traced to the person
          responsible.  One important thing that makes the virus
          different from all the rest is its untraceability.  Except
          in rare cases, the only way a virus' author becomes known is
          if the author admits to ownership.  As a result, an author
          can create a virus with reasonable certainty that he will
          not be discovered.  This allows great latitude in the design
          of the destructive portion of the virus.
 
          The only perfect ways to protect against viral infection are
          isolation and reduced functionality.  A computer system
          cannot be infected if it runs only one fixed program, and
          cannot have new programs either loaded or created on it.
          But this is clearly not very useful in many circumstances.
          So there is almost always some exposure.  As with other
          security concerns, it is a matter of weighing benefits,
          practicality, and potential risks, and then taking
          cost-effective action to help control those risks.
 
          Viruses exhibit elements of many other security threats.
          (See the Glossary for a summary of some of these threats.)
          There are important differences, though.  Dr. Fred Cohen,
          who has done much of the original research on computer
          viruses, defines a virus as:
 
              a program that can "infect" other programs by modifying
              them to include a possibly evolved copy of itself.  (See
              reference (1).)
 
          But a virus is more than the part that replicates itself.
          There is usually also a potentially damaging portion.  This
          portion could be a "time bomb" (on November 11th, display a
          political message), a "logic bomb" (when it sees a certain
          write to disk, it also corrupts the file structure), or
          anything else the virus author can design.  The variety of
          possible effects is part of the reason why the notion of a
          virus is so confusing to many people.  The term "virus" is
          sometimes misused to refer to anything undesirable that can
          happen to a computer.  This is incorrect.  The thing that
          makes viruses and related threats different from other
          problems is that they spread.
 
 
 
 
 
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                 6
 
 
 
 
 
 
 
 
 
          2.3  GENERAL SECURITY POLICIES
 
 
 
          2.3.1  User Education
 
 
          Good security policies depend on the knowledge and
          cooperation of the users.  This is just as true of security
          against viruses as it is of policies about password
          management.  Users should be aware of the dangers that
          exist, should know what to do if they suspect they have
          found a security problem.  In particular, they should know
          whom to call if they have questions or suspicions, and
          should know what to do, and what not to do, to minimize
          security risks.  Users should be encouraged to feel that
          security measures are things that they want to do for their
          own benefit, rather than things that are required for no
          rational reason.
 
          A strategy to detect and contain viruses is described below.
          An important part of that strategy is for users to know whom
          to call if they see a system problem that may be the result
          of a virus.  Someone should always be available to work with
          the user in determining if a problem exists, and to report
          the problem to a central source of information if it is
          serious.  This central source must have the ability to
          inform the necessary people of the problem quickly and
          reliably, and to set in motion the process of containing and
          solving the problem.  More detailed suggestions for this
          mechanism will be given below, but each stage depends on
          education.  It is important to educate the end users, the
          first-level support people, and management involved at all
          levels, since they must take the necessary actions quickly
          when a viral infection is detected.
 
 
 
          2.3.2  Backups
 
 
          Even without the threat of viruses, good backups are an
          important part of system management.  When a program or a
          data file is lost, a good set of backups can save many days
          or months of work.  The potential harm caused by computer
          viruses only increases the need for backups.
 
          Although they are necessary for recovery, backups can also
          present a place for a virus to hide.  When a virus attack
          has been stopped, and the virus removed from all software on
          the system, the obvious way to recover altered or lost files
          is by restoring them from backups.  Great care must be taken
          not to reintroduce the virus into the system in the process!
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                 7
 
 
 
 
 
 
 
 
 
          All backups should be inspected to ensure that the virus is
          not present in any file on any backup.  Until a backup has
          been certified "clean," it should not be used, unless
          certain files on it are not recoverable through other means.
          Even in this case, it is necessary to be very careful to
          restore only objects which the virus did not infect or
          otherwise change.  The behavior of the virus should be well
          understood before any restoration from backup is attempted.
 
 
 
          2.4  DECREASING THE RISK OF VIRAL INFECTION
 
 
          Viruses can spread from one user to another on a single
          system, and from one system to another.  A virus can enter a
          company either by being written within the company, or by
          being brought in from the outside.  Although a virus cannot
          be written accidentally, a virus may be brought in from the
          outside either intentionally or unintentionally.  Viruses
          can enter a company because a program is brought in from
          outside which is infected, even though the person who brings
          it in does not know it.
 
          Because sharing of programs between people is so
          commonplace, it is difficult to prevent an initial infection
          from "outside." An employee may take a program home to use
          it for business purposes on his or her home computer, where
          it becomes infected.  When the program is returned to the
          workplace, the infection can spread to the workplace.
          Similarly, an outside person can bring a set of programs
          into a company in order to perform work desired by the
          company.  If these programs are infected, and they are
          executed on the company's systems, these systems may also
          become infected.
 
          There are two major ways to prevent infection in the first
          place, and to limit the spread of an existing infection:
          isolating systems, and limiting their function.
 
 
 
          2.4.1  Isolated Systems
 
 
          Since viruses spread to new users and systems only when
          information is shared or communicated, you can prevent
          viruses from spreading by isolating users and systems.
          Systems that are connected to other systems by a network can
          spread a virus across that network.  Isolating systems from
          the network will prevent their being infected by that
          network.  If a company maintains connections with other
          companies (or universities, or other institutions) by a
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                 8
 
 
 
 
 
 
 
 
 
          network, a virus may be able to enter the company through
          that network.  By isolating the company from such external
          networks, it cannot be infected by these networks.
 
          This is a reasonable policy to follow when possible,
          especially for those systems which contain especially
          sensitive programs and data.  It is impractical in many
          cases, though.  Networks are valuable components of a
          computing system.  The easy sharing of programs and data
          that they make possible can add substantially to the
          productivity of a company.  You should be aware, however,
          that this sharing also increases the risk of viral infection
          to these systems.  This is especially true if the network
          security measures have not been designed with viruses and
          related threats in mind.
 
          Your organization may wish to limit the kinds of access to
          systems afforded to those outside the organization.  In many
          cases, users of external systems may be less motivated to be
          benevolent to your systems than internal users are.  This
          may make it worthwhile to limit the ability of external
          users to transmit executable files, or have full interactive
          access, to internal systems.
 
          Similarly, movement of programs between personal computers
          on floppy disks can result in one system infecting another.
          If an employee's home computer is infected, for instance,
          bringing a program (or even a bootable disk) from home to
          work could result in the work computer becoming infected.
          You may want to have a policy that employees should not
          bring programs or bootable disks between work and home.  Or,
          you may want to have a policy that employees should use
          virus-detection tools on their home computers as well as
          their work computers.
 
 
 
 
          2.4.2  Limited-Function Systems
 
 
          Since viruses must be able to infect other executable
          objects in order to spread, you can help prevent viruses
          from spreading by eliminating this ability from a computing
          system.  This can be done in some circumstances by
          restricting the ability to add or change programs on a
          system.
 
          If general-purpose programming must be done on a system, as
          is the case with development systems, it is not possible to
          prevent users from creating or adding new programs.  On
          these systems, it is not possible to prevent the
          introduction of viruses under every possible condition.
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                 9
 
 
 
 
 
 
 
 
 
          Many companies have computing systems, including
          workstations and personal computers, that are not used for
          general-purpose programming.  A bank, for instance, may use
          personal computers as teller stations, to handle a fixed set
          of teller transactions.  Since the tellers need not program
          these systems, it may be possible to strictly limit the
          introduction of new programs and thus greatly limit the
          introduction of viruses onto them.
 
          This is a prudent policy.  Whenever practical, limit the
          ability of users to add or change programs on the systems
          they use.  This ability should be restricted to authorized
          personnel, and these personnel should use every means
          available to them to check any new programs for viruses
          before they are installed in the limited-function systems.
          As long as no new programs are introduced, no new viruses
          can be introduced onto these systems.
 
          Remember, though, that the trend in personal workstations
          has been toward the empowerment of the individual user,
          including giving the user the ability to create programs to
          suit his or her own needs.  Thus, it may not be practical
          and competitive in the long run to impose restrictions on
          many systems.  The risk of viral infection must be weighed
          against the benefits of providing power and flexibility to
          the individual user.
 
 
 
 
          2.4.3  Policies for Software Repositories
 
 
 
          Software repositories are places in which programs reside
          which may be used by a number of people.  These may be disks
          on a mainframe, which can be accessed from a number of
          different users' accounts.  They may also be disks on a
          local area network file server, from which many users get
          common programs.
 
          These repositories can pose more of a risk in the spread of
          viruses than most "private" program storage locations.  If a
          commonly-accessed program becomes infected, such as a text
          editor used by an entire department, the entire department
          can become infected very quickly.  So, extra care is
          required to prevent infection of repositories.
 
          A policy can be put into place that requires each program
          added to a repository to be checked thoroughly for possible
          infection.  It is helpful, for instance, to use tools to
          ensure that it is not infected with any of the already-known
          viruses.
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                10
 
 
 
 
 
 
 
 
 
          In cases in which users who access the repository deal with
          especially sensitive programs and data, it may be prudent to
          enforce even more stringent policies.  Programs to be added
          may be tested first on isolated systems, to see if they show
          any signs of infecting other programs.  Or, a repository
          team may inspect the source code of the program for viral
          code.  If no viral code is found, the repository team can
          compile the program on an isolated system that has been
          certified to be free of viruses.  In such a case, the only
          object code allowed on the repository would come directly
          from the team's compilation on its isolated system.
 
          Repositories can also be helpful in detecting and
          controlling viruses.  Consider the situation in which most
          users run a significant amount of the software that they
          execute from a central server to which they do not have
          write access, rather than from individual writeable disks.
          Since the users do not regularly update this software,
          viruses will not be able to spread as quickly between these
          users.  If a program on a central repository becomes
          infected, it may be comparatively simple to replace it with
          an uninfected version (or remove it entirely).  It may be
          more difficult to screen all programs on hundreds of
          individual systems.  It may also be easier to audit the
          usage of, and updates to, a single software repository, as
          opposed to a large number of individual systems.
 
          There are a variety of other areas in many organizations
          which could spread viruses rapidly, and hence which should
          be carefully controlled.  Internal software distribution
          centers, for instance, could spread a virus widely if they
          were infected.  Similarly, a software lending library, if
          infected, may transmit a virus to many other users before it
          is detected.  Walk-in demo rooms and educational centers are
          also potential problems.  In general, any place from which
          software is widely distributed, and which has uncontrolled
          software importation, needs special attention.
 
 
 
 
          2.4.4  Policies for Production Systems
 
 
          Production systems are those systems which are used to
          prepare internally-developed programs for distribution
          either within a company, or for sale to external customers.
          If these systems were infected with a virus, the virus could
          spread to programs used widely within the company, or to
          programs used by the company's customers.  In the former
          case, this could spread the virus widely throughout the
          company.  In the latter case, it could damage the reputation
          of the company with its customers.  There has been
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                11
 
 
 
 
 
 
 
 
 
          documented cases of companies accidentally shipping
          virus-infected program products to customers.
 
          Since the infection of production systems could have serious
          consequences, you should be especially careful about
          protecting them.  The key to this is the institution of
          stringent change control policies on production systems.
 
          They should be strongly isolated from non-production
          systems, so that only known, authorized files can be put
          onto the system.  Each file should be checked for infection,
          to whatever extent possible.  Installing object code on
          these systems should be avoided whenever possible.  Rather,
          source code should be installed, and compiled locally with a
          trusted compiler.  Where the impact of a viral infection
          would be particularly large, it may be important to inspect
          the source code before it is compiled, to avoid the
          introduction of a virus through the source code.  If object
          code must be installed, its origin should be verified
          beforehand.  For instance, object code for a personal
          computer could be installed only from an original,
          write-protected distribution disk, which has been found to
          be free of viruses.
 
          In addition, virus-checking programs (see below) should be
          run frequently on production systems.  On a multitasking
          system, it may be possible to run a virus detector
          continuously in the background.  Further, a policy can be
          instituted which ensures that a virus detector will be
          executed at least once between the time that new files are
          installed on the system, and the time that any files are
          exported from the system.
 
 
 
          2.5  DETECTING VIRAL INFECTIONS
 
 
          With the possible exception of isolation, all of the methods
          outlined above for preventing viral infections are only
          somewhat reliable.  Viruses can still reach some systems
          despite the implementation of preventative measures.
          Indeed, no perfect defense exists that still allows
          programming, and sharing of executable information.  There
          is no "one time fix," as there is for many other computer
          security problems.  This is a hole that cannot be plugged
          completely.  Defenses will have to be improved with time to
          deal with new classes of viruses.  Because of this, virus
          *detection* is an important component of system security.
 
          The two most important resources available for the detection
          of viruses are watchful users and watchful programs.  The
          best approaches to virus detection include both.  The users
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                12
 
 
 
 
 
 
 
 
 
          should be aware of the possibility of viruses, just as they
          are aware of the need for backups, and to know what kinds of
          things to watch for.  System programs and utilities should
          be available to help the users, and the computer center
          staff, to take advantage of this awareness.
 
 
 
          2.5.1  Watching for Unexpected Things Happening
 
 
          If users are aware of the kinds of visible things that are
          known to happen in systems that are virus-infected, these
          users can serve as an important line of defense.  Users
          should know that odd behavior in a computer system may be a
          symptom of penetration by a virus, and they should know to
          whom such odd behavior should be reported.
 
          On the other hand, it is a fact that odd behavior is usually
          *not* caused by viral penetration.  Software bugs, user
          errors, and hardware failures are much more common.  It is
          important to avoid unfounded rumors of viral infections, as
          dealing with such "false alarms" can be costly.  An actual
          infection, however, may require rapid action.  So the group
          to which users report oddities must have the skill to
          determine which reports are almost certainly due to one of
          these more common causes, and which merit closer
          investigation for possible viral infection.  One obvious
          choice for such a group is within the computing center or
          "help desk," since the computing center staff probably
          already has a good idea of what sorts of oddities are
          "business as usual."
 
 
 
          2.5.2  Some Symptoms of Known Viruses
 
 
 
 
          2.5.2.1  Workstation Viruses
 
 
          This section lists specific oddities that are known to occur
          in workstations infected with particular viruses that have
          already occurred.  Some of the things in these examples only
          occur once the virus is in place, and is triggered to
          perform its particular function.  Others occur while the
          virus is still spreading.  Some things users should know to
          watch for include:
 
          o   Unexpected changes in the time stamps or length of
              files, particularly executable files,
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                13
 
 
 
 
 
 
 
 
 
          o   Programs taking longer to start, or running more slowly
              than usual,
          o   Programs attempting to write to write-protected media
              for no apparent reason,
          o   Unexplained decreases in the amount of available
              workstation memory, or increases in areas marked as
              "bad" on magnetic media,
          o   Executable files unexpectedly vanishing,
          o   Workstations unexpectedly "rebooting" when certain
              previously-correct programs are run, or a relatively
              constant amount of time after being turned on,
          o   Unusual things appearing on displays, including
              "scrolling" of odd parts of the screen, or the
              unexpected appearance of "bouncing balls" or odd
              messages,
          o   Unexpected changes to volume labels on disks and other
              media,
          o   An unusual load on local networks or other communication
              links, especially when multiple copies of the same data
              are being sent at once.
 
          It is important to remember, though, that future viruses may
          do none of these things.  Users should be alert to oddities
          in general and should have a place to report them, as
          recommended above.
 
 
 
 
          2.5.2.2  Mainframe Viruses
 
 
 
          Viruses in multi-user computer systems share some of the
          typical behaviors of viruses in single-user workstations.
          In particular, lengths or time stamps of executable files
          may change, programs may load or execute more slowly,
          unusual errors (especially relating to disk-writes) may
          occur, files may vanish or proliferate, and odd things may
          appear on displays.  If the virus is attempting to spread
          between users, users may also notice "outgoing mail" that
          they did not intend to send, "links" to other user's
          information that they did not intentionally establish, and
          similar phenomena.
 
          Generally, the same comments apply in this environment as in
          the single-user workstation environment.  Future viruses may
          do none of these things, and users should be sensitive to
          suspicious oddities in general, and have a place to which to
          report them.
 
 
 
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                14
 
 
 
 
 
 
 
 
 
          2.5.3  Watching for Changes to Executable Objects
 
 
 
          Users are not the only line of defense in the detection of
          viruses.  It is comparatively simple to create programs that
          will detect the presence and the spread of the simpler
          classes of viruses.  Such programs can go a long way in
          "raising the bar" against computer viruses.
 
          One effective approach to detecting simple viruses involves
          notifying the user of changes to the contents of executable
          objects (program files, "boot records" on magnetic media,
          and so forth).  Users can be provided with a program to be
          run once a day which will examine the executable objects to
          be checked, and compare their characteristics with those
          found the last time the program was run.  (This could be run
          at the same time as the backup program, for instance.)  The
          user can then be presented with a list of objects that have
          changed.  If things have changed that should not have, the
          user can contact the appropriate people to investigate.  If
          certain objects that should seldom or never change (such as
          the operating system files themselves) are different, the
          user can be specially warned, and urged to contact the
          appropriate people.
 
          Often, a central system programming group has control over a
          large multi-user computing system.  That group can execute
          this sort of program periodically, to check for changes to
          common operating system utilities, and to the operating
          system itself.  Because viruses can often spread to
          privileged users, they are quite capable of infecting even
          those parts of the system that require the highest authority
          to access.
 
          The frequency with which virus detectors should be used
          depends upon the rate at which executables are transmitted,
          and the value of the information assets on the systems.
          Workstations that are not connected to networks can exchange
          information via floppy disks.  The known computer viruses
          that propagate by way of floppy disks do so relatively
          slowly.  It may take days, or weeks, or even months for such
          a virus to propagate across a large organization.  In this
          case, running virus detectors once a day, or once a week,
          may be sufficient.  For systems connected to networks,
          especially large-scale networks, the situation is much
          different.  Experience has shown network viruses to be
          capable of spreading very rapidly across the network.  In
          some cases, replicating programs have spread across
          nationwide networks in a matter of hours or days.  In these
          cases, it may be important to run virus detectors hourly or
          daily.
 
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                15
 
 
 
 
 
 
 
 
 
          Below is an outline of one possible implementation of a
          virus detecting program.  It is for illustration only; many
          different structures would do the job as well or better.
 
          1.  The program obtains a list of files to be checked.  For
              PC-DOS, for instance, this should include .COM and .EXE
              files, any files that are listed as device drivers in
              the CONFIG.SYS file, the CONFIG.SYS file itself, and any
              other executables such as batch files or BASIC programs.
          2.  For each of these files, the program
              o   Determines the time/date and length of the file from
                  the operating system.
              o   If desired, actually reads the data in the file, and
                  performs a calculation such as a CRC (cyclic
                  redundancy check) on the data.  (The number of files
                  checked in such detail depends on the importance of
                  the file, the speed of the program, and the amount
                  of time the user is willing to spend.)
              o   Compares this file information (time/date, length,
                  and perhaps CRC or other code) with the database
                  generated last time the program was run.
              o   If the file was not present the last time the
                  program was run, or if the information in the
                  previous database was different from the information
                  just obtained, the program records that the file is
                  new or changed.
          3.  After checking all relevant files, the program reads all
              other known executable objects in the system(1), and
              compares their CRC or other codes with the values in the
              database, and records any changes.
          4.  When all the existing objects have been checked in this
              way, the program updates the database for next time and
              presents all its findings to the user.
          5.  On the basis of this information, the user can decide
              whether any of the reported changes are suspicious, and
              worth reporting.
 
          This method is by no means foolproof.  A sophisticated virus
          could do a variety of things.  It could change an executable
          object without altering the time, date, length, or CRC code.
          It could only alter objects that had been legitimately
          changed recently.  It could act directly on the database
          itself and thus escape detection.  More sophisticated
          versions of the program outlined here can provide
          significantly more foolproof detection.  It is advantageous
          to have many different virus detectors in place at the same
 
          ----------------
          (1) For PC-DOS, this would typically include the boot record
              on a floppy diskette, and the master and partition boot
              records on hard disks.  For multi-user operating
              systems, this might include "shared system images," or
              "IPL datasets" or equivalent objects.
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                16
 
 
 
 
 
 
 
 
 
          time.  That way, a virus that can evade one detector may be
          caught by another.  Nevertheless, user awareness, and
          procedures for recovery in the event of an infection that is
          not detected until too late, are both still vital.
 
 
 
          2.5.4  Using External Information Sources
 
 
          Software viruses are able to spread because information
          flows so quickly in the modern world.  That same information
          flow can help in the detection of viruses.  Newspapers,
          magazines, journals, and network discussion groups have
          carried significant amounts of material dealing with
          computer viruses and other forms of malicious software.
          These sources of information can be valuable in maintaining
          awareness of what hazards exist, and what measures are
          available to detect or prevent specific viruses.  This kind
          of information can be invaluable to the people in your
          organization charged with investigating suspicious events
          reported by users, and deciding which ones to follow up on.
          On the other hand, these channels also carry a certain
          amount of inevitable misinformation, and care should be
          taken not to react to, or spread, rumors that seem to have
          no likely basis in fact.
 
 
 
          2.6  CONTAINING VIRAL INFECTIONS
 
 
          Having procedures in place to detect viral infection is very
          important.  By itself, however, it is of little use.  The
          individual who makes the first detection must have a
          procedure to follow to verify the problem and to make sure
          that appropriate action occurs.  If the information supplied
          in the detection phase is allowed to "fall between the
          cracks," even for a relatively short time, the benefit of
          detection can easily be lost.
 
 
 
 
          2.6.1  The Importance of Early Detection
 
 
          Computer viruses generally spread exponentially.  If a virus
          has infected only one system in a network on Monday, and
          spread to four by Tuesday, sixteen systems could easily be
          infected by Wednesday, and over five hundred by Friday.
          (These numbers are just samples, of course, but they give an
          idea of the potential speed of spread.  See reference (1)
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                17
 
 
 
 
 
 
 
 
 
          for some experiments in which much faster spread was
          observed.)
 
          Because viruses can spread so fast, it is very important to
          detect them as early as possible after the first infection.
          The surest way of doing this is to have every vulnerable
          user run the best available virus-detection software as
          often as feasible.  This solution may be too expensive and
          time-consuming for most environments.
 
          In most groups of users, it is possible to identify a number
          of "star" users who do a disproportionately large amount of
          information-exchange, who generally run new software before
          most people do, and who are the first to try out new things
          in general.  In multi-user systems, some of these people
          often have special authorities and privileges.  When a virus
          reaches one of these people, it can spread very rapidly to
          the rest of the community.  In making cost/benefit decisions
          about which users should spend the most time or effort on
          virus-detection, these are the people to concentrate on.
 
 
 
 
          2.6.2  The Importance of Rapid Action
 
 
          When a virus is detected, every moment spent deciding what
          to do next may give the virus another chance to spread.  It
          is vital, therefore, to have action plans in place *before* an
          infection occurs.  Such plans should include, for instance:
 
          o   Designation of one particular group (whether formal or
              informal) as the "crisis team,"
          o   Procedures for identifying infected systems, by
              determining how and from where the infection reached
              each system known to be infected,
          o   Procedures for isolating those systems until they can be
              rendered free of the virus,
          o   Procedures for informing vulnerable users about the
              virus, and about how to avoid spreading it themselves,
          o   Procedures for removing the virus from infected systems,
          o   Procedures for identifying the virus involved, and for
              developing or obtaining specific software or procedures
              to combat the virus.  These may remove the virus from
              infected systems and files, determine whether or not
              backups are infected, and so on.
          o   Procedures for recording the characteristics of the
              virus and the effectiveness of the steps taken against
              it, in case of later re-infection with the same or a
              similar virus.
 
          Some suggestions for recovery are given in the next section.
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                18
 
 
 
 
 
 
 
 
 
          2.7  RECOVERING FROM VIRAL INFECTIONS
 
 
          Once a virus has been detected and identified, and measures
          have been taken to stop it from spreading further, it is
          necessary to recover from the infection, and get back to
          business as usual.  The main objective of this activity is
          to provide each affected user with a normal, uninfected
          computing environment.  For individual workstations, this
          means ensuring that no infected objects remain on the
          workstation.  For more complex environments, it means
          ensuring that no infected objects remain anywhere on the
          system where they might inadvertently be executed.
 
          The basic recovery activities are:
 
          o   Replacing every infected object in the system with an
              uninfected version, and
          o   Restoring any other objects that the virus' actions may
              have damaged.
 
          It is of critical importance during these activities to
          avoid re-introducing the virus into the system.  This could
          be done, for instance, by restoring an infected executable
          file from a backup tape.
 
 
 
 
          2.7.1  Restoration and Backups
 
 
 
          An obvious but incorrect approach to removing the infection
          from a system is simply to restore the infected objects from
          backups.  This is *not* a wise thing to do, however, since
          the backups themselves may be infected.  If the virus first
          entered the system sufficiently long ago, infected objects
          may well have been backed up in infected form.
 
          Once the virus has been well understood, in terms of what
          types of objects it spreads itself to, three different
          categories of objects may be considered for restoration:
 
          o   Objects of the type that the virus infects.  These
              should only be restored from backups if the backed-up
              versions are thoroughly and individually checked for
              infection by the virus.  If it is possible, it is
              preferable to restore the objects from more "trusted"
              sources, such as original, unwriteable, copies supplied
              by the manufacturer, or by recompiling source code.
              Even in these cases, it is worthwhile to check once
              again for infection after restoration has been done.
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                19
 
 
 
 
 
 
 
 
 
          o   Objects of types that the virus does not infect, but
              which have been destroyed or altered by the virus'
              actions.  These can generally be restored from backups
              safely, although again it is worth checking the
              integrity of the backed-up copies.  If the virus has
              been in the system long enough, it may have damaged
              objects that were later backed up.
 
          o   Objects of types that the virus neither infects, nor
              damages.  If you are very sure that the virus does not
              infect or alter certain types of files, there may be no
              need to restore those files during the recovery process.
 
 
 
          2.7.2  Virus-Removing Programs
 
 
          Once a virus has been studied, you can write or obtain
          programs to help remove that particular virus.  One type of
          these programs checks for the presence of the virus in a
          executable objects.  Another type tries to remove the
          infection by restoring the object to its previous uninfected
          form.  "Checking" programs can be extremely valuable during
          the recovery process, to ensure that files that are being
          restored after infection or damage by the virus are now
          "clean." "Removal" programs are somewhat less useful, and
          should usually only be used when there is no other practical
          way to obtain an uninfected version of the object.  Removing
          a virus from an executable object can be a complex and
          difficult process, and even a well-written program may fail
          to restore the object correctly.
 
 
 
          2.7.3  Watching for Re-Infection
 
 
          Once recovery is complete, and all known infected and
          damaged objects have been restored to uninfected and correct
          states, it is necessary to remain watchful for some time.  A
          system that has recently been infected by a certain virus
          runs an increased risk of re-infection by that same virus.
          The re-infection can occur through some obscure, infected
          object that was missed in the recovery process.  It can also
          occur from the same outside source as the original
          infection.  This is especially true if the original source
          of infection is not known.
 
          Vigilance in the use of general virus-detection programs,
          like those described above, continues to be important.  In
          addition, it will often be possible to obtain or write
          programs designed to detect the specific virus from which
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                20
 
 
 
 
 
 
 
 
 
          the system has just recovered.  Specific virus-detection
          programs of this kind are particularly useful at this time.
          The same users who use the general virus-detection programs,
          and any users who would be specifically vulnerable to the
          virus just recovered from, can be given such programs to
          run.  This increases the probability of detection, should an
          infection recur.  The programs might also be incorporated
          into the backup system for a time, to scan files being
          backed up for infection, and even into appropriate places in
          networks and file-sharing systems.  Because such checks will
          introduce extra overhead, there will be a trade-off between
          performance and added security in considering how long to
          leave them in place.
 
 
 
          2.8  SUMMARY AND RECOMMENDATIONS
 
 
          Computer viruses can pose a threat to the security of
          programs and data on computing systems.  We have suggested
          several means of limiting this threat.  They are summarized
          below.
 
 
          o   Viruses represent a new kind of threat to the security
              of computing systems.
 
              -   They can be spread without the intent of the people
                  who spread them.
              -   They can spread widely and quickly within an
                  organization, reaching systems and users well beyond
                  the initial infection point.
              -   They can perform virtually any action that their
                  designer intends.
 
 
          o   The risks posed by viruses can be limited by proper
              action.
 
              -   Follow good security practices in general.
 
                  --  Educate your users about security threats,
                      including computer viruses.
                  --  Make sure that good backups are kept of all
                      important data.
 
              -   Take steps to reduce the possibility of being
                  infected.
 
                  --  Where practical, isolate critical systems from
                      sources of infection, such as networks and
                      outside programs.
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                21
 
 
 
 
 
 
 
 
 
                  --  Where practical, limit the ability to create or
                      install new programs on those systems which do
                      not require this ability.
                  --  Ensure that adequate controls exist on software
                      repositories, production systems, and other
                      important areas of your organization.  These
                      include careful change management and the use of
                      virus detectors.
 
              -   Take steps to ensure that virus infections will be
                  detected quickly.
 
                  --  Educate your users about possible warning signs.
                  --  Use virus detectors, which will inform users of
                      the unintended modification of programs and
                      data.
                  --  Make sure your users know to whom they can
                      report a potential problem.
 
              -   Take steps to contain virus infections that are
                  detected.
 
                  --  A plan to deal with an infection should be put
                      into place *before* an infection occurs.
                  --  A "crisis team" should be put into place, which
                      can respond quickly to a potential problem.
                  --  Isolate infected systems until they can be
                      cleaned up, to avoid them infecting other
                      systems, and to avoid their becoming reinfected.
 
              -   Take steps to recover from viral infections that are
                  contained.
 
                  --  Be able to restore critical programs and data
                      from virus-free backups.
                  --  Know how to remove viruses from programs if
                      virus-free backups are unavailable.
                  --  Watch for a reinfection from that particular
                      virus.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
          Coping with Computer Viruses: A Guide for Technical
          Management                                                22
 
 
 
 
 
 
 
 
 
          FOR FURTHER READING
 
 
 
          (1)  Fred Cohen, "Computer Viruses: Theory and Experiment,"
                Computers & Security, Vol. 6 (1987), pp. 22-35
 
          (2)  Fred Cohen, "On the Implications of Computer Viruses
                and Methods of Defense," Computers & Security, Vol. 7
                (1988), pp. 167-184
 
          (3)  W.H. Murray, "Security Considerations for Personal
                Computers," IBM System Journal, Vol. 23, No. 3 (1984),
                pp. 297-304
 
          (4)  --, "Security Risk Assessment in Electronic Data
                Processing Systems," IBM Publication Number
                G320-9256-0 (1984)
 
          (5)  --, "Good Security Practices for Information Systems
                Networks," IBM Publication Number G360-2715-0 (1987)
 
          (6)  --, "An Executive Guide to Data Security," IBM
                Publication Number G320-5647-0 (1975)
 
          (7)  --, "Security, Auditability, System Control
                Publications Bibliography," IBM Publication Number
                G320-9279-2 (1987)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
          For Further Reading                                       23
 
 
 
 
 
 
 
 
 
                GLOSSARY
 
 
 
                Computer viruses and the like are relatively new
                phenomena.  The terms used to describe them do not
                have definitions that are universally agreed upon.  In
                this glossary, we give definitions that try to clarify
                the differences between the various concepts.  These
                terms may be used differently elsewhere.
 
 
 
                Availability:  That aspect of security that deals with
                the timely delivery of information and services to the
                user.  An attack on availability would seek to sever
                network connections, tie up accounts or systems, etc.
 
                Back Door:  A feature built into a program by its
                designer, which allows the designer special privileges
                that are denied to the normal users of the program.  A
                back door in a logon program, for instance, could
                enable the designer to log on to a system, even though
                he or she did not have an authorized account on that
                system.
 
                Bacterium (informal):  A program which, when executed,
                spreads to other users and systems by sending copies
                of itself.  (Though, since it does "infect" other
                programs, it may be thought of as a "system virus" as
                opposed to a "program virus.") It differs from a
                "rabbit" (see below) in that it is not necessarily
                designed to exhaust system resources.
 
                Bug:  An error in the design or implementation of a
                program that causes it to do something that neither
                the user nor the program author had intended to be
                done.
 
                Confidentiality:  That aspect of security which deals
                with the restriction of information to those who are
                authorized to use it.  An attack on confidentiality
                would seek to view databases, print files, discover a
                password, etc., to which the attacker was not
                entitled.
 
                Integrity:  That aspect of security that deals with
                the correctness of information or its processing.  An
                attack on integrity would seek to erase a file that
                should not be erased, alter an element of a database
                improperly, corrupt the audit trail for a series of
                events, propagate a virus, etc.
 
 
 
 
          Glossary                                                  24
 
 
 
 
 
 
 
 
 
                Logic Bomb:  A Trojan Horse (see below), which is left
                within a computing system with the intent of it
                executing when some condition occurs.  The logic bomb
                could be triggered by a change in a file (e.g. the
                removal of the designer's userid from the list of
                employees of the organization), by a particular input
                sequence to the program, or at a particular time or
                date (see "Time Bomb" below).  Logic bombs get their
                name from malicious actions that they can take when
                triggered.
 
                Rabbit (informal):  A program is designed to exhaust
                some resource of a system (CPU time, disk space, spool
                space, etc.) by replicating itself without limit.  It
                differs from a "bacterium" (see above) in that a
                rabbit is specifically designed to exhaust resources.
                It differs from a "virus" (see below) in that it is a
                complete program in itself; it does not "infect" other
                programs.
 
                Rogue Program:  This term has been used in the popular
                press to denote any program intended to damage
                programs or data, or to breach the security of
                systems.  As such, it encompasses malicious Trojan
                Horses, logic bombs, viruses, and so on.
 
                Security:  When applied to computing systems, this
                denotes the authorized, correct, timely performance of
                computing tasks.  It encompasses the areas of
                confidentiality, integrity, and availability.
 
                Time Bomb:  A "logic bomb" (see above) activated at a
                certain time or date.
 
                Trojan Horse:  Any program designed to do things that
                the user of the program did not intend to do.  An
                example of this would be a program which simulates the
                logon sequence for a computer and, rather than logging
                the user on, simply records the user's userid and
                password in a file for later collection.  Rather than
                logging the user on (which the user intended), it
                steals the user's password so that the Trojan Horse's
                designer can log on as the user (which the user did
                not intend).
 
                Virus (pl. viruses):  a program that can "infect"
                other programs by modifying them to include a possibly
                evolved copy of itself.  Note that a program need not
                perform malicious actions to be a virus; it need only
                "infect" other programs.  Many viruses that have been
                encountered, however, do perform malicious actions.
 
                Worm:  A program that spreads copies of itself through
                network-attached computers.  The first use of the term
 
 
          Glossary                                                  25
 
 
 
 
 
 
 
 
 
                described a program that copied itself benignly around
                a network, using otherwise-unused resources on
                networked machines to perform distributed computation.
                Some worms are security threats, using networks to
                spread themselves against the wishes of the system
                owners, and disrupting networks by overloading them.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
          Glossary                                                  26
 
 
 
 
 
 
 
 
 
                APPENDIX: VIRAL INFECTIONS IN PC-DOS
 
 
 
                This section is intended to give an example of the
                places in a typical computer system where a virus
                might enter.  It is intended for a reader with some
                knowledge of the workings of PC-DOS, although it may
                be instructive to others as well.  PC-DOS was chosen
                for convenience; many computer systems have similar
                vulnerabilities.
 
                Consider the process that is required for you to run a
                single program.  What is happening?  Which parts do
                you not bother checking since you have seen it a
                million times?
 
                For example, you turn on the power switch and then ...
 
                o   You boot off the disk.  What code ran to enable
                    you to boot off the disk?
 
                o   You boot off a diskette drive.  Again ...
 
                o   You run a program.  It reads off a disk.  What was
                    actually read in?  How was it read in?  What did
                    the reading?
 
                o   You compile a program.  Are you using any library
                    files?  What is in them?
 
                o   When was the last time you looked at your
                    CONFIG.SYS?  AUTOEXEC.BAT?
 
                o   You just bought a brand new program.  You just
                    brought it home from the store.  What do you know
                    about the program?  About the company that
                    produced it?
 
                This list is not meant to be all-inclusive nor
                thorough.  It is meant to be a spark to start
                education.  Let us continue by examining each of these
                cases.  (Where found, the symbol "(!)" is used to
                designate a potential point of attack for viruses.)
 
 
 
 
                When you turn on the power switch
 
 
                Before we investigate the different cases above, we
                examine the steps that occur when you first flip the
                power switch of your IBM PC to the ON position.
 
 
          Appendix: Viral Infections in PC-DOS                      27
 
 
 
 
 
 
 
 
 
                Power is given to the system.  A section of code known
                as POST (Power On Self Test) residing in ROM (Read
                Only Memory) starts running.  It checks memory,
                devices, peripherals, and then transfers control to
                any "properly signatured" ROMs found in the I/O
                channels.  Assuming those pieces run smoothly, control
                returns to POST.  When POST completes, it searches for
                a diskette in the diskette drive.  If unsuccessful, it
                tries to boot off a hard file.  And finally, if
                neither works, it starts running the BASIC interpreter
                which is found in its ROM.
 
                The first place where programs are read into system
                RAM (Random Access Memory) is the hard file or
                diskette boot up process.  Until then, all the code
                that is run has come from ROM.  Since these ROMs are
                from trusted sources, we must assume that they have
                not been created with viruses installed.  ROMs, by
                their nature, can only be written by special
                equipment, not found in your PC.  Thus to tamper with
                them, they must be removed and/or replaced without
                your knowledge.  For the purposes of this discussion,
                we will assume that this has not happened.
 
 
 
                Boot from hard file
 
 
                When the computer boots off the hard file, it relies
                on code which has been placed in two areas on the hard
                file.  The first location is the master boot
                record(!).  The master boot record contains code and
                information to designate which "system boot record"(!)
                to read and run.  This is the "active partition."
                There are potentially many system boot records, one
                for each partition, while there is only one master
                boot record.
 
                Boot records on a fixed disk vary.  But usually, up to
                a whole track is reserved.  This is a large amount of
                space, most of which is not normally used.  The large
                empty space provides a potential area for viruses to
                hide.
 
 
 
                Boot from diskette
 
 
                For a floppy disk, the boot record is a properly
                "signatured" sector at head 0 track 0 sector 1 of the
                disk(!).  If the machine finds a proper signature, it
                takes the bytes stored in that sector and begins
 
 
          Appendix: Viral Infections in PC-DOS                      28
 
 
 
 
 
 
 
 
 
                executing them.  This code is usually very short.
                Usually, one of the first things it does is to tell
                the machine where to get other sectors to form a
                complete boot up program.
 
                Viruses can hide parts of themselves on either hard or
                floppy disks, in sectors that they mark as "bad."(!)
                These sectors would require special commands to be
                read.  This prevents the code from being accidentally
                overwritten.  They also provide an obvious sign,
                should you be looking for them (CHKDSK will report bad
                sectors).
 
 
 
                PC-DOS, the operating system
 
 
                The purpose of the boot records is to load the
                operating system.  This is done by loading files with
                the names IBMBIO.COM(!), IBMDOS.COM(!), and
                COMMAND.COM(!).  These files contain the operating
                system.
 
                After the operating system is loaded, it becomes the
                integral portion of all system activities.  This
                includes activities such as reading and writing
                files(!), allocating memory(!), and allocating all
                other system resources(!).  Few applications exist
                that do not use the operating system to take advantage
                of the system resources.  Thus, some viruses change
                COMMAND.COM or intercept attempts to request a system
                resource.
 
                The purpose of such action would be two-fold.  The
                first purpose is to place the virus in a common code
                path, so that it is executed frequently so that it may
                have ample opportunity to spread.  The second is to
                cause damage, intercepting the proper request and
                altering the request.
 
 
 
 
                Running a program
 
 
                What code runs when you run a program? (!)  (The
                following list is not meant to be complete.  It is to
                show you that any link could be a potential point of
                attack for a virus.  Since the virus' purpose is to be
                executed frequently, it would find itself executed
                frequently enough if it resided in any of the
                following areas.)
 
 
          Appendix: Viral Infections in PC-DOS                      29
 
 
 
 
 
 
 
 
 
                o   DOS accepts your keystrokes.
 
                    -   BIOS INT 9H, INT 16H, INT 15H, INT 1BH
                    -   DOS INT 21H keyboard functions, INT 28H
                    -   Any keyboard device driver or TSR (Terminate
                        and Stay Resident) program.
 
                o   DOS loads your program
 
                    -   BIOS INT 13H, INT 40H, INT 15H
                    -   DOS INT 21H file search functions, memory
                        allocation, set DTA, disk read, CTRL-BREAK
                        check, etc.
                    -   Any DOS extension driver or TSR (Terminate and
                        Stay Resident) program.
 
                o   General background functions
 
                    -   BIOS INT 8 (timer), INT 0FH (printer), INT 1CH
                        (timer)
                    -   Any system driver or TSR (Terminate and Stay
                        Resident) program.
 
                All these things happen and more, each time you run a
                program.
 
 
 
                CONFIG and AUTOEXEC
 
 
                Every time you boot your system, CONFIG.SYS(!)  and
                AUTOEXEC.BAT(!) tell the system to load many files and
                options before you can start working on the computer.
                If a virus decided to attach an extra line of
                instruction to one of these files, it would result in
                the program being loaded each day.  When was the last
                time you looked at CONFIG.SYS?  AUTOEXEC.BAT?  Do you
                remember the reason for the existence of each line in
                the two files?
 
 
 
                Compiling programs, using libraries
 
 
                When you compile a program, you use several programs.
                One is the compiler itself (!).  If the compiler is
                infected with a virus, the virus may spread to other,
                unrelated programs.  But it could also spread to the
                program being compiled.
 
                When a compiled program is linked to form an
                executable program, it is common to link in programs
 
 
          Appendix: Viral Infections in PC-DOS                      30
 
 
 
 
 
 
 
 
 
                from libraries(!).  These library programs provide
                standard operating system interfaces, perform input
                and output, and so on.  If one or more of the library
                programs are infected with a virus, then every program
                which is linked with it will be infected.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
          Appendix: Viral Infections in PC-DOS                      31