SlideShare a Scribd company logo
Binary Quilting to Generate
Patched Executables
without Compilation
Anthony Saieva, Gail Kaiser
Columbia University
1
Motivation -- Problematic Updates
● The typical update cycle is usually sufficient to keep code updated and
secure.
● However in enterprise-critical systems, sysadmins may be reluctant to
update systems for fear of unwanted side-effects.
● This leads to insecure deployments even when patches are available.
● When many update cycles have passed between the deployed and
current versions, deploying the updated version is not simple and may
not be feasible without major changes to the dependent systems.
2
Why Binary Analysis?
Changes may need to be made
at binary level, either because
legacy code no longer has the
source code available or
because proprietary licenses
prevent making the source code
available.
Binary manipulations usually
involve non-semantic changes
like shadow stacks and stack
canaries. 3
Solution -- Customized Update Cycle
Updating to the entire
new version may break
enterprise-critical
functionality. Customized
updates allows
customers to maintain
software through partial
updates.
4
Binary Quilting
● We introduce binary quilting to
accomplish these customized
updates.
● We leave untouched as much
of the original code as
possible.
● We only replace the
overwritten code with the
corresponding new code and
its dependencies.
5
We use binary analysis to associate
changes at the source code level with
changes at the binary level.
The modified symbol table informs us
which code to include in the update.
Binary Patch Decomposition
6
Binary Patch Decomposition
We record the diffs between
the previously compiled
versions and the newly
compiled versions by
integrating binary change
tracking into the build process.
These diffs are stored in a
changelog database.
The developers send the
appropriate metadata to each
client depending on the
deployed version of the client’s
software and what they want
to upgrade.
7
Quilting Procedure
Symbols function as a point of reference
between the binaries.
Since x86 defines strict function calling
conventions, it guarantees a consistent
state where we can interpose new code.
References fall into 3 categories
1) Code References
2) Data References
3) PLT Interposition
8
Evaluation
Evaluated with 5 open source projects
curl, coreutils, wget, libpng, and redis.
LOC changes of size up to 40+
additions and 141- deletions.
Resolved hundreds of code and data
section references to successfully quilt
the patches.
9
Selected Case Studies
Crashing bug in libpng (image
processing library) where mathematical
error causes invalid memory access.
Quilted binary successfully parses
problematic image.
10
Libcurl (command line networking client)
failed to parse some malicious URL’s
correctly due to erroneous conditional.
Quilted binary functions correctly in
network sensitive context.
Quilting Overhead
Quilting in new code adds to potentially
vulnerable attack surface area.
Since we quilt only the minimum
required patch our technique introduces
minimal space overhead.
The largest size increase was 14%, but
usually much smaller.
11
Conclusion
We successfully demonstrated binary quilting on real open source projects.
In future work we plan to expand our evaluation and investigate formal verification
approaches to prove that no side effects are introduced during the patching
process.
12
Questions?
13

More Related Content

PPTX
Ase 2018 parikshan
gailkaiser
 
PDF
Replay without Recording of Production Bugs for Service Oriented Applications
jon_bell
 
PPTX
Software Testing in a Distributed Environment
Perforce
 
PPTX
How Samsung Engineers Do Pre-Commit Builds with Perforce Helix Streams
Perforce
 
PDF
Toward Hybrid Cloud Serverless Transparency with Lithops Framework
LibbySchulze
 
PPTX
Streaming the platform with Confluent (Apache Kafka)
GiuseppeBaccini
 
PDF
The future of DevOps: fully left-shifted deployments with version control and...
Red Gate Software
 
PDF
Using Redgate, AKS and Azure to bring DevOps to your Database
Red Gate Software
 
Ase 2018 parikshan
gailkaiser
 
Replay without Recording of Production Bugs for Service Oriented Applications
jon_bell
 
Software Testing in a Distributed Environment
Perforce
 
How Samsung Engineers Do Pre-Commit Builds with Perforce Helix Streams
Perforce
 
Toward Hybrid Cloud Serverless Transparency with Lithops Framework
LibbySchulze
 
Streaming the platform with Confluent (Apache Kafka)
GiuseppeBaccini
 
The future of DevOps: fully left-shifted deployments with version control and...
Red Gate Software
 
Using Redgate, AKS and Azure to bring DevOps to your Database
Red Gate Software
 

What's hot (19)

PPTX
Managing Microservices at Scale
Perforce
 
