23.03.2017 Views

wilamowski-b-m-irwin-j-d-industrial-communication-systems-2011

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Security in Industrial Communication Systems 22-11<br />

• Trojan horse: A Trojan horse obscures its malicious intent by pretending to have a useful function.<br />

However, after being activated by the user, a hidden malicious function is performed that<br />

allows a remote adversary to gain unauthorized access to the host that executes the Trojan<br />

horse.<br />

• Logical bomb: A logical bomb is malware that only activates itself after certain conditions are<br />

met. A special kind of logical bomb is a time bomb where a specific point in time is used as<br />

trigger.<br />

• Rootkit: A rootkit is a special kind of malware that infects the system in a way that it remains<br />

invisible at the host. To achieve this, rootkits typically replace core components of the system<br />

software like kernel modules in operating <strong>systems</strong>.<br />

• Backdoor or trapdoor: This kind of malware provides an alternative way to access the infected<br />

system that bypasses the normal authentication procedure.<br />

• Spyware: Spyware usually does not cause direct harm. It rather collects confidential information<br />

on the host being used for further attacks, e.g., passwords or other major assets (e.g., chemical<br />

recipes).<br />

Like any other security attack, malware is only able to utilize existing vulnerabilities in the device to<br />

infect it. To counteract attacks on software two possibilities exit: First, methods can be used that prevent<br />

the existence of vulnerabilities. Second, if a full prevention is not possible, malware or the attempt to<br />

insert it into the device’s software shall at least be detected. Countermeasures that prevent and/or detect<br />

the existence of malware can be categorized as follows.<br />

• Static software methods try to avoid the existence of software vulnerabilities a priori during the<br />

software development. Typical techniques are static code analysis methods that try to detect programming<br />

flaws (e.g., buffer overflows) as well as code-signing methods where the developer signs<br />

the executables to confirm the non-modification. Another example is proof-carrying code where<br />

the developer provides a proof along with a program that allows checking with certainty that the<br />

code can be executed in a secure way.<br />

• Dynamic software methods try to identify malware by detecting a malicious behavior during runtime.<br />

A common approach is to use a host-based IDS that detects malicious behavior or actions<br />

during runtime (cf. Section 22.3.4). A similar technique is called software monitoring, where<br />

program execution is observed to check whether the software behaves according to a specified<br />

security policy. Another approach is to use self-checking code. Here, the software itself verifies<br />

the program code for unauthorized modifications during execution. A further approach that is<br />

popular in environments where untrustworthy and thus possible malicious software has to be<br />

executed is called sandboxing. Using this technique, the untrustworthy software is running in a<br />

so-called sandbox where it is executed in a controlled way with restricted permissions. The main<br />

advantage of this scheme is that malicious software is not able to leave the sandbox and infect<br />

other parts of the system since an interaction with the rest of the system is only possible using<br />

well-defined and protected interfaces.<br />

• Hardware supported methods use hardware-specific implementations that try to avoid an insertion<br />

of malware. A typical example is the use of microcontrollers that are implementing the<br />

Harvard architecture. Due to the physical partitioning of instruction and data memory, code<br />

injection is not possible by design. Another recent technique is the no execute (NX) bit in modern<br />

CPUs, where memory regions can be designated as being non-executable. Another common<br />

approach is the use of a coprocessor that is dedicated to perform security checks during runtime.<br />

• Human-assisted methods: In cases where automatic methods cannot fully prevent or detect the<br />

existence of malware, human-assisted methods can additionally be used. Typical examples are<br />

manual inspection or the use of certificated software. Obviously, human-assisted methods are<br />

time consuming and require extensive knowledge. Therefore, it is reasonable to use them only in<br />

combination with automatic techniques.<br />

© <strong>2011</strong> by Taylor and Francis Group, LLC

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!