• Home
  • Search
  • Buddy Stacks: Protecting Return Addresses with Efficient Thread-Local Storage and Runtime Re-Randomization
  • Open Access IconOpen Access
  • Cite Icon8
  • https://doi.org/10.1145/3494516Copy DOI Icon

Buddy Stacks: Protecting Return Addresses with Efficient Thread-Local Storage and Runtime Re-Randomization

Show More
  • Abstract
  • Highlights & Summary
  • PDF
  • Literature Map
  • References
  • Citations
  • Similar Papers
Abstract

Shadow stacks play an important role in protecting return addresses to mitigate ROP attacks. Parallel shadow stacks, which shadow the call stack of each thread at the same constant offset for all threads, are known not to support multi-threading well. On the other hand, compact shadow stacks must maintain a separate shadow stack pointer in thread-local storage (TLS) , which can be implemented in terms of a register or the per-thread Thread-Control-Block (TCB) , suffering from poor compatibility in the former or high performance overhead in the latter. In addition, shadow stacks are vulnerable to information disclosure attacks. In this paper, we propose to mitigate ROP attacks for single- and multi-threaded server programs running on general-purpose computing systems by using a novel stack layout, called a buddy stack (referred to as Bustk ), that is highly performant, compatible with existing code, and provides meaningful security. These goals are met due to three novel design aspects in Bustk . First, Bustk places a parallel shadow stack just below a thread’s call stack (as each other’s buddies allocated together), avoiding the need to maintain a separate shadow stack pointer and making it now well-suited for multi-threading. Second, Bustk uses an efficient stack-based thread-local storage mechanism, denoted STK-TLS , to store thread-specific metadata in two TLS sections just below the shadow stack in dual redundancy (as each other’s buddies), so that both can be accessed and updated in a lightweight manner from the call stack pointer rsp alone. Finally, Bustk re-randomizes continuously (on the order of milliseconds) the return addresses on the shadow stack by using a new microsecond-level runtime re-randomization technique, denoted STK-MSR . This mechanism aims to obsolete leaked information, making it extremely unlikely for the attacker to hijack return addresses, particularly against a server program that sits often tens of milliseconds away from the attacker. Our evaluation using web servers, Nginx and Apache Httpd , shows that Bustk works well in terms of performance, compatibility, and security provided, with its parallel shadow stacks incurring acceptable memory overhead for real-world applications and its STK-TLS mechanism costing only two pages per thread. In particular, Bustk can protect the Nginx and Apache servers with an adaptive 1-ms re-randomization policy (without observable overheads when IO is intensive, with about 17,000 requests per second). In addition, we have also evaluated Bustk using other non-server applications, Firefox , Python , LLVM , JDK and SPEC CPU2006 , to demonstrate further the same degree of performance and compatibility provided, but the protection provided for, say, browsers, is weaker (since network-access delays can no longer be assumed).

Loading PDF

Similar Papers
  • Research Article
  • Citations4

Secure Patrol: Patrolling Against Buffer Overflow Exploits

  • May 04, 2014
  • Information Security Journal: A Global Perspective
  • Jaydeep Solanki +2
  • Research Article

TRACE: Trusted Return-Path Authentication via Context and Lightweight Encryption for IoT Devices

  • Sep 23, 2025
  • IEEE Internet of Things Journal
  • Haijun Wang +7
  • Research Article
  • Citations41

Optimal stack layout in a sea container terminal with automated lifting vehicles

  • Jan 16, 2017
  • International Journal of Production Research
  • Akash Gupta +3
  • Conference Article
  • Citations1

Using Java and the socket interface in teaching client/server programming

  • Jun 27, 1999
  • Andrew Yang +1
  • Research Article
  • Citations41

Control Flow Integrity Based on Lightweight Encryption Architecture

  • Jul 01, 2018
  • IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
  • Pengfei Qiu +4
  • Conference Article

StackLock with simple FSM

  • Jun 01, 2009
  • Dongkyun Ahn +1
  • Research Article
  • Citations15

The development of an efficient checkpointing facility exploiting operating systems services of the GENESIS cluster operating system

  • Sep 19, 2003
  • Future Generation Computer Systems
  • J.T Rough +1
  • Conference Article
  • Citations9

Techniques for developing and measuring high performance Web servers over high speed networks

  • Mar 29, 1998
  • J.C Hu +2
  • Conference Article
  • Citations1

An improved method for creating dynamic web forms using APL

  • Jun 01, 2000
  • Steven J Halasz
  • Conference Article
  • Citations2

Architecture Design of CTC Log Module Based on Web Service

  • Jun 01, 2019
  • Hongtao Zhao +5
  • Conference Article
  • Citations11

Improvement of the Recall and the Precision for Semantic Web Services Search

  • Jan 01, 2007
  • Daewook Lee +3
  • Conference Article
  • Citations7

Integrating RESTful Service into BPEL Business Process on Service Generation System

  • Jun 01, 2013
  • Budan Wu +2
  • Conference Article

A High performance Communication Program for a GPS-based Vehicle Tracing Mobile Platform

  • Jan 01, 2008
  • Qifeng Zhao +2
  • Conference Article
  • Citations142

XenLoop

  • Jun 23, 2008
  • Jian Wang +2
  • Conference Article
  • Citations6

CBBCM: Clustering Based Automatic Service Composition

  • Jul 01, 2011
  • Ying Ma +3
Cactus Communications logo

Copyright 2026 Cactus Communications. All rights reserved.