This document has been created to describe a concept that may be of use in a variety of fields.
It should be considered a general concept only and is subject to change.

This CPAN/POD version of the document,
first published in December 2004 at http://ali.as/devel/threatnetwork.html,
has been released to independantly timestamp and archive the concept and proposal in case of future patent-related issues by companies and to attempt to keep the core idea available to all.

On the Internet there exists an increasing number of different ways in which hosts are being misused or abused.
Likewise there is also an increasing number of ways in which these known-bad hosts are being identified.
Most of these occur in the process of a particular task,
such as checking an email message for spam status.

As these hosts are identified,
their identify is transmitted across to internet to members of threat networks.
The most common of these are the various email "black lists",
most of which use DNS or some other method to publish lists of known-bad ips or ip ranges.
Mail processing services submit requests to a DNS server storing these lists to determine if a particular host contacting them is a known spammer.

This draft specification describes a system which would be used to identify a specific category of these bad ips,
hosts that can be considered "Active Threats".
An Active Threat is a host that is currently engaged in anti-social,
damaging or criminal behaviour,
such as actively sending out spam or viruses.
This specification is NOT intended to deal with long-term offenders,
as they are addressed by a number of current systems.

If applied to long term offenders,
hosts would be registered as an Active Threat when they commence their anti-social behaviour,
and fall off any list during periods in which they are not conducting this behaviour.

The general intent is to deal with only those hosts that are actively engaged in damaging behaviour,
whether or not they are long term offenders or new offenders.
And to deal with the hosts as soon as possible,
ideally within a few seconds.

The ThreatNet concept is specifically intended to address active and transient threats.
If a Verified Threat is detected at time $t,
other members of the same Threat Network should start to recieve notification before time $t + 1 (within 1 second).
Full propagation to all members,
and any subsequent responses,
should be complete within by $t + 60 (within 1 minute).

Within a second of a host being detected conducting some anti-social behaviour,
the member should be able to confirm this behaviour and the host ip responsible for it,
and classify the host as a Verified Threat,
issuing a message into a Threat Network.
Notification to all members of the Threat Network and any other linked networks should occur as quickly as the Internet and Threat Network itself is able to spread this information.
Any members who wish to respond to the threat,
or are able to neutralise it,
should be able to act within a few seconds and certainly within a minute.

For the example of spam,
this would allow newly compromised hosts ("zombies") acting as spam or virus agents that are not on current block lists to be dealt with and blocked before they are able to send significant amounts of spam.
This could also allow for compromised hosts on dynamic IPs to be blocked each time they move IPs without significantly damaging subsequent users of the IPs,
or needing to block the entire IP range.
This could also help to reduce the impact of new and fast-moving viruses,
as any newly infected computers appearing within properly managed ISPs could be disconnected and disabled before they are able to make a significant number of attempts to reproduce.

The implementation should be as flexible as possible and integrate with many other current systems,
or provide a way for developers to do this integration themselves.
Although the initial idea for this concept was as an anti-spam system,
it should not be considered solely an anti-spam tool,
and should be able to be easily reconfigured for use in any other scenario that involves similar sorts of rapid responses to threats.

The entire system should be defined as a set of separate components,
any of which can be replaced,
improved or set up in a variety of different ways.
Each function or role should be identified separately so that new systems and implementations can provide one particular role without needing to implement all of them.

Most existing anti-spam or anti-threat networks involve a central authorative data source,
and a central authorative distribution network to spread it,
typically a managed database of some sort and a DNS/rsync combination.
Centralising in this way can lead to the blocking systems themselves becoming the target of both technical and legal attacks.

Extreme measures are often required to protect (technically and legally) the blocking systems.

This proposal involves a decentralised system with no long term state information and no central server or service that can be implemented in an ad-hoc way.
Having limited the scope of the network to short term and transient threat this can be done relatively easily.

Short term state information is held locally at each node,
and a mandory "quiet period" is enforced when joining a new network to let the new member synchronise with the network.

This quiet period will keep load and communication volume down,
and let new members join a network without the need for a synchronisation event.

By waiting for the network's block period before contributing,
each node can be sure that it has fully synchronised with the network before beginning to contribute block entries that might otherwise be duplicates.

In order to get this concept off the ground and running quickly,
and to help implement it as flexibly as possible,
it is proposed that the system makes use of common,
time-tested,
well-supported and mature systems wherever possible.

Long term blocking,
and the blocking of entire subnets,
may not be suitable for dealing with new and short term threats.
One bad apple can ruin it for the entire barrel.
While the ability to "poison" a Threat Network may still exist as it does in existing blocking systems,
this poisoning would need to be active and continuous,
"re-poisoning" the Threat Network with new messages each time the short block period nears its end.

For dynamic IP connections,
any response taken against a single IP will expire automatically within the block period,
once the host stops use of the IP.

As with any security system,
the greater and higher profile its use,
the bigger the target it becomes and more likely to be attacked.
The system should be designed from the start to be able to stand up to attack when deployed in high-profile scenarios,
and to degrade gracefully where possible to retain at least partial functionality.

