67 research outputs found
OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control
This thesis discusses the motivation, origin, history, design guidelines, API, the device drivers and userland utilities of the hardware sensors framework available in OpenBSD. The framework spans multiple utilities in the base system and the ports tree, is utilised by over 75 drivers, and is considered to be a distinctive and ready-to-use feature that sets OpenBSD apart from many other operating systems, and in its root is inseparable from the OpenBSD experience.
The present framework, however, is missing the functionality that would allow the user to interface with the fan-controlling part of the hardware monitors. We therefore discuss the topic of fan control and introduce sysctl-based interfacing with the fan-controlling capabilities of microprocessor system hardware monitors. The discussed prototype implementation reduces the noise and power-consumption characteristics in fans of personal computers, especially of those PCs that are designed from off-the-shelf components. We further argue that our prototype is easier, more intuitive and robust compared to solutions available elsewhere
Porting and Developing a Boot Loader
See magistritöö kirjeldab projekti, mille eesmärk oli asendada illumos projektis aegunud boot programm alternatiivsega, mis võimaldab paremini toetada kaasaegseid ja tuleviku süsteeme ning mille arhitektuur võimaldab parenduste ja täienduste kirjutamist.This paper describes the project to replace outdated boot program in illumos project with alternative one, allowing to provide better support for modern and future computer systems and having an architecture to support extending and improving the implementation
Feature Model Synthesis
Variability provides the ability to adapt and customize a software system's artifacts for a particular context or circumstance. Variability enables code reuse, but its mechanisms are often tangled within a software artifact or scattered over multiple artifacts. This makes the system harder to maintain for developers, and harder to understand for users that configure the software.
Feature models provide a centralized source for describing the variability in a software system. A feature model consists of a hierarchy of features—the common and variable system characteristics—with constraints between features. Constructing a feature model, however, is a arduous and time-consuming manual process.
We developed two techniques for feature model synthesis. The first, Feature-Graph-Extraction, is an automated algorithm for extracting a feature graph from a propositional formula in either conjunctive normal form (CNF), or disjunctive normal form (DNF). A feature graph describes all feature diagrams that are complete with respect to the input. We evaluated our algorithms against related synthesis algorithms and found that our CNF variant was significantly faster than the previous comparable technique, and the DNF algorithm performed similarly to a comparable, but newer technique, with the exception of several models where our algorithm was faster.
The second, Feature-Tree-Synthesis, is a semi-automated technique for building a feature model given a feature graph. This technique uses both logical constraints and text to address the most challenging part of feature model synthesis—constructing the feature hierarchy—by ranking potential parents of a feature with a textual similarity heuristic. We found that the procedure effectively reduced a modeler's choices from thousands, to five or less when synthesizing the Linux and eCos variability models.
Our third contribution is the analysis of Kconfig—a language similar to feature modeling used to specify the variability model of the Linux kernel. While large feature models are reportedly used in industry, these models have not been available to the research community for benchmarking feature model analysis and synthesis techniques. We compare Kconfig to feature modeling, reverse engineer formal semantics, and translate 12 open-source Kconfig models—including the Linux model with over 6000 features—to propositional logic
Automated gateware discovery using open firmware
Includes abstract.Includes bibliographical references.This dissertation describes the design and implementation of a mechanism that automates gateware device detection for reconfigurable hardware. The research facilitates the process of identifying and operating on gateware images by extending the existing infrastructure of probing devices in traditional software by using the chosen technology
Thunderclap: Exploring Vulnerabilities in Operating System IOMMU Protection via DMA from Untrustworthy Peripherals
Direct Memory Access (DMA) attacks have been known for many years: DMA-enabled I/O peripherals have complete access to the state of a computer and can fully compromise it including reading and writing all of system memory.
With the popularity of Thunderbolt 3 over USB Type-C and smart internal devices, opportunities for these attacks to be performed casually with only seconds of physical access to a computer have greatly broadened. In response, commodity hardware and operating-system (OS) vendors have incorporated support for Input-Output Memory Management Units (IOMMUs), which impose memory protection on DMA, and are widely believed to protect against DMA attacks.
We investigate the state-of-the-art in IOMMU protection across OSes using a novel I/O security research platform, and find that current protections fall short when faced with a functional network peripheral that uses its complex interactions with the OS for ill intent, and demonstrate compromises against macOS, FreeBSD, and Linux, which notionally utilize IOMMUs to protect against DMA attackers. Windows only uses the IOMMU in limited cases and remains vulnerable.
Using Thunderclap, an open-source FPGA research platform we built, we explore a number of novel exploit techniques to expose new classes of OS vulnerability. The complex vulnerability space for IOMMU-exposed shared memory available to DMA-enabled peripherals allows attackers to extract private data (sniffing cleartext VPN traffic) and hijack kernel control flow (launching a root shell) in seconds using devices such as USB-C projectors or power adapters.
We have worked closely with OS vendors to remedy these vulnerability classes, and they have now shipped substantial feature improvements and mitigations as a result of our work.DARPA I2O FA8750-10-C-0237 ("CTSRD")
DARPA MTO HR0011- 18-C-0016 ("ECATS")
Arm Ltd
Google Inc
This work was also supported by EPSRC EP/R012458/1 (“IOSEC”)
Recommended from our members
Exploitation from Malicious PCI Express Peripherals
The thesis of this dissertation is that, despite widespread belief in the security community, systems are still vulnerable to attacks from malicious peripherals delivered over the PCI Express (PCIe) protocol.
Malicious peripherals can be plugged directly into internal PCIe slots, or connected via an external Thunderbolt connection.
To prove this thesis, we designed and built a new PCIe attack platform.
We discovered that a simple platform was insufficient to carry out complex attacks, so created the first PCIe attack platform that runs a full, conventional OS.
To allows us to conduct attacks against higher-level OS functionality built on PCIe, we made the attack platform emulate in detail the behaviour of an Intel 82574L Network Interface Controller (NIC), by using a device model extracted from the QEMU emulator.
We discovered a number of vulnerabilities in the PCIe protocol itself, and with the way that the defence mechanisms it provides are used by modern OSs.
The principal defence mechanism provided is the Input/Output Memory Management Unit (IOMMU).
The remaps the address space used by peripherals in 4KiB chunks, and can prevent access to areas of address space that a peripheral should not be able to access.
We found that, contrary to belief in the security community, the IOMMUs in modern systems were not designed to protect against attacks from malicious peripherals, but to allow virtual machines direct access to real hardware.
We discovered that use of the IOMMU is patchy even in modern operating systems.
Windows effectively does not use the IOMMU at all; macOS opens windows that are shared by all devices; Linux and FreeBSD map windows into host memory separately for each device, but only if poorly documented boot flags are used.
These OSs make no effort to ensure that only data that should be visible to the devices is in the mapped windows.
We created novel attacks that subverted control flow and read private data against systems running macOS, Linux and FreeBSD with the highest level of relevant protection enabled.
These represent the first use of the relevant exploits in each case.
In the final part of this thesis, we evaluate the suitability of a number of proposed general purpose and specific mitigations against DMA attacks, and make a number of recommendations about future directions in IOMMU software and hardware.EPSRC and ARM iCASE Awar
Evaluation of performance and space utilisation when using snapshots in the ZFS and Hammer file systems
Modern file systems implements snapshots, or read-only point-in-time representations
of the file system. Snapshots can be used to keep a record of the
changes made to the data, and improve backups. Previous work had shown
that snapshots decrease read- and write performance, but there was an open
question as to how the number of snapshots affect the file system. This thesis
studies this on the ZFS and Hammer file systems. The study is done by running
a series of benchmarks and creating snapshots of each file system. The
results show that performance decreases significantly on both ZFS and Hammer,
and ZFS becomes unstable after a certain point; there is a steep decrease
in performance, and increase in latency and the variance of the measurements.
The performance of ZFS is significantly lower than on Hammer, and the performance
decrease is higher. On space utilisation, the results are linear for ZFS,
up to the point where the system turns unstable. The results are not linear on
Hammer, but more work is needed to reveal by which function.Master i nettverks- og systemadministrasjo
Precise and Scalable Detection of Double-Fetch Bugs in OS Kernels
During system call execution, it is common for
operating system kernels to read userspace memory multiple
times (multi-reads). A critical bug may exist if the fetched
userspace memory is subject to change across these reads, i.e.,
a race condition, which is known as a double-fetch bug. Prior
works have attempted to detect these bugs both statically and
dynamically. However, due to their improper assumptions and
imprecise definitions regarding double-fetch bugs, their multiread detection is inherently limited and suffers from significant
false positives and false negatives. For example, their approach
is unable to support device emulation, inter-procedural analysis,
loop handling, etc. More importantly, they completely leave the
task of finding real double-fetch bugs from the haystack of multireads to manual verification, which is expensive if possible at all.
In this paper, we first present a formal and precise definition of
double-fetch bugs and then implement a static analysis system—
DEADLINE—to automatically detect double-fetch bugs in OS
kernels. DEADLINE uses static program analysis techniques
to systematically find multi-reads throughout the kernel and
employs specialized symbolic checking to vet each multi-read for
double-fetch bugs. We apply DEADLINE to Linux and FreeBSD
kernels and find 23 new bugs in Linux and one new bug in
FreeBSD. We further propose four generic strategies to patch and
prevent double-fetch bugs based on our study and the discussion
with kernel maintainers
Компоненти Linux-подібної операційної системи
Ця робота являє собою дослідження та огляд різних компонентів
операційних систем, притаманних Unix-подібним операційним системам.
Робота складається з трьох основних частин, кожна з яких підрозділяється на
набори менших компонентів: ядро, стандартна бібліотека мови програмування
С та набір користувацьких програм. Проєкт спирається на ряд технік з
імплементації та оптимізації для того, щоб зробити це ядро гідною базою для
побудови операційної системи, при цьому зберігаючи простоту розробки та
читабельність коду.This work represents a research and review of different operating system
components common to Unix-like operating systems. The work consists of three
main parts, each subdivided into a set of subcomponents: the kernel, the C standard
library and the user-space program set. The project employs a range of
implementation and optimization techniques to make the kernel a viable option for
operating system base while maintaining the ease of development and code
readability at the same time
- …