PPTX
Protecting Your IP with Perforce Helix and Interset
Perforce
 
PDF
SoftwareCircus 2020 "The Past, Present, and Future of Cloud Native API Gateways"
Daniel Bryant
 
PPTX
Bro, manage test data like a pro! [QA Fest 2018]
Mikalai Alimenkou
 
PDF
Connect Ops and Security with Flexible Web App and API Protection
DevOps.com
 
PDF
Deployment pipeline for databases
Eduardo Piairo
 
PPTX
Testing Microservices
Anil Allewar
 
PDF
Testing Microservices
Nathan Jones
 
PDF
Integration Testing with Docker Containers with DockerCompose
Mike Holdsworth
 
PPTX
ATAGTR2017 Batch Workload Modelling and Performance Optimization
Agile Testing Alliance
 
PDF
Delivery pipelines at Symphony Talent - Present and Future
Nathan Jones
 
PDF
Hexagonal architecture for java applications
Fabricio Epaminondas
 
PDF
Standardizing Jenkins with CloudBees Jenkins Team
Deborah Schalm
 
PDF
Designing Scalable Applications
Fabricio Epaminondas
 
PPTX
Testing Microservices Architecture
Łukasz Rosłonek
 
PPTX
Measure() or die()
Tamar Duvshani Hermel
 
PDF
Fundamental Spring Boot: Keep it Simple, Get it Right, Be Productive and Have...
VMware Tanzu
 
PPTX
Vulnerability Discovery in the Cloud
DevOps.com
 
PDF
Deployment Pipeline for databases (Azure SQL Database, SQL Server)
Eduardo Piairo
 
Managing Microservices at Scale
Perforce
 
Protecting Your IP with Perforce Helix and Interset
Perforce
 
SoftwareCircus 2020 "The Past, Present, and Future of Cloud Native API Gateways"
Daniel Bryant
 
Bro, manage test data like a pro! [QA Fest 2018]
Mikalai Alimenkou
 
Connect Ops and Security with Flexible Web App and API Protection
DevOps.com
 
Deployment pipeline for databases
Eduardo Piairo
 
Testing Microservices
Anil Allewar
 
Testing Microservices
Nathan Jones
 
Integration Testing with Docker Containers with DockerCompose
Mike Holdsworth
 
ATAGTR2017 Batch Workload Modelling and Performance Optimization
Agile Testing Alliance
 
Delivery pipelines at Symphony Talent - Present and Future
Nathan Jones
 
Hexagonal architecture for java applications
Fabricio Epaminondas
 
Standardizing Jenkins with CloudBees Jenkins Team
Deborah Schalm
 
Designing Scalable Applications
Fabricio Epaminondas
 
Testing Microservices Architecture
Łukasz Rosłonek
 
Measure() or die()
Tamar Duvshani Hermel
 
Fundamental Spring Boot: Keep it Simple, Get it Right, Be Productive and Have...
VMware Tanzu
 
Vulnerability Discovery in the Cloud
DevOps.com
 
Deployment Pipeline for databases (Azure SQL Database, SQL Server)
Eduardo Piairo
 
Ad

Similar to Feast '20 slides (20)

PDF
Kernel Recipes 2014 - Advanced Quilt
Anne Nicolas
 
PDF
Kernel Recipes 2014 - Introduction to Quilt
Anne Nicolas
 
PDF
Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)
Joxean Koret
 
PDF
Appa
rathodr
 
PDF
White Paper: Release This! - Tools for a Smooth Release Cycle
Perforce
 
PDF
Lean Software Production and Qualification Infrastructures
AdaCore
 
PPTX
The Brave New World of Continuous Release
Baruch Sadogursky
 
PPT
Toolchain Independent Distributed Compilation
Dietmar Hauser
 
PDF
Run-time Patching and updating Impact Estimation
CREST
 
PDF
The Brave New World of Continuous Release - Baruch Sadogursky
jaxconf
 
PDF
Binary Patching
UTD Computer Security Group
 
PDF
Tracing Software Build Processes to Uncover License Compliance Inconsistencies
Shane McIntosh
 
PDF
Automation - fabric, django and more
Ilian Iliev
 
PDF
Maintenance des branches stables du noyau
Anne Nicolas
 
PDF
Pharo. Next Steps.
Marcus Denker
 
PDF
Fighting the Branch Predictor (ESUG 2025)
ESUG
 
PDF
Makefile
Ionela
 
