US 20070174917 A1
A security analyzer tests the security of a device by attacking the device and observing the device's response. Attacking the device includes sending one or more messages to the device. A message can be generated by the security analyzer or generated independently of the security analyzer. The security analyzer uses various methods to identify a particular attack that causes a device to fail or otherwise alter its behavior. Monitoring includes analyzing data (other than messages) output from the device in response to an attack. Packet processing analysis includes analyzing one or more messages generated by the device in response to an attack. Instrumentation includes establishing a baseline snapshot of the device's state when it is operating normally and then attacking the device in multiple ways while obtaining snapshots periodically during the attacks.
1. A method for analyzing a security of a device under analysis (DUA), comprising:
attacking the DUA;
observing a response of the DUA to the attack; and
determining whether the DUA includes a security vulnerability.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
11. The method of
12. The method of
13. The method of
14. The method of
15. The method of
16. The method of
17. The method of
18. The method of
19. A method for analyzing a security of a device under analysis (DUA), comprising:
sending an instrumentation message to the DUA;
observing a first response of the DUA to the instrumentation message;
attacking the DUA in multiple ways;
sending the instrumentation message to the DUA; and
observing a second response of the DUA to the instrumentation message.
20. The method of
This application claims priority from the following provisional application, which is hereby incorporated by reference in its entirety: U.S. application Ser. No. 60/662,430, filed on Mar. 15, 2005, entitled “Automated Robustness and Security Testing of Network Devices”. This application is related to the following utility applications, which are hereby incorporated by reference in their entirety: U.S. application Ser. No. ______, filed on even date herewith, entitled “Analyzing the Security of Communication Protocols and Channels for a Pass-Through Device” (Attorney Docket Number 24731-11215) and U.S. application Ser. No. ______, filed on even date herewith, entitled “Portable Program for Generating Attacks on Communication Protocols and Channels” (Attorney Docket Number 24731-11216).
The present invention relates to automated security analysis of hardware and software.
Computerized communication, whether it occurs at the application level or at the network level, generally involves the exchange of data or messages in a known, structured format (a “protocol”). Software applications and hardware devices that rely on these formats can be vulnerable to various attacks that are generally known as “protocol abuse.” Protocol abuse consists of sending messages that are invalid or malformed with respect to a particular protocol (“protocol anomalies”) or sending messages that are well-formed but inappropriate based on a system's state. Messages whose purpose is to attack a system are commonly known as malicious network traffic.
Various systems have been developed that identify or detect attacks when they occur. These systems, which are known as intrusion detection systems (IDSs), can be either passive or active. A passive IDS will merely detect an attack, while an active IDS will attempt to thwart the attack. Note that an IDS reacts to an actual attack. While an IDS might be able to detect an attack, it does not change the fact that an attack has occurred and might have damaged the underlying system.
An alternative, proactive solution to the attack problem is to analyze a system ahead of time to discover or identify any vulnerabilities. This way, the vulnerabilities can be addressed before the system is deployed or released to customers. This process, which is known as “security analysis,” can be performed using various methodologies. One methodology is to treat the device-under-analysis (DUA) as a black box. Under this methodology, the DUA is analyzed via the interfaces that it presents to the outside world (for example, by sending messages to the DUA). As a result, it is not necessary to access the source code or object code comprising the DUA.
Security analysis requires specific expertise and, thus, is usually performed manually. Also, since the task is vaguely defined, the analysis is usually performed in a haphazard way.
The present invention overcomes limitations of the prior art by providing a security analyzer for analyzing a security of a device under analysis (DUA). In one embodiment, the security analyzer is an appliance that is capable of executing attacks to test the security of a DUA. An attack can be generated by the security analyzer or generated independently of the security analyzer.
In various applications, the security analyzer sends test messages to the DUA to test a communication protocol of the DUA, a channel of the DUA, and/or an overall security of the DUA. Based on the DUA's response, the security analyzer determines whether a vulnerability has been found.
In one aspect of the invention, the security analyzer is used to identify a particular attack that causes a DUA to fail or otherwise alter its behavior. Two methods can be used to identify a failure or other alteration in behavior: monitoring and packet processing analysis. Monitoring includes analyzing data (other than messages) output from the DUA in response to an attack. Packet processing analysis includes analyzing one or more messages generated by the DUA in response to an attack.
In another aspect of the invention, the security analyzer establishes a baseline snapshot of the DUA's state when it is operating normally and then attacks the DUA in multiple ways while obtaining snapshots periodically during the attacks. In one embodiment, in order to obtain a snapshot (“instrumentation”), the security analyzer sends the DUA a message that is valid with respect to a particular protocol and observes the DUA's response.
In yet another aspect of the invention, the security analyzer maintains a fault log, controls the DUA using a restarter, or sends messages simultaneously to one or more DUAs.
Other aspects of the invention include software, systems, components, and methods corresponding to the above, and applications of the above for purposes other than security analysis.
The invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
As described above, current security analysis techniques have many disadvantages. What is needed is a platform for analyzing the security of a device—a “security analyzer”.
In the following description, “device”, “device-under-analysis”, and “DUA” represent software and/or hardware. Software includes, for example, applications, operating systems, and/or communications systems. Hardware includes, for example, one or more devices. A device can be, for example, a switch, bridge, router (including wireline or wireless), packet filter, firewall (including stateful or deep inspection), Virtual Private Network (VPN) concentrator, Network Address Translation (NAT)-enabled device, proxy (including asymmetric), intrusion detection/prevention system, or network protocol analyzer.
A DUA can also be multiple devices that are communicatively coupled to form a system or network of devices. For example, a DUA can be two firewall devices that establish an encrypted tunnel between themselves.
In one embodiment, a security analyzer tests the communication protocols and/or channels of a device. A “protocol” refers to an exchange of data or messages in a known, structured format. Specifically, a protocol refers to what is being communicated (for example, the data or message content). A security analyzer can test various types of communication protocols, regardless of whether they are public or proprietary. Types of protocols include, for example, networking protocols (including network packets), application program interfaces (APIs; including API calls, remote method invocation (RMI), and remote procedure call (RPC)), and file formats. Appendix A contains exemplary networking protocols, APIs, and file formats.
A protocol generally has three characteristics: structure, semantics, and state. Therefore, when a security analyzer tests a protocol, it tests the protocol's structure, semantics, and/or state. Protocol structure refers to the layout of a message, such as its fields, arguments, or parameters, and its possible length. Protocol semantics refers to the context of a message, such as its actual content and what the content means. Protocol state refers to how the history of previous messages affects later messages. Appendix B contains types of attacks to test a protocol's structure, semantics, and/or state.
A “channel” refers to how protocol data is communicated. Specifically, a channel refers to how a message is delivered to a DUA (for example, using Ethernet on top of a wireless network). One example of a channel attack is sending too many messages at once, thereby flooding a network and resulting in a denial of service (DoS).
In one embodiment, a security analyzer can also test a DUA's overall security. These types of attacks include, for example, negotiating a lower (i.e., less secure) encryption algorithm, dictionary attacks (brute forcing commonly-used passwords), resource exhaustion, identifying misconfiguration of the DUA, identifying mechanisms for sending messages through the DUA that bypass various security checks, and detecting insecure implementations of standard protocols and information disclosure.
In one embodiment, a security analyzer treats a DUA as a black box. Under this methodology, the DUA is analyzed via the interfaces that it presents to the outside world. Analysis includes, for example, “attacking” the DUA by sending one or more messages (test messages) to it and then observing the DUA's response. A response can include, for example, generation of an error or generation of a reply message. Based on the DUA's response, the security analyzer can determine whether a vulnerability has been found.
In one embodiment, the security analyzer is used to identify a particular attack (e.g., one or more tests messages) that causes a DUA to fail or otherwise alter its behavior. In one embodiment, an attack is generated independently of the security analyzer and is communicated to the security analyzer so that the security analyzer can test the DUA. For example, a user or other third party generates an attack. In another embodiment, the security analyzer generates an attack automatically. In one embodiment, the security analyzer auto-generates an attack based on a self-describing message format. In one embodiment, the security analyzer generates attacks of unique messages that combine to exhaustively cover the scope of a protocol. Fault isolation, which includes determining which attack caused which response, will be described below.
Identifying a Failure or Other Alteration in Behavior
In one embodiment, two methods can be used to identify a failure or other alteration in behavior: monitoring and packet processing analysis. Monitoring includes analyzing data (other than messages) output from the DUA in response to an attack.
Monitoring can be either passive or active. Passive monitoring includes reviewing information made available by the DUA, while active monitoring includes executing commands on the DUA in order to obtain information. One example of a passive monitor is a console monitor, which monitors console output from the DUA during an attack. In one embodiment, the DUA sends its console output to the security analyzer, which then displays it in real-time in an Analysis Monitor Log. Another example of a passive monitor is a syslog monitor, which monitors syslog output from the DUA during an attack. In one embodiment, the security analyzer acts like a syslog server in order to receive messages from the DUA's syslog client, which are then displayed in real-time in an Analysis Monitor Log.
One example of an active monitor is to connect to the DUA (e.g., using telnet, SNMP, or SSH) and execute a command in order to access various types of information. This information can include, for example, fault messages (such as stack traces and core dumps) and resource use (such as processor utilization, memory usage, or dropped packets). In one embodiment, the DUA executes in debugging mode so that more information is available to the security analyzer.
In one embodiment, a security analyzer includes a monitor pattern feature. A monitor pattern is a regular expression that matches keywords in the header of a fault message. In this embodiment, the security analyzer uses a monitor pattern to identify the beginning of the fault message. In one embodiment, the security analyzer displays all fault messages that are preceded by the specified pattern.
In one embodiment, a security analyzer includes a monitor trace feature. A monitor trace is a record of all the information that was received from a monitor during an analysis. In this embodiment, the security analyzer displays the DUA output (e.g., console messages or syslog messages) during an analysis.
In one embodiment, one DUA includes one or more monitors. In another embodiment, if a DUA includes multiple devices, each of these devices can include zero or more monitors.
Packet processing analysis includes analyzing one or more messages (response messages) generated by the DUA in response to an attack. In one embodiment, when the DUA generates a response message, it sends it to the security analyzer for analysis. Since packet processing analysis requires the DUA to generate a response message, it is generally unsuitable for testing completely passive devices that merely receive messages but do not generate them.
In one embodiment, a security analyzer tests a DUA by sending one or more test messages to the DUA, receiving one or more response messages from the DUA, possibly continuing the message exchange further, and then analyzing the received messages. Specifically, the security analyzer determines whether the DUA operated correctly by considering a pair of messages (or possibly more if a lengthier message exchange is involved), where the first (test) message was sent to the DUA and the second (response) message was generated by the DUA in response to the first message.
The security analyzer would thus include three components: one component to send a test message to the DUA, one component to receive a response message from the DUA, and one component to analyze whether the DUA operated correctly. If these components exist independently of each other, it is necessary to determine which test message sent by the first component corresponds to which response message received by the second component. If the security analyzer sends only one message at a time, it is relatively easy to determine the correspondence between the sent test message and the received response message.
Depending on the type of DUA, the second response message might be identical to the first test message, similar to the first test message, or radically different from the first test message. For example, if the DUA is a switch, bridge, or router, it might merely relay the first test message without modifying it. If the DUA is an anti-virus gateway, it might modify the first test message by quarantining and removing an attachment that contains a virus. If the DUA is a decryption device, it might generate a decrypted message (the second response message) based on the encrypted message that it received (the first test message).
In one embodiment, a security analyzer acts like a client, a server, or both. In particular, the security analyzer can send a message and receive the same message (after the message has passed through the DUA). In one embodiment, when acting like a client or server, the security analyzer emulates various resources that are typically found in clients or servers, such as directories, files, email messages, databases, user information, and authentication services. For example, the security analyzer can act like both an email client and an email server for POP3 messages. The security analyzer (client) logs on to the security analyzer (server) through the DUA and inquires about the number of emails that are pending on the server. The server then responds with the number of emails and their content.
Fault Isolation and Logging
As described above, in one embodiment, the security analyzer is used to identify a particular attack that causes a DUA to fail or otherwise alter its behavior. This is achieved through fault isolation and instrumentation. In one embodiment, fault isolation includes the following: establishing a baseline snapshot of the DUA's state when it is operating normally; and attacking the DUA in multiple ways while obtaining snapshots periodically during the attacks. In one embodiment, in order to obtain a snapshot (“instrumentation”), the security analyzer sends the DUA a message that is valid with respect to a particular protocol and observes the DUA's response.
When establishing the baseline snapshot, if there is a lack of response or an invalid response from the DUA, this usually indicates that the DUA is misconfigured or does not support the protocol of the message. The baseline snapshot thus serves as a general mechanism to verify the existence and/or capabilities of the DUA.
If all of the later snapshots match the first snapshot, then the DUA is not vulnerable to any of the multiple attacks. If a later snapshot differs, then the DUA is vulnerable to at least one attack that occurred before that differing snapshot but after the last “normal” snapshot (i.e., the last snapshot that still matched the first snapshot).
At this point, in one embodiment, the fault isolation process is repeated, but this time with fewer attacks. For example, only those attacks that occurred after the last normal snapshot but before the differing snapshot are used. Again, the security analyzer obtains snapshots periodically during the attacks. By repeating this process, the security analyzer can focus in on when the successful attack occurred and, eventually, identify the specific attack that affected the DUA (as evidenced by the differing snapshot).
In one embodiment, fault isolation includes multiple passes through the attacks in a coarse-to-fine manner, as follows: The first pass uses a large amount of attacks to determine whether any of them cause the DUA to fail. (If the first pass involves sending multiple concurrent test messages (see below), then an additional pass is used to send them in serial fashion in order to isolate the group of test messages that caused the failure.) The second pass verifies that the failure is reproducible, and a range of test messages is chosen as candidates to cause failure in the DUA. The third pass includes stepping through the range of test messages until the exact test message, if any, is identified.
In one embodiment, the security analyzer maintains a fault log. Messages are logged in various ways and at various levels. Logging can be at the level of a single message, a range of messages, or a group of messages (where a group includes multiple ranges). In one embodiment, messages are logged in as small of a granularity as possible. In another embodiment, messages are grouped logically depending on similarities of their attacks.
When the security analyzer discovers a fault during an analysis, it creates an entry in the fault log. In one embodiment, an entry contains various pieces of information, such as when the fault was discovered, which device exhibited the fault, and which test message (or range or group of messages) caused the fault.
In one embodiment, an entry also includes a confidence metric, which represents the amount of certainty that the attack(s) listed in the entry actually caused the fault. In one embodiment, a confidence metric is determined as follows: If both the snapshot and the monitor indicate a fault, then the confidence metric is High. If the snapshot indicates a fault but no monitor was used, then the confidence metric is Low. If the snapshot indicates a fault but the monitor indicates no fault, then the confidence metric is Medium. If the monitor indicates a fault but the snapshot indicates no fault, then the confidence metric is Medium.
In one embodiment, fault entries and fault logs are stored in a database so that results of previous security analyses can be accessed (for example, in order to prepare a comparative report).
Sometimes a successful attack can cause a DUA to fail catastrophically so that it freezes or crashes. If this happens, the DUA will be unable to process subsequent test messages, even if they are valid. In one embodiment, the security analyzer includes a restarting feature that restores the DUA to its normal operation so that the analysis can continue.
In one embodiment, the restarting feature focuses on the DUA's hardware by power cycling the DUA. For example, the DUA's power cord is plugged into a power relay that is controlled by the security analyzer so that the security analyzer restarts the DUA if the DUA fails or becomes unresponsive during analysis. The power relay can be located either external to the security analyzer or built into it.
In one embodiment, the restarting feature focuses on the DUA's software by shutting down a software application (or constituent process or thread) and restarting it. In another embodiment, the operating system or networking system is shut down and restarted.
In one embodiment, one DUA is controlled by one or more restarters. In another embodiment, if a DUA includes multiple devices, each of these devices can be controlled by zero or more restarters.
In one embodiment, the security analyzer sends several test messages simultaneously (or at least in close proximity to one another). This way, the security analyzer can subject the DUA to several different tests in a shorter period of time. If the security analyzer sends several test messages to and receives response several messages from the DUA, it is more difficult to determine the correspondences between each test message sent to the DUA and each response message generated by the DUA.
In one embodiment, the security analyzer sends and receives messages in such a way that they can be correlated. For example, the messages are correlated based on timestamps or unique identifiers. In another embodiment, the messages are synchronized.
Another way to reduce the analysis time is to test multiple devices in parallel (i.e., simultaneously). If the devices are different, then comparative analysis results can be viewed in real-time as the attacks are sent. If the devices are identical, then a group of attacks can be spread out over the multiple devices. Load balancing these attacks between the identical devices will further reduce the analysis time.
If the security analyzer is testing multiple DUAs, each DUA can have zero or more monitors and zero or more restarters.
A security analyzer can be implemented in hardware, software, or a combination of both. Regarding software, a security analyzer can be, for example, a single application (executing within a single operating system or single physical device) or a pair of applications (one to send test messages and one to receive response messages; executing within the same device and communicating with each other to correlate sent and received messages). Regarding hardware, a security analyzer can be, for example, a pair of physical devices (one to send test messages and one to receive response messages) with out-of-band synchronization to correlate sent and received messages. In one embodiment, the security analyzer is a portable appliance that can be transported to different locations to analyze the security of different devices.
In one embodiment, a security analyzer includes various software tools to help a user analyze a device. These tools can enable the user to perform, for example, reporting, trending, auditing, and comparative metrics on analysis results. The tools can also summarize analysis results or detail specific faults.
In the preceding description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention can be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to avoid obscuring the invention.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission, or display devices.
The present invention also relates to an apparatus for performing the operations herein. This apparatus is specially constructed for the required purposes, or it comprises a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program is stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems are used with programs in accordance with the teachings herein, or more specialized apparatus are constructed to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
Networking protocols include, for example, Address Resolution Protocol (ARP), Border Gateway Protocol (BGP), Cisco Discovery Protocol (CDP), Dynamic Host Configuration Protocol (DHCP), File Transfer Protocol (FTP), Trivial File Transfer Protocol (TFTP), HyperText Transfer Protocol (HTTP), Internet Control Message Protocol (ICMP), Internet Protocol version 4 (IPv4), Internet Protocol version 6 (IPv6), Internet Security Association and Key Management Protocol (ISAKMP), Light Weight Directory Access Protocol (LDAP), Open Shortest Path First (OSPF), Post Office Protocol 3 (POP3), Remote Authentication Dial-In User Service (RADIUS; including extensions from Cisco Systems, Juniper Networks, and Microsoft), Routing Information Protocol (RIP), Session Initiation Protocol (SIP), Server Message Block (SMB), Remote Administration Protocol (RAP), Simple Mail Transfer Protocol (SMTP), Multipurpose Internet Mail Extension (MIME), Simple Network Management Protocol (SNMP; including SNMP trap), Secure Shell (SSH), Secure Sockets Layer (SSL), Transport Layer Security (TLS), Terminal Access Controller Access Control System Plus (TACACS+), Transmission Control Protocol (TCP), Universal Plug and Play (UPnP), User Datagram Protocol (UDP), and Voice over Internet Protocol (VoIP). Networking protocols also include, for example, any protocol defined by an Internet Engineering Task Force (IETF) Request for Comments (RFC).
Application program interfaces (APIs) include, for example, ActiveX, Common Object Request Broker Architecture (CORBA), Interface Definition Language (IDL), Internet Inter-ORB Protocol (IIOP), Java Remote Method Invocation (Java RMI), Management Information Base (MIB), Server Message Block (SMB), Simple Object Access Protocol (SOAP), and Sun Microsystems Remote Procedure Call (SunRPC; including portmapper and statd).
File formats include, for example, image formats, audio formats, multimedia formats, and text formats. Image file formats include, for example, Graphic Interchange Format (GIF), Joint Photographic Experts Group (JPEG), Microsoft Windows Bitmap (BMP), Portable Document Format (PDF), Portable Network Graphics (PNG), and Tagged Image File Format (TIFF). Audio file formats include, for example, MPEG-1 Audio Layer 3 (MP3; Moving Picture Experts Group), MPEG-2 Part 7 (AAC; Advanced Audio Coding), Microsoft Windows Media Audio (WMA), and RealNetworks RealAudio, Multimedia formats include, for example, Apple QuickTime, Microsoft Windows Media Video (WMfV), and Adobe Flash. Text file formats include, for example, Document Type Definition (DTD), eXtensible Markup Language (XML), X.509 (public key certificates), and Microsoft Word (DOC).
Structure attacks are generally based on messages that contain values or parameters that violate an intended protocol. Types of structure attacks include, for example: empty-field, empty-message, extra-data, incomplete, invalid-count, invalid-enum (enumeration), invalid-eol (end-of-line), invalid-field, invalid-index, invalid-length, invalid-offset, invalid-syntax, invalid-type, invalid-utf8 (Unicode Transformation Format), missing-data, missing-field, mixed-case, overflow, repeated-field, too-many-fields, truncated, underflow, and wrong-encoding.
One example of a semantics attack is a message that indicates an invalid (e.g., non-existent) printer instead of a valid printer. This can cause a software application to hang or crash unexpectedly. Another example of a semantics attack is a network packet with a source IP address of “all-broadcast.” Responding to this packet would therefore generate enough packets to flood the network. Types of structure attacks include, for example: fmt-string (format), fragmented-field, invalid-encoding, invalid-field, invalid-ip (IP address), invalid-path, invalid-string, recursion, self-reference, and null-char (character).
One example of a state attack is sending messages out-of-order (e.g., with respect to the type of message the DUA is expecting to receive).