[Image] Things that Go Bump in the Net This is a brief look at some of the more colorful characters in the menagerie of network security threats, with an emphasis on how they relate to agent-based systems. The Massively Distributed Systems group in IBM Research conducts research into these and other emergent concerns in future distributed systems. ---------------------------------------------------------------------------- Trojan horses A Trojan horse is a program that does something that the programmer intended, but the user would not approve of if he knew about it in advance. Because most current security systems are based primarily on user-level privilege rather than program-level privilege, any program that you run can read any object you have read-access to, write to any object that you have write-access to, and execute any program or command that you are authorized to execute. A Trojan horse concealed in a random game program downloaded from your favorite newsgroup can read any file you have read access to, and mail it anywhere in the world. It can erase, or just shuffle around a few bytes in, any file you can write to. It can send obscene messages to the White House, or post embarassing things to random newsgroups. And it can copy itself into any program that you have write access to (see Viruses and Worms below). In a mobile-agent system, it is critical to ensure that arriving agents execute in a controlled environment, and are able to do only those things that they are authorized to do. Agents should be trusted only as far as the least-trusted entity that may have been able to alter the program or internal state of the agent; secure authentication methods (such as digital signatures) must be used carefully when it is necessary to establish the real author or sender of an agent. See Itinerant Agents for Mobile Computing for some related security considerations in these sorts of systems. ---------------------------------------------------------------------------- Viruses and Worms A virus is a program (generally a Trojan horse) that spreads, by making copies of iteslf in one way or another. In the microcomputer environment, viruses generally spread by writing copies of themselves into other programs, or into boot records of disks and diskettes. (For more information on computer viruses in PC-compatible machines, see the IBM Computer Virus Information Center.) A worm in a networked environment is generally a self-sufficient program that spreads by spawning copies of itself on other hosts in the network. One famous worm caused great disruption on the Internet in 1988. There is no hard line between viruses and worms; in general, if the spreading entity is a self-sufficient program, it will be called a worm, whereas if it embeds itself inside other programs or boot code, it will be called a virus. Can a virus spread between agents in a mobile-agent system? So far, the consensus seems to be that there is no particular reason to allow one agent to alter the code of another already-existing agent. If the agent infrastructure does not allow this, no virus will be able to spread from agent to agent. On the other hand, if the infrastructure accidentally or purposely does allow one agent to alter another, inter-agent viruses will be possible. Are worms possible in mobile-agent systems? If one agent can create another agent, the possibility of runaway worm reproduction exists. Agent reproduction must be controlled in one way or another to limit the possibility; if agents can create other agents, they must be charged in some scarce currency, or limited in how large their tree of descendants can get, or otherwise kept from having children and grandchildren without bound. ---------------------------------------------------------------------------- Flash Crowds The term Flash Crowd was first used by Larry Niven, in a science fiction short story. In the story, cheap local teleportation has become possible; now, the sites of attractive news stories are instantly innundated with rubberneckers teleporting in to watch. As systems become more interconnected and more powerful, we have the equivalent of cheap teleportation; if a Web site becomes known as particularly interesting, its usage curve can go exponential, causing network bottlenecks and server crashes. In networks of agents, a vast number of similarly-programmed agents, like a horde of similarly-programmed trading programs causing a market crash, can cause network congestion and server overload. And if the agents all adopt similar fallback strategies in response to overload, the flash crowd can migrate from server to server on the net, leading to surging hard-to-remedy travelling overloads. ---------------------------------------------------------------------------- Weeds, Freeloaders and Flying Dutchmen A weed is a program (or anything else in a system) that does no one any good, but that uses such a small amount of resources that it's often not cost-effective to do anything about it. Eventually, weeds start to accumulate, and it's time to get out the clippers. Or the herbicide. A freeloader is a program that uses some system or server resources to survive and possibly benefit its creator, without paying for them. Servers may provide some minimal service for free, in order to attract paying customers, or unintentionally, as an unintended effect of complex cost structures; there may be ways to arrange for some transaction charges, especially small ones, to be lost in the shuffle. A freeloader exploits these sorts of things to operate free of charge. Named for the legendary ghost-ship, a Flying Dutchman is a freeloader that manages to become effectively immortal, without paying for the resources that it uses to survive. A Flying Dutchman may move from host to host, never quite using enough resources to be killed; it may spawn a copy of itself on another host just before it is terminated, ensuring an unending gene-line. A Zombie is similar to a Flying Dutchman; it is a program that has been terminated, but continues to consume some resources anyway, due to (sometimes infinite) delays in cleaning up all the resources associated with it. Zombies can sometimes get enough resources to do actual processing; more often, they exist only as the undead owners of various kinds of space. A single freeloading or immortal program will not in itself damage a distributed system, and we anticipate that a typical agent-based system will tolerate a low level of freeloading. An analogy is to physical stores, which will tolerate a certain number of people coming in to get out of the rain and using the restrooms, on the chance that they may eventually buy something. Uncontrolled, a large number of weeds can waste significant amounts of system resources; distributed systems will need the ability to monitor this sort of activity, and impose controls if it gets out of hand. Requests from known freeloaders may be charged for, even in cases that are normally free. Intelligent monitoring processes may be needed to identify and terminate intentionally or accidentally immortal programs that are serving no useful purpose. Other sorts of weeds will no doubt require other sorts of solutions; the unexpected is likely. ---------------------------------------------------------------------------- The Usual Suspects As well as these new and somewhat speculative threats, most of the traditional computer-security worries, such as basic access control, authentication, secure encryption, and so on, also apply to network and agent security. IBM Research has various other security-related projects. Or follow this link for some good leads on both traditional and non-traditional computer security topics in the rest of the universe. ---------------------------------------------------------------------------- David Chess, chess@watson.ibm.com Thanks to Gene Spafford at Purdue, whose talk "Viruses, Worms, and Things that go Bump in the Net" may have inspired the title for this page; tricky things, replicators! ---------------------------------------------------------------------------- [ IBM home page | Order | Search | Contact IBM | Help | (C) | (TM) ] 