At the core of the Threat Network is a messaging platform.
As an extremely mature and often-attacked network messaging system,
IRC would appear an ideal platform to use for this purpose.
Libraries to connect to and work with IRC already exists in almost every programming language.
In addition,
it can be deployed extremely flexibly from either a non-authenticated channel on an existing IRC network to secret and private dedicated servers with encryption,
certificate-backed authentication,
and agent-based monitoring.

Each member of the network should interact in a standard and relatively flexible language.
While this specification does not attempt to describe the details of any particular language,
for example purposes only we will start with the simplest possible language.
The sample language contains only a single message with only the IP address of a validated threat,
assumed to have been detected within a few seconds of the threat event occurring.

Within the IRC Threat Network,
there exists a number of members,
each consisting of at least a software agent.
Any agent connected to the system will consist of at least the Event Listener element described below,
and one or more optional elements.
At least one agent is required to implement the Threat Provider element in order to create a working system.

A pure Event Listener is a passive agent that listens on a Threat Network for threat messages and optionally acts upon them.
Every agent connected to the Threat Network is required to implement an Event Listener to monitor incoming messages,
if only to prevent issuing duplicate messages.

Many of the agents that would implement only the Event Listener would act as interfaces and adapters to other systems.

As one example,
a ThreatNet to DNSBL adapter might listen for threat messages,
submit a DNSBL request against each IP,
and for each IP that isn't already listed,
add it to the local DNSBL server with a short TTL most likely matching the ThreatNet block period.

A ThreatNet to firewall adapter could listen for specific types of high-impact threat messages and inject blocks into a firewall configuration,
allowing particular types of threats to be blocked at a connection level.

Depending on the scale of the network,
and the ability of the adapter to handle the volume of responses,
the Event Listener may need to institute some form of queuing or flood control.
It would be expected that such flood control would become common were the popularity of Threat Networks to grow significantly.

While some Threat Network agents do not need to maintain state,
a great many agent types do,
in particular anything that wishes to submit Verified Threat messages of its own to the network.

A Threat Cache is simply a small local database,
probably in-memory,
that stores all "current" threats.
A Threat Filter handles and passes on only the subset of events that meet a certain set of criteria.
For agents joining a network,
the purpose of waiting for the full block period until beginning to submit messages is to allow the agent's Threat Cache to fill and thus synchronise with the rest of the members of the network.

In another example,
an ISP may deploy a "Zombie Response" agent that applies a filter to limit the event feed to only those Verified Threats that are the inside the ISP's own network.
When the agent identifies an infected or trojaned customer by IP,
it could terminate the connection,
disable the login,
and flag the customer's account so that when they try to reconnect,
they will be informed they are infected with a virus or that someone may be using their computer without their permission.

A Threat Provider is an agent that submits Verified Threats messages to a network.
Because any message that is added to the network may result in a variety of actions against the host,
care should be taken to verify that the host is indeed an Active Threat.

Any Threat Provider should also act as an Event Listener and ensure that Verified Threat events are not submitted if they are already "current" (in the Threat Cache).
The default TTL on all threats will be 1 hour.

As an example,
a spam "secondary MX trap" might be tied to a local Threat Network agent that would aggregate and filter threats from the host,
and submit Veried Threat messages into the network.

By separating the Threat Network from the individual applications,
new and more accurate anti-spam scripts can incorporate a connection to the agent and feed more advanced Verified Threat messages into the same network,
be it local,
regional,
or larger.

To separate a private company-wide network,
or a university network from a larger network,
you can make use of a Network Bridge.
This is an agent that connects to two or more different networks,
maintains a combined Threat Cache and feeds Verified Threat messages from one to the other,
potentially in both directions.

For example,
a single or small group of universities could run a private Threat Network for open use by members of the University,
with a single Network Bridge agent pulling in messages from a larger national or international Threat Network.
The bridge would be configured to filter out any messages that reference hosts already listed on the university DNSBL server.

One advantage of using IRC is that any of the existing security features that are currently part of IRC can also be applied to a threat network,
including voice right,
operators,
channel management bots,
SIRC and more.

At the most open,
a single ThreatNet channel could be run within general IRC server with anyone free to participate and submit any entries they wish.
This would make it trivially easy to set up an environment for testing use.

More secure than this,
a bot could run the channel allowing anyone to join,
but only giving voice permissions to agents joining from white-listed IP addresses.

On a larger scale,
a large dedicated SIRC network could be created,
with server or network-level accounts and monitoring bots to kick and issue Verified Threat events for any anti-social accounts connected to the Threat Network.

While not useful for long term blocking,
the Decentralised Active Threat Network would dramatically improve the response time to threats,
with the goal creating a powerful and effective "nervous system" for detecting and dealing with spammers,
virus-infected or trojaned hosts,
or other threats for which the damage could be greatly reduced by dealing with them immediately.

Some action that undertaken to defend against or counter an Active Threat,
in response to a Verified Threat message.
This could include short-term DNSBL listing,
firewall block entries,
or actively disabling the internet connection of the host.