A New Approach for Rowhammer Attacks

Total Page:16

File Type:pdf, Size:1020Kb

A New Approach for Rowhammer Attacks A New Approach for Rowhammer Attacks Rui Qiao Mark Seaborn Stony Brook University Google [email protected] [email protected] Abstract—Rowhammer is a hardware bug identified in recent table, and write access to page tables enables attacker to commodity DRAMs: repeated row activations can cause bit flips control the whole physical memory. The second exploit is in adjacent rows. Rowhammer has been recognized as both a a sandbox escape by causing bit flips in the instructions reliability and security issue. And it is a classic example that lay- ered abstractions and trust (in this case, virtual memory) can be enforcing control-flow integrity [17]. broken from hardware level. Previous rowhammer attacks either rely on rarely used special instructions or complicated memory The key challenge of triggering rowhammer is to reliably access patterns. In this paper, we propose a new approach for and frequently cause DRAM row activations. However, CPU rowhammer that is based on x86 non-temporal instructions. This cache can prevent DRAM accesses (and therefore row activa- approach bypasses existing rowhammer defense and is much tions). Previous rowhammer approaches either rely on the x86 less constrained for a more challenging task: remote rowhammer attacks, i.e., triggering rowhammer with existing, benign code. CLFLUSH instruction [15], or use carefully selected memory Moreover, we extend our approach and identify libc memset access patterns to evict cache lines [9], [10]. Therefore, and memcpy functions as a new rowhammer primitive. Our rowhammer attacks are usually assumed by software level discussions on rowhammer protection suggest that it is critical defenses to be based on these approaches. to understand this new threat to be able to defend in depth. I.I NTRODUCTION In this paper, we propose new approaches for triggering rowhammer. We further discuss their security implications un- Rowhammer is a kind of DRAM disturbance error: repeated der two different threat models. In the first model, the program DRAM row activations can cause bit flips in adjacent rows code is from untrusted sources, and may be sandboxed. The [15]. As a DRAM hardware bug, rowhammer is closely related second model only allows benign code to be executed, but to DRAM organization. DRAM consists of a two dimensional the program may be exposed to untrusted data inputs. We array of cells: the rows and columns are used for addressing a show that rowhammer attacks can be performed with our new cell. For each DRAM cell, the charged or uncharged state of approaches. Specifically, we make the following contributions: its capacitor is used to denote a single bit of stored value. In order to access a cell, its row needs to be activated in order to be copied to a row buffer. However, repeatedly activating a row • A new rowhammer method without CLFLUSH. Other can cause cells at adjacent rows discharge at an accelerated than existing methods, we demonstrate that rowhammer rate. If a cell state changes from charged to uncharged before can also be triggered with non-temporal store instructions. it is refreshed, the bit has flipped. This phenomenon is widely This method can be less constrained and more suitable recognized as the “rowhammer” problem. for some scenarios. The rowhammer problem exists in recent commodity • A new rowhammer primitive. We identify a new rowham- DRAM chips and mostly results from the design/process mer primitive that extends our non-temporal store based limitations for sub 40 nm memory technology such as DDR3 method. Specifically, libc functions memset and memcpy [15]: as the chip density increases, the cells become smaller are found capable of rowhammer. This can be convenient and the capacitors can hold less charge. The cells are also because of their wide usage. closer. Therefore the voltage fluctuations when activating a • Exploit with untrusted code. We develop an exploit that row are more likely to affect adjacent rows and finally result can escape from a sandbox, bypassing existing appli- in bit flips. It has been shown that 110 out of 129 recent cation layer rowhammer defense. We highlight the dif- DRAM modules from three major DRAM manufactures are ferences of the exploit as compared to the CLFLUSH susceptible to the rowhammer problem [15]. based approach, and illustrate how we overcome these Rowhammer was first considered as a reliability issue which challenges. may result in data corruption, but later it has been shown to • Remote rowhammer attacks. We describe the possible also be a security issue [17]. Two exploits were developed: remote rowhammer attacks, i.e., triggering rowhammer the first one gains kernel privilege by causing bit flips in with malicious inputs but benign code, based on the new page table entries (PTE) of an unprivileged, malicious process. rowhammer methods. Compared with user level software Specifically, the changed PTE may point one of the malicious based memory corruptions which only affect the current process’s writable page to a physical frame containing page process, one distinguishing feature of rowhammer is that ∗This work was supported in part by grant from ONR (N00014-15-1-2378). bit flips can be caused in other processes or kernel. code1a: code1b: III.N ON-TEMPORAL STORES:ANEW METHOD FOR mov (X), %eax mov (X), %eax OWHAMMER mov (Y), %eax clflush (X) R clflush (X) In this section, we introduce the involved instructions, chal- clflush (Y) mfence mfence lenges, and implementation details for our new rowhammer jmp code1a jmp code1b method. Fig. 1. Rowhammer with CLFLUSH A. Non-temporal Instructions II.B ACKGROUND In computation, data references can have different patterns. Some are temporal: data will be accessed again soon in A. DRAM future. Some are spatial: data in adjacent locations will be From a low level, the basic unit of storing information in accessed. And some are non-temporal: data is referenced dynamic random-access memory (DRAM) is a cell. It consists just once and not again in the near future. As most data of a capacitor and a transistor. The capacitor can either be accesses exhibit either temporal or spatial locality, caches are charged or uncharged, representing a binary data value. And introduced to effectively improve performance. However, non- the transistor is used for accessing the cell. temporal accesses could pollute cache and harm performance. From a high level, a DRAM module can have one or To address this problem, non-temporal instructions were in- two ranks, where one rank corresponds to one side of the troduced by CPU vendors for supporting cacheability control. dual inline memory modules (DIMMs). Each rank is divided Once non-temporal data references are expected, programmers into banks, which can be accessed concurrently to increase or compilers can use these non-temporal instructions to mini- parallelism. In each bank, cells are organized into rows and mize cache pollution. On the other hand, because their cache columns. To access a particular cell, the corresponding row is bypass characteristics are desirable, we explore the possibility first activated, and then data is read into the row buffer of the of using them for rowhammer. bank, and the accesses are served from row buffer. Non-temporal instructions can be loads, stores and DRAM cells lose charge gradually. Therefore, they need prefetches. The only x86 non-temporal load instruction to be recharged periodically to keep the stored value. This MOVNTDQA is not useful for rowhammer because it requires process is called refresh. The time period for a cell to lose the underlying memory to be write combining (WC) type to data because of discharging is called retention time, which is bypass cache. The only x86 non-temporal prefetch instruc- specified by DDR3 DRAM specification [12] to be at least 64 tion PREFETCHNTA is not helpful either, because it may ms. A refresh must happen on every row within this time. (pre)fetch data into L2 cache from L3 cache, therefore not In most systems, memory controller uses physical rather reliably generating DRAM accesses and hence row activations. than virtual addresses for selecting the underlying rank, bank, We can use non-temporal stores for rowhammer because row, and column of the DRAM. Although not documented, they treat target memory as uncached “write combining (WC)” this mapping of some CPUs can be reverse engineered [16]. type [3]1. There are a handful of x86 non-temporal store B. Rowhammer: The DRAM Bug instructions, some examples are: As discussed, rowhammer can be triggered if a DRAM row • MOVNTI: this instruction moves a 32-bit or 64-bit inte- is repeatedly activated. Figure1 shows the code snippets used ger from source register operand to destination memory for rowhammer from the original paper [15]. X and Y are operand, with a non-temporal hint. addresses that belong to the same bank, but different rows. • MOVNTDQ: similarly, this instruction stores a 128-bit Note that code1a can induce bit flips, while code1b cannot. value from a SSE register to memory using a non- This is because in code1b, if a single row (which X belongs temporal hint. to) is repeatedly accessed, the data will be served from the B. Write-Combining Buffers row buffer since there is no need to reactivate the row. On Although non-temporal stores serve as a basis for our the other hand, code1a alternates the accesses to two different rowhammer method, a straight-forward implementation would rows (but on the same bank). Therefore, the next memory read not work due to write-combining buffers. is not from the same row, and the content of the row buffer cannot be used. This essentially forces the two rows to be As discussed, the memory used by non-temporal stores are activated in turn, and finally there can be bit flips in nearby treated as “write combining (WC)” type [3].
Recommended publications
  • Linux and Electronics
    Linux and Electronics Urs Lindegger Linux and Electronics Urs Lindegger Copyright © 2019-11-25 Urs Lindegger Table of Contents 1. Introduction .......................................................................................................... 1 Note ................................................................................................................ 1 2. Printed Circuits ...................................................................................................... 2 Printed Circuit Board design ................................................................................ 2 Kicad ....................................................................................................... 2 Eagle ..................................................................................................... 13 Simulation ...................................................................................................... 13 Spice ..................................................................................................... 13 Digital simulation .................................................................................... 18 Wings 3D ....................................................................................................... 18 User interface .......................................................................................... 19 Modeling ................................................................................................ 19 Making holes in Wings 3D .......................................................................
    [Show full text]
  • Microkernel Mechanisms for Improving the Trustworthiness of Commodity Hardware
    Microkernel Mechanisms for Improving the Trustworthiness of Commodity Hardware Yanyan Shen Submitted in fulfilment of the requirements for the degree of Doctor of Philosophy School of Computer Science and Engineering Faculty of Engineering March 2019 Thesis/Dissertation Sheet Surname/Family Name : Shen Given Name/s : Yanyan Abbreviation for degree as give in the University calendar : PhD Faculty : Faculty of Engineering School : School of Computer Science and Engineering Microkernel Mechanisms for Improving the Trustworthiness of Commodity Thesis Title : Hardware Abstract 350 words maximum: (PLEASE TYPE) The thesis presents microkernel-based software-implemented mechanisms for improving the trustworthiness of computer systems based on commercial off-the-shelf (COTS) hardware that can malfunction when the hardware is impacted by transient hardware faults. The hardware anomalies, if undetected, can cause data corruptions, system crashes, and security vulnerabilities, significantly undermining system dependability. Specifically, we adopt the single event upset (SEU) fault model and address transient CPU or memory faults. We take advantage of the functional correctness and isolation guarantee provided by the formally verified seL4 microkernel and hardware redundancy provided by multicore processors, design the redundant co-execution (RCoE) architecture that replicates a whole software system (including the microkernel) onto different CPU cores, and implement two variants, loosely-coupled redundant co-execution (LC-RCoE) and closely-coupled redundant co-execution (CC-RCoE), for the ARM and x86 architectures. RCoE treats each replica of the software system as a state machine and ensures that the replicas start from the same initial state, observe consistent inputs, perform equivalent state transitions, and thus produce consistent outputs during error-free executions.
    [Show full text]
  • SMASH: Synchronized Many-Sided Rowhammer Attacks from Javascript
    SMASH: Synchronized Many-sided Rowhammer Attacks from JavaScript Finn de Ridder Pietro Frigo Emanuele Vannacci Herbert Bos ETH Zurich VU Amsterdam VU Amsterdam VU Amsterdam VU Amsterdam Cristiano Giuffrida Kaveh Razavi VU Amsterdam ETH Zurich Abstract has instead been lagging behind. In particular, rather than Despite their in-DRAM Target Row Refresh (TRR) mitiga- addressing the root cause of the Rowhammer bug, DDR4 in- tions, some of the most recent DDR4 modules are still vul- troduced a mitigation known as Target Row Refresh (TRR). nerable to many-sided Rowhammer bit flips. While these TRR, however, has already been shown to be ineffective bit flips are exploitable from native code, triggering them against many-sided Rowhammer attacks from native code, in the browser from JavaScript faces three nontrivial chal- at least in its current in-DRAM form [12]. However, it is lenges. First, given the lack of cache flushing instructions in unclear whether TRR’s failing also re-exposes end users to JavaScript, existing eviction-based Rowhammer attacks are TRR-aware, JavaScript-based Rowhammer attacks from the already slow for the older single- or double-sided variants browser. In fact, existing many-sided Rowhammer attacks and thus not always effective. With many-sided Rowhammer, require frequent cache flushes, large physically-contiguous mounting effective attacks is even more challenging, as it re- regions, and certain access patterns to bypass in-DRAM TRR, quires the eviction of many different aggressor addresses from all challenging in JavaScript. the CPU caches. Second, the most effective many-sided vari- In this paper, we show that under realistic assumptions, it ants, known as n-sided, require large physically-contiguous is indeed possible to bypass TRR directly from JavaScript, memory regions which are not available in JavaScript.
    [Show full text]
  • Porting and Using Newlib in Embedded Systems William Gatliff Table of Contents Copyright
    Porting and Using Newlib in Embedded Systems William Gatliff Table of Contents Copyright................................................................................................................................3 Newlib.....................................................................................................................................3 Newlib Licenses....................................................................................................................3 Newlib Features ....................................................................................................................3 Building Newlib ...................................................................................................................7 Tweaks ....................................................................................................................................8 Porting Newlib......................................................................................................................9 Onward! ................................................................................................................................19 Resources..............................................................................................................................19 About the Author................................................................................................................19 $Revision: 1.5 $ Although technically not a GNU product, the C runtime library newlib is the best choice for many GNU-based
    [Show full text]
  • Drammer: Deterministic Rowhammer Attacks on Mobile Platforms
    Drammer: Deterministic Rowhammer Attacks on Mobile Platforms Victor van der Veen Yanick Fratantonio Martina Lindorfer Vrije Universiteit Amsterdam UC Santa Barbara UC Santa Barbara [email protected] [email protected] [email protected] Daniel Gruss Clémentine Maurice Giovanni Vigna Graz University of Technology Graz University of Technology UC Santa Barbara [email protected] [email protected] [email protected] Herbert Bos Kaveh Razavi Cristiano Giuffrida Vrije Universiteit Amsterdam Vrije Universiteit Amsterdam Vrije Universiteit Amsterdam [email protected] [email protected] [email protected] ABSTRACT 1. INTRODUCTION Recent work shows that the Rowhammer hardware bug can The Rowhammer hardware bug allows an attacker to mod- be used to craft powerful attacks and completely subvert a ify memory without accessing it, simply by repeatedly ac- system. However, existing efforts either describe probabilis- cessing, i.e., \hammering", a given physical memory loca- tic (and thus unreliable) attacks or rely on special (and often tion until a bit in an adjacent location flips. Rowhammer unavailable) memory management features to place victim has been used to craft powerful attacks that bypass all cur- objects in vulnerable physical memory locations. Moreover, rent defenses and completely subvert a system [16,32,35,47]. prior work only targets x86 and researchers have openly won- Until now, the proposed exploitation techniques are either dered whether Rowhammer attacks on other architectures, probabilistic [16,35] or rely on special memory management such as ARM, are even possible. features such as memory deduplication [32], MMU paravir- We show that deterministic Rowhammer attacks are feasi- tualization [47], or the pagemap interface [35].
    [Show full text]
  • Throwhammer: Rowhammer Attacks Over the Network and Defenses
    Throwhammer: Rowhammer Attacks over the Network and Defenses Andrei Tatar Radhesh Krishnan Konoth Elias Athanasopoulos VU Amsterdam VU Amsterdam University of Cyprus Cristiano Giuffrida Herbert Bos Kaveh Razavi VU Amsterdam VU Amsterdam VU Amsterdam Abstract never progressed beyond local privilege escalations or sandbox escapes. The attacker needs the ability to run Increasingly sophisticated Rowhammer exploits allow an code on the victim machine in order to flip bits in sen- attacker that can execute code on a vulnerable system sitive data. Hence, Rowhammer posed little threat from to escalate privileges and compromise browsers, clouds, attackers without code execution on the victim machines. and mobile systems. In all these attacks, the common In this paper, we show that this is no longer true and at- assumption is that attackers first need to obtain code tackers can flip bits by only sending network packets to execution on the victim machine to be able to exploit a victim machine connected to RDMA-enabled networks Rowhammer either by having (unprivileged) code exe- commonly used in clouds and data centers [1, 20, 45, 62]. cution on the victim machine or by luring the victim to a website that employs a malicious JavaScript applica- Rowhammer exploits today Rowhammer allows at- tion. In this paper, we revisit this assumption and show tackers to flip a bit in one physical memory location that an attacker can trigger and exploit Rowhammer bit by aggressively reading (or writing) other locations (i.e., flips directly from a remote machine by only sending hammering). As bit flips occur at the physical level, they network packets.
    [Show full text]
  • Anatomy of Cross-Compilation Toolchains
    Embedded Linux Conference Europe 2016 Anatomy of cross-compilation toolchains Thomas Petazzoni free electrons [email protected] Artwork and Photography by Jason Freeny free electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 1/1 Thomas Petazzoni I CTO and Embedded Linux engineer at Free Electrons I Embedded Linux specialists. I Development, consulting and training. I http://free-electrons.com I Contributions I Kernel support for the Marvell Armada ARM SoCs from Marvell I Major contributor to Buildroot, an open-source, simple and fast embedded Linux build system I Living in Toulouse, south west of France Drawing from Frank Tizzoni, at Kernel Recipes 2016 free electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 2/1 Disclaimer I I am not a toolchain developer. Not pretending to know everything about toolchains. I Experience gained from building simple toolchains in the context of Buildroot I Purpose of the talk is to give an introduction, not in-depth information. I Focused on simple gcc-based toolchains, and for a number of examples, on ARM specific details. I Will not cover advanced use cases, such as LTO, GRAPHITE optimizations, etc. I Will not cover LLVM free electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/1 What is a cross-compiling toolchain? I A set of tools that allows to build source code into binary code for
    [Show full text]
  • Can Microkernels Mitigate Microarchitectural Attacks?⋆
    Can Microkernels Mitigate Microarchitectural Attacks?? Gunnar Grimsdal1, Patrik Lundgren2, Christian Vestlund3, Felipe Boeira1, and Mikael Asplund1[0000−0003−1916−3398] 1 Department of Computer and Information Science, Link¨oping University, Sweden ffelipe.boeira,[email protected] 2 Westermo Network Technologies [email protected] 3 Sectra AB, Link¨oping,Sweden Abstract. Microarchitectural attacks such as Meltdown and Spectre have attracted much attention recently. In this paper we study how effec- tive these attacks are on the Genode microkernel framework using three different kernels, Okl4, Nova, and Linux. We try to answer the question whether the strict process separation provided by Genode combined with security-oriented kernels such as Okl4 and Nova can mitigate microar- chitectural attacks. We evaluate the attack effectiveness by measuring the throughput of data transfer that violates the security properties of the system. Our results show that the underlying side-channel attack Flush+Reload used in both Meltdown and Spectre, is effective on all in- vestigated platforms. We were also able to achieve high throughput using the Spectre attack, but we were not able to show any effective Meltdown attack on Okl4 or Nova. Keywords: Genode, Meltdown, Spectre, Flush+Reload, Okl4, Nova 1 Introduction It used to be the case that general-purpose operating systems were mostly found in desktop computers and servers. However, as IoT devices are becoming in- creasingly more sophisticated, they tend more and more to require a powerful operating system such as Linux, since otherwise all basic services must be im- plemented and maintained by the device developers. At the same time, security has become a prime concern both in IoT and in the cloud domain.
    [Show full text]
  • Design and Implementation of Embedded Linux System for Networking Devices
    Design and Implementation of Embedded Linux System for Networking Devices Hyun-Joon Cha Distributed Processing and Network Management Laboratory Division of Electrical and Computer Engineering (Computer Science and Engineering) [email protected] POSTECH Design and Implementation of Embedded Linux System (1/24) DP&NM Lab. for Networking Devices Contents • Introduction • Current Embedded Operating Systems • Requirements • Design of Embedded Linux System • Implementation • Conclusions • Future work POSTECH Design and Implementation of Embedded Linux System (2/24) DP&NM Lab. for Networking Devices Introduction • Networking Devices – Devices which has networking capability – Infrastructure of emerging information society • e.g.) Router, Switch, Gateway, Cache engine, Cellular phone, PDA, etc. – Network-capable devices will substitute current dummy and not- connected devices all around – Need more resources, processing power and OSs to coordinate it – Most networking devices use commercial Real-time OSs POSTECH Design and Implementation of Embedded Linux System (3/24) DP&NM Lab. for Networking Devices Introduction – cont’d • Embedded OSs for Networking Devices – Commercial: VxWorks, pSOS, QNX, Nucleus, LynxOS, VRTX, etc. – Free or Almost Free: Xinu, uC/OS, etc. • Frequently Raised Problems from Industry and Academy – No OS approach or using educational OS is harmful – High purchase price and royalty -> affect development cost and device price – Limited target and development platform – OS specific architecture and interface – Technology
    [Show full text]
  • 4. Nios II Software Build Tools
    4. Nios II Software Build Tools May 2011 NII52015-11.0.0 NII52015-11.0.0 This chapter describes the Nios® II Software Build Tools (SBT), a set of utilities and scripts that creates and builds embedded C/C++ application projects, user library projects, and board support packages (BSPs). The Nios II SBT supports a repeatable, scriptable, and archivable process for creating your software product. You can invoke the Nios II SBT through either of the following user interfaces: ■ The Eclipse™ GUI ■ The Nios II Command Shell The purpose of this chapter is to make you familiar with the internal functionality of the Nios II SBT, independent of the user interface employed. 1 Before reading this chapter, consider getting an introduction to the Nios II SBT by first reading one of the following chapters: ■ Getting Started with the Graphical User Interface chapter of the Nios II Software Developer’s Handbook ■ Getting Started from the Command Line chapter of the Nios II Software Developer’s Handbook This chapter contains the following sections: ■ “Road Map for the SBT” ■ “Makefiles” on page 4–3 ■ “Nios II Embedded Software Projects” on page 4–5 ■ “Common BSP Tasks” on page 4–8 ■ “Details of BSP Creation” on page 4–20 ■ “Tcl Scripts for BSP Settings” on page 4–27 ■ “Revising Your BSP” on page 4–30 ■ “Specifying BSP Defaults” on page 4–35 ■ “Device Drivers and Software Packages” on page 4–39 ■ “Boot Configurations for Altera Embedded Software” on page 4–40 ■ “Altera-Provided Embedded Development Tools” on page 4–42 ■ “Restrictions” on page 4–48 © 2011 Altera Corporation.
    [Show full text]
  • Wind River® Vxworks® 7 Third Party License Notices
    Wind River® VxWorks® 7 Third Party License Notices This document contains third party intellectual property (IP) notices for the BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY Wind River® VxWorks® 7 distribution. Certain licenses and license notices THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, may appear in other parts of the product distribution in accordance with the OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN license requirements. ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Trademarks All company, product and service names used in this software are for ACPICA identification purposes only. Version: 20170303 Component(s): Runtime Wind River and VxWorks are registered trademarks of Wind River Systems. Description: Provides code to implement ACPI specification in VxWorks. UNIX is a registered trademark of The Open Group. IBM and Bluemix are registered trademarks of the IBM Corporation. NOTICES: All other third-party trademarks are the property of their respective owners. 1. Copyright Notice Some or all of this work - Copyright (c) 1999 - 2016, Intel Corp. All rights reserved. Third Party Notices 2. License 2.1. This is your license from Intel Corp. under its intellectual property rights. You may have additional license terms from the party that provided you this software, covering your right to use that party's intellectual property rights. 64-Bit Dynamic Linker Version: 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a copy Component(s): Runtime of the source code appearing in this file ("Covered Code") an irrevocable, Description: The dynamic linker is used to load shared libraries.
    [Show full text]
  • Choosing System C Library
    Choosing System C library Khem Raj Comcast Embedded Linux Conference Europe 2014 Düsseldorf Germany Introduction “God defined C standard library everything else is creation of man” Introduction • Standard library for C language • Provides primitives for OS service • Hosted/freestanding • String manipulations • Types • I/O • Memory • APIs Linux Implementations • GNU C library (glibc) • uClibc • eglibc – Now merged into glibc • Dietlibc • Klibc • Musl • bionic Multiple C library FAQs • Can I have multiple C libraries side by side ? • Can programs compiled with glibc run on uclibc or vice versa ? • Are they functional compatible ? • Do I need to choose one over other if I am doing real time Linux? • I have a baremetal application what libc options do I have ? Posix Compliance • Posix specifies more than ISO C • Varying degree of compliance What matters to you ? • Code Size • Functionality • Interoperability • Licensing • Backward Compatibility • Variety of architecture support • Dynamic Linking • Build system Codesize • Dietlibc/klibc – Used in really small setup e.g. initramfs • Bionic – Small linked into every process • uClibc – Configurable • Size can be really small at the expense of functionality • Eglibc – Has option groups can be ( < 1M ) License • Bionic – BSD/Apache-2.0 • Musl - MIT • Uclibc – LGPL-2.1 • Eglibc/Glibc – LGPL-2.1 Assigned to FSF • Dietlibc – GPLv2 • Klibc – GPLv2 • Newlib – some parts are GPLv3 Compliance • Musl strives for ISO/C and POSIX compliance No-mmu • uClibc supported No-mmu Distributions • Glibc is used in
    [Show full text]