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

What's hot (19)

PPTX
Managing Microservices at Scale
PPTX
Protecting Your IP with Perforce Helix and Interset
PDF
SoftwareCircus 2020 "The Past, Present, and Future of Cloud Native API Gateways"
PPTX
Bro, manage test data like a pro! [QA Fest 2018]
PDF
Connect Ops and Security with Flexible Web App and API Protection
PDF
Deployment pipeline for databases
PPTX
Testing Microservices
PDF
Testing Microservices
PDF
Integration Testing with Docker Containers with DockerCompose
PPTX
ATAGTR2017 Batch Workload Modelling and Performance Optimization
PDF
Delivery pipelines at Symphony Talent - Present and Future
PDF
Hexagonal architecture for java applications
PDF
Standardizing Jenkins with CloudBees Jenkins Team
PDF
Designing Scalable Applications
PPTX
Testing Microservices Architecture
PPTX
Measure() or die()
PDF
Fundamental Spring Boot: Keep it Simple, Get it Right, Be Productive and Have...
PPTX
Vulnerability Discovery in the Cloud
PDF
Deployment Pipeline for databases (Azure SQL Database, SQL Server)
Managing Microservices at Scale
Protecting Your IP with Perforce Helix and Interset
SoftwareCircus 2020 "The Past, Present, and Future of Cloud Native API Gateways"
Bro, manage test data like a pro! [QA Fest 2018]
Connect Ops and Security with Flexible Web App and API Protection
Deployment pipeline for databases
Testing Microservices
Testing Microservices
Integration Testing with Docker Containers with DockerCompose
ATAGTR2017 Batch Workload Modelling and Performance Optimization
Delivery pipelines at Symphony Talent - Present and Future
Hexagonal architecture for java applications
Standardizing Jenkins with CloudBees Jenkins Team
Designing Scalable Applications
Testing Microservices Architecture
Measure() or die()
Fundamental Spring Boot: Keep it Simple, Get it Right, Be Productive and Have...
Vulnerability Discovery in the Cloud
Deployment Pipeline for databases (Azure SQL Database, SQL Server)
Ad

Similar to Feast '20 slides (20)

PDF
Using Containers to More Effectively Manage DevOps Continuous Integration
PDF
AZ-400 Exam Dumps Online – Proven by Learners Worldwide
PDF
A New Paradigm In Linux Debug From Viosoft
DOC
CV_RishabhDixit
DOC
A New Paradigm In Linux Debug From Viosoft Corporation
PDF
Converting to the latest COBOL Compiler made simple with the right tools
DOC
Foundry Management System Desktop Application
PDF
Continuous Integration for Oracle Database Development
PDF
CNCF On-Demand Webinar_ LitmusChaos Project Updates.pdf
PDF
1506.08725v1
PPTX
Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...
PDF
Building a CI/CD Pipeline for PHP apps
PPTX
Ultimate Guide to Microservice Architecture on Kubernetes
PPTX
DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...
PDF
GITLAB-CICD_For_Professionals_KodeKloud.pdf
PPTX
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
PDF
Migration Effort in the Cloud - The Case of Cloud Platforms
PDF
Workshop: Delivering chnages for applications and databases
PPTX
The Science of database CICD - UKOUG Breakthrough
PDF
Relational Database CI/CD
Using Containers to More Effectively Manage DevOps Continuous Integration
AZ-400 Exam Dumps Online – Proven by Learners Worldwide
A New Paradigm In Linux Debug From Viosoft
CV_RishabhDixit
A New Paradigm In Linux Debug From Viosoft Corporation
Converting to the latest COBOL Compiler made simple with the right tools
Foundry Management System Desktop Application
Continuous Integration for Oracle Database Development
CNCF On-Demand Webinar_ LitmusChaos Project Updates.pdf
1506.08725v1
Just-in-time Detection of Protection-Impacting Changes on WordPress and Media...
Building a CI/CD Pipeline for PHP apps
Ultimate Guide to Microservice Architecture on Kubernetes
DevOps Interview Questions Part - 1 | Devops Interview Questions And Answers ...
GITLAB-CICD_For_Professionals_KodeKloud.pdf
GCP - Continuous Integration and Delivery into Kubernetes with GitHub, Travis...
Migration Effort in the Cloud - The Case of Cloud Platforms
Workshop: Delivering chnages for applications and databases
The Science of database CICD - UKOUG Breakthrough
Relational Database CI/CD
Ad

Recently uploaded (20)

PDF
A comparative study of natural language inference in Swahili using monolingua...
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
DOCX
search engine optimization ppt fir known well about this
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PPTX
AI IN MARKETING- PRESENTED BY ANWAR KABIR 1st June 2025.pptx
PDF
The influence of sentiment analysis in enhancing early warning system model f...
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
Abstractive summarization using multilingual text-to-text transfer transforme...
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
Five Habits of High-Impact Board Members
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PPTX
Configure Apache Mutual Authentication
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PDF
1 - Historical Antecedents, Social Consideration.pdf
A comparative study of natural language inference in Swahili using monolingua...
Module 1.ppt Iot fundamentals and Architecture
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
search engine optimization ppt fir known well about this
sustainability-14-14877-v2.pddhzftheheeeee
AI IN MARKETING- PRESENTED BY ANWAR KABIR 1st June 2025.pptx
The influence of sentiment analysis in enhancing early warning system model f...
A proposed approach for plagiarism detection in Myanmar Unicode text
Developing a website for English-speaking practice to English as a foreign la...
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Taming the Chaos: How to Turn Unstructured Data into Decisions
Abstractive summarization using multilingual text-to-text transfer transforme...
Enhancing emotion recognition model for a student engagement use case through...
Five Habits of High-Impact Board Members
Final SEM Unit 1 for mit wpu at pune .pptx
Getting started with AI Agents and Multi-Agent Systems
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Configure Apache Mutual Authentication
Convolutional neural network based encoder-decoder for efficient real-time ob...
1 - Historical Antecedents, Social Consideration.pdf

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