skip to main content
10.1145/3106237.3106271acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article
Public Access

Cimplifier: automatically debloating containers

Published: 21 August 2017 Publication History

Abstract

Application containers, such as those provided by Docker, have recently gained popularity as a solution for agile and seamless software deployment. These light-weight virtualization environments run applications that are packed together with their resources and configuration information, and thus can be deployed across various software platforms. Unfortunately, the ease with which containers can be created is oftentimes a double-edged sword, encouraging the packaging of logically distinct applications, and the inclusion of significant amount of unnecessary components, within a single container. These practices needlessly increase the container size-sometimes by orders of magnitude. They also decrease the overall security, as each included component-necessary or not-may bring in security issues of its own, and there is no isolation between multiple applications packaged within the same container image. We propose algorithms and a tool called Cimplifier, which address these concerns: given a container and simple user-defined constraints, our tool partitions it into simpler containers, which (i) are isolated from each other, only communicating as necessary, and (ii) only include enough resources to perform their functionality. Our evaluation on real-world containers demonstrates that Cimplifier preserves the original functionality, leads to reduction in image size of up to 95%, and processes even large containers in under thirty seconds.

References

[1]
Selenium IDE. Tool Documentation. http://www.seleniumhq.org/docs/02_ selenium_ide.jsp.
[2]
BIGOT, J.-T. L., April 2015. http://blog.yadutaf.fr/2015/04/25/ how-i-shrunk-a-docker-image-by-98-8-featuring-fanotify/.
[3]
Bittau, A., Marchenko, P., Handley, M., and Karp, B. Wedge: Splitting applications into reduced-privilege compartments. In NSDI (2008), pp. 309–322.
[4]
Blankstein, A., and Freedman, M. J. Automating isolation and least privilege in web services. In Security and Privacy (SP), 2014 IEEE Symposium on (2014), IEEE, pp. 133–148.
[5]
Brumley, D., and Song, D. Privtrans: Automatically partitioning programs for privilege separation. In USENIX Security Symposium (2004), pp. 57–72.
[6]
Docker and btrfs in practice. Docker documentation. https://docs.docker.com/ engine/userguide/storagedriver/btrfs-driver/.
[7]
Cheung, A., Madden, S., Arden, O., and Myers, A. C. Automatic partitioning of database applications. Proceedings of the VLDB Endowment 5, 11 (2012), 1471–1482.
[8]
Chong, S., Liu, J., Myers, A. C., Qi, X., Vikram, K., Zheng, L., and Zheng, X. Building secure web applications with automatic partitioning. Communications of the ACM 52, 2 (2009), 79–87.
[9]
Clark, C., Fraser, K., Hand, S., Hansen, J. G., Jul, E., Limpach, C., Pratt, I., and Warfield, A. Live migration of virtual machines. In Proceedings of the 2nd conference on Symposium on Networked Systems Design & Implementation-Volume 2 (2005), USENIX Association, pp. 273–286.
[10]
8 surprising facts about real docker adoption. Web Article, October 2015. https: //www.datadoghq.com/docker-adoption/.
[11]
deHamer, B. Optimizing docker images. CenturyLink Developer Center Blog, July 2014. https://www.ctl.io/developers/blog/post/optimizing-docker-images/.
[12]
Docker. Website. https://www.docker.com/.
[13]
Understand images, containers, and storage drivers. Docker documentation. https: //docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/.
[14]
Docker security. Docker documentation. https://docs.docker.com/engine/ security/security/.
[15]
Douglis, F., and Ousterhout, J. Transparent process migration: Design alternatives and the sprite implementation. Software: Practice and Experience 21, 8 (1991), 757–785.
[16]
Dowideit, S. Slim application containers (using docker). Blog, April 2015. http://fosiki.com/blog/2015/04/28/slim-application-containers-using-docker/.
[17]
The elastic stack | make sense of your data. Website. https://www.elastic.co/ products.
[18]
The 2016 workshop on forming an ecosystem around software transformation (feast), October 2016. https://sites.google.com/site/ccsfeast16/.
[19]
Guo, P. J., and Engler, D. R. Cde: Using system call interposition to automatically create portable software packages. In USENIX Annual Technical Conference (2011).
[20]
Haproxy – the reliable, high performance tcp/http load balancer. Website. http: //www.haproxy.org/.
[21]
Krohn, M. N., Efstathopoulos, P., Frey, C., Kaashoek, M. F., Kohler, E., Mazieres, D., Morris, R., Osborne, M., VanDeBogart, S., and Ziegler, D. Make least privilege a right (not a privilege). In HotOS (2005).
[22]
Kumar, A., May 2015.
[23]
https://medium.com/@aneeshep/ working-with-dockers-64c8bc4b5f92#.f3i10qkyt.
[24]
Linux containers. Website. https://linuxcontainers.org/.
[25]
MediaWiki. Website. https://www.mediawiki.org/wiki/MediaWiki.
[26]
MongoDB. Website. https://www.mongodb.org/.
[27]
Myers, A. C. Jflow: practical mostly-static information flow control. In 26th ACM Symp. on Principles of Programming Languages (POPL) (January 1999), pp. 228–241.
[28]
Myers, A. C., and Liskov, B. A decentralized model for information flow control. In 16th ACM Symp. on Operating System Principles (SOSP) (October 1997), pp. 129– 142.
[29]
Nginx. Website. http://nginx.org/en/.
[30]
Oracle. https://github.com/oracle/crashcart.
[31]
Osman, S., Subhraveti, D., Su, G., and Nieh, J. The design and implementation of zap: A system for migrating computing environments. ACM SIGOPS Operating Systems Review 36, SI (2002), 361–376.
[32]
Parasoft c/c++test. https://www.parasoft.com/product/cpptest/.
[33]
Provos, N., Friedl, M., and Honeyman, P. Preventing privilege escalation. In USENIX Security (2003), vol. 3.
[34]
Quest, K. C. https://github.com/cloudimmunity/docker-slim.
[35]
Redis. Website. http://redis.io/.
[36]
Docker registry. Website. https://docs.docker.com/registry/.
[37]
Linux audit. Website. https://people.redhat.com/sgrubb/audit/.
[38]
Docker adoption doubles in a year, February 2016. http: //www.datacenterdynamics.com/content-tracks/servers-storage/ docker-adoption-doubles-in-a-year/95703.fullarticle.
[39]
Saltzer, J. H., and Schroeder, M. D. The protection of information in computer systems. Proceedings of the IEEE 63, 9 (1975), 1278–1308.
[40]
Swamp: Software assurance marketplace. https://continuousassurance.org/.
[41]
van Holsteijn, M. How to create the smallest possible docker container of any image. Xebia blog, June 2015. http://blog.xebia.com/ how-to-create-the-smallest-possible-docker-container-of-any-image/.
[42]
WordPress.org. Website. https://wordpress.org/.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ESEC/FSE 2017: Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering
August 2017
1073 pages
ISBN:9781450351058
DOI:10.1145/3106237
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 August 2017

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. containers
  2. debloating
  3. least privilege
  4. privilege separation

Qualifiers

  • Research-article

Funding Sources

Conference

ESEC/FSE'17
Sponsor:

Acceptance Rates

Overall Acceptance Rate 112 of 543 submissions, 21%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)249
  • Downloads (Last 6 weeks)34
Reflects downloads up to 27 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media