PDF
Versioning and License selection
Danilo Pianini
 
PPTX
Erlang FTW!
Mahesh Paolini-Subramanya
 
PDF
Ignite Devops Fast Moving Software
SpamapS
 
Kernel Recipes 2014 - Advanced Quilt
Anne Nicolas
 
Kernel Recipes 2014 - Introduction to Quilt
Anne Nicolas
 
Pigaios: A Tool for Diffing Source Codes against Binaries (Hacktivity 2018)
Joxean Koret
 
Appa
rathodr
 
White Paper: Release This! - Tools for a Smooth Release Cycle
Perforce
 
Lean Software Production and Qualification Infrastructures
AdaCore
 
The Brave New World of Continuous Release
Baruch Sadogursky
 
Toolchain Independent Distributed Compilation
Dietmar Hauser
 
Run-time Patching and updating Impact Estimation
CREST
 
The Brave New World of Continuous Release - Baruch Sadogursky
jaxconf
 
Tracing Software Build Processes to Uncover License Compliance Inconsistencies
Shane McIntosh
 
Automation - fabric, django and more
Ilian Iliev
 
Maintenance des branches stables du noyau
Anne Nicolas
 
Pharo. Next Steps.
Marcus Denker
 
Fighting the Branch Predictor (ESUG 2025)
ESUG
 
Makefile
Ionela
 
Versioning and License selection
Danilo Pianini
 
Ignite Devops Fast Moving Software
SpamapS
 
Ad

Recently uploaded (20)

PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
The Future of Artificial Intelligence (AI)
Mukul
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 

Feast '20 slides

  • 1. Binary Quilting to Generate Patched Executables without Compilation Anthony Saieva, Gail Kaiser Columbia University 1
  • 2. Motivation -- Problematic Updates ● The typical update cycle is usually sufficient to keep code updated and secure. ● However in enterprise-critical systems, sysadmins may be reluctant to update systems for fear of unwanted side-effects. ● This leads to insecure deployments even when patches are available. ● When many update cycles have passed between the deployed and current versions, deploying the updated version is not simple and may not be feasible without major changes to the dependent systems. 2
  • 3. Why Binary Analysis? Changes may need to be made at binary level, either because legacy code no longer has the source code available or because proprietary licenses prevent making the source code available. Binary manipulations usually involve non-semantic changes like shadow stacks and stack canaries. 3
  • 4. Solution -- Customized Update Cycle Updating to the entire new version may break enterprise-critical functionality. Customized updates allows customers to maintain software through partial updates. 4
  • 5. Binary Quilting ● We introduce binary quilting to accomplish these customized updates. ● We leave untouched as much of the original code as possible. ● We only replace the overwritten code with the corresponding new code and its dependencies. 5
  • 6. We use binary analysis to associate changes at the source code level with changes at the binary level. The modified symbol table informs us which code to include in the update. Binary Patch Decomposition 6
  • 7. Binary Patch Decomposition We record the diffs between the previously compiled versions and the newly compiled versions by integrating binary change tracking into the build process. These diffs are stored in a changelog database. The developers send the appropriate metadata to each client depending on the deployed version of the client’s software and what they want to upgrade. 7
  • 8. Quilting Procedure Symbols function as a point of reference between the binaries. Since x86 defines strict function calling conventions, it guarantees a consistent state where we can interpose new code. References fall into 3 categories 1) Code References 2) Data References 3) PLT Interposition 8
  • 9. Evaluation Evaluated with 5 open source projects curl, coreutils, wget, libpng, and redis. LOC changes of size up to 40+ additions and 141- deletions. Resolved hundreds of code and data section references to successfully quilt the patches. 9
  • 10. Selected Case Studies Crashing bug in libpng (image processing library) where mathematical error causes invalid memory access. Quilted binary successfully parses problematic image. 10 Libcurl (command line networking client) failed to parse some malicious URL’s correctly due to erroneous conditional. Quilted binary functions correctly in network sensitive context.
  • 11. Quilting Overhead Quilting in new code adds to potentially vulnerable attack surface area. Since we quilt only the minimum required patch our technique introduces minimal space overhead. The largest size increase was 14%, but usually much smaller. 11
  • 12. Conclusion We successfully demonstrated binary quilting on real open source projects. In future work we plan to expand our evaluation and investigate formal verification approaches to prove that no side effects are introduced during the patching process. 12

Editor's Notes

  • #2: This is a note