Expandable systems, such as computers for example, can comprise a printed circuit board (PCB) (e.g. a motherboard) providing connectors. Some connectors can be in the form of expansion buses enabling peripheral devices to be connected to the system in question.
Various features and advantages of certain examples will be apparent from the detailed description which follows, taken in conjunction with the accompanying drawings, which together illustrate, by way of example only, a number of features, and wherein:
In the following description, for purposes of explanation, numerous specific details of certain examples are set forth. Reference in the specification to “an example” or similar language means that a particular feature, structure, or characteristic described in connection with the example is included in at least that one example, but not necessarily in other examples.
An expansion bus for a computer system that enables connection of a peripheral hardware device, such as a graphic card, storage device (e.g. hard drive, SSD, memory card), Wi-Fi module, Ethernet module and so on, can be a Peripheral Component Interconnect Express (PCIe) expansion bus. PCIe is a high-speed serial expansion bus.
Peripheral devices connected to a system using a PCIe expansion bus form hardware sub-systems that are able to directly access system memory and the memory of other system devices independently of a main processor (CPU) of the system. PCIe supports full duplex direct memory access (DMA) transfers of multiple devices at the same time.
The ability to directly access system memory can enable a peripheral device to transfer data between itself and the system using DMA to read or write directly to main memory without any operating system supervision or interaction, which can enable an attacker to use a peripheral device to gain direct access to part or all of the physical memory address space of the system. The attacker can utilise this direct access to exploit the system by stealing data, keys and modifying the system to enable the use of malware for example.
For example, a rogue peripheral (malicious or corrupted) connected to a PCIe interconnect can attempt to compromise the rest of the system (either by way of the CPU, or another device on the PCIe interconnect). The device in question may have been designed to be rogue, or may be a corrupted device that can be exploited by an attacker and therefore exhibits rogue behaviour or which leverages a non-corrupted device. For example, a malware that uses the network card to communicate with a command and control server.
According to an example, there is provided an apparatus for detecting malicious or rogue behaviour associated with data packets transmitted between a first device and a second device. The data packets can be transmitted between the first and second devices via an intermediate device, such as a switch for example, which forms part of a PCIe interconnect. In an example, the apparatus comprises an intercepting device logically intermediate the first device and the intermediate device.
In an example, the intercepting device (or interceptor) can be logically located between two components of a PCIe interconnect. In an example, multiple interceptors, distributed across multiple PCIe components, and connected together to act as a single entity can be provided. Thus, although examples herein are described with reference to a single intercepting device, this can include a collection of intercepting devices acting together.
According to an example, an intercepting device intercepts PCIe data packets (traffic) travelling on a channel between the two PCIe components or devices in order to:
According to an example, the second device may be a switch forming part of a PCIe interconnect of a computing apparatus 100. For example, the second device 103 can expose a port that a discrete switch or peripheral can plug into.
In another example, the second device 103 can expose a port that is not a switch but a root port (or a combination of root ports) of the computing apparatus 100. Accordingly, in this example, peripheral device 102 can be effectively directly connected to the second device 103.
In either case, device 102 has direct (read/write) memory access to a memory 105 of the apparatus 100.
In an example, the logical elements of the device 200 described above can be implemented in hardware, in logic executing on general processing units, or in optimized programmable logic (such as FPGAs for example).
As noted, the interceptor 200 can be logically located between two components of the PCIe interconnect. In other example, several locations could be suitable:
According to an example, model 201 can be built to differentiate between legitimate and rogue communication coming to and from a peripheral device 102. In an example, in order to make this differentiation, the intercepting device 200 can comprise some information about the peripheral device 102 in order to assess the compliance of the monitored traffic to the peripheral device's expected incoming and outgoing traffic. Thus, a model 201 can represent the expected traffic of a peripheral device 102.
According to an example, a model 201 can be built using module 211 in several ways to account for the expected traffic to and from the device:
In an example, intercepting device 200 can be comprised of one or multiple interceptor instances. That is, device 200 can be formed from multiple interceptor instances, each of which can be logically positioned between a (e.g. different or same) peripheral(s) and the second device. For example, an interceptor instance can be a physical intercepting device, or an interceptor instantiation that is configured to execute over or on the physical hardware of an apparatus. Any combination of physical and non-physical (i.e. logic based) interceptors (as described above for example) can be provided.
The location of an interceptor 200 determines the traffic it can observe and apply mitigations to. Thus, a set of interceptor instances can increase the coverage of traffic observed and mitigated. In case there are several interceptor instances, they can interact with each other to help with a more globally encompassing solution. Each interceptor instance can use information from other interceptor instances, whether about the traffic it cannot itself observe, or combine their models, or combine the logic for the assessment of the traffic compliance with the local model for peripherals it has no visibility upon.
In an example, the model 201 could be split in different ways. For example, interceptor instances can communicate with a trusted compute engine. The interceptor would use this compute engine to outsource heavyweight computations for example. The interceptor could still handle some of the compute according to the overall design. For example, the split between the interceptor and the compute engine can be configured according to various parameters such as latency, energy consumption, communication capabilities, security of the overall design, and so on.
Thus, in a case where there are several interceptor instances, these interceptor instances could communicate between each other. This could be useful for each interceptor to gather information gleaned by other interceptors, and to adapt its state and behaviour accordingly.
Accordingly, an intercepting device 200 can be used to detect and mitigate threats at a hardware level. As such, as an OS is not used to configure various PCIe hardware elements, it is not included in a trusted computing base. This reduces the attack surface (even if an attacker manages to compromise the OS, rogue devices can still be detected and protected against), and can even detect compromise of the OS/Application.
Furthermore, it is possible to detect and mitigate against attacks from a rogue PCIe device to another PCIe device, which are usually invisible to the OS.
In block 303, a communication pattern relating to the data flowing between the first and second devices is determined. For example, module 211 can use the data 250 to build or otherwise refine a model 201 representing data flow between the first and second devices. In block 305, the communication pattern is used to determine whether the data flowing between the first and second devices is symptomatic of a malicious or rogue behaviour of the first device. For example, the communication pattern can be compared to an expected behaviour of the device 102 from model 201 using analyser 205 in order to determine if the behaviour conforms to or departs from an expected behaviour. In block 307, a mitigating action is selected based on a relationship between the communication pattern and an expected behaviour of the first device. The action can be applied using mitigator 209 from action data stored in 207, for example.
Examples in the present disclosure can be provided as methods, systems or machine-readable instructions, and as any combination of hardware, firmware or the like. Such machine-readable instructions may be included on a computer readable storage medium (including but not limited to disc storage, CD-ROM, solid state or optical storage, etc.) having computer readable program codes therein or thereon.
The present disclosure is described with reference to flow charts and/or block diagrams of the method, devices and systems according to examples of the present disclosure. Although the flow diagrams described above show a specific order of execution, the order of execution may differ from that which is depicted. Blocks described in relation to one flow chart may be combined with those of another flow chart. In some examples, some blocks of the flow diagrams may not be necessary and/or additional blocks may be added. It shall be understood that each flow and/or block in the flow charts and/or block diagrams, as well as combinations of the flows and/or diagrams in the flow charts and/or block diagrams can be realized by machine readable instructions.
The machine-readable instructions may, for example, be executed by a general-purpose computer, a special purpose computer, an embedded processor or processors of other programmable data processing devices to realize the functions described in the description and diagrams. In particular, a processor or processing apparatus may execute the machine-readable instructions. Thus, modules of apparatus (for example, module(s) of the intercepting device 200) may be implemented by a processor executing machine readable instructions stored in a memory, or a processor operating in accordance with instructions embedded in logic circuitry. The term ‘processor’ is to be interpreted broadly to include a CPU, processing unit, ASIC, logic unit, or programmable gate set etc. The methods and modules may all be performed by a single processor or divided amongst several processors.
Such machine-readable instructions may also be stored in a computer readable storage that can guide the computer or other programmable data processing devices to operate in a specific mode.
For example, the instructions may be provided on a non-transitory computer readable storage medium encoded with instructions, executable by a processor.
Referring to
Such machine readable instructions may also be loaded onto a computer or other programmable data processing devices, so that the computer or other programmable data processing devices perform a series of operations to produce computer-implemented processing, thus the instructions executed on the computer or other programmable devices provide a operation for realizing functions specified by flow(s) in the flow charts and/or block(s) in the block diagrams.
Further, the teachings herein may be implemented in the form of a computer product being stored in a storage medium and comprising a plurality of instructions for making a computer device implement the methods recited in the examples of the present disclosure.
While the method, apparatus and related aspects have been described with reference to certain examples, various modifications, changes, omissions, and substitutions can be made. In particular, a feature or block from one example may be combined with or substituted by a feature/block of another example.
The word “comprising” does not exclude the presence of elements other than those listed in a claim, “a” or “an” does not exclude a plurality, and a single processor or other unit may fulfil the functions of several units recited in the claims.
The features of any dependent claim may be combined with the features of any of the independent claims or other dependent claims.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2019/038736 | 6/24/2019 | WO | 00 |