Giter VIP home page Giter VIP logo

shamedgh / c2c Goto Github PK

View Code? Open in Web Editor NEW
8.0 1.0 0.0 256.59 MB

This is the repository for the code and artifacts related to the CCS2022 paper: C2C: Fine-grained Configuration-driven System Call Filtering

License: MIT License

Dockerfile 0.01% CMake 0.01% Shell 0.41% C 10.18% C++ 2.05% HTML 0.14% CSS 6.61% Makefile 0.12% PLpgSQL 0.14% VBScript 0.01% Perl 0.03% Awk 0.01% JavaScript 11.47% TeX 0.01% Smarty 0.01% PHP 67.37% SCSS 0.52% Hack 0.91% VCL 0.01% Motoko 0.02%

c2c's Introduction

C2C

How to regenerate paper results:

This repository comes with the LLVM pass for C2C along with python scripts (mainly used from previous work) to generate the system call filters for each application. We used Ubuntu 18.04 with Linux kernel v4.15.0-161-generic (x86_64) to run C2C, running on a different system might give slightly different filtered system calls. You can either compile LLVM and the pass on your own system and run the scripts, or use the provided Dockerfile to build a Docker image and run everything in that container. We explain the latter in this readme.

Then run the following steps:

sudo docker build -t c2c-image .

In the repository we have provided two special folders. output.complete which contains all the generated output from running our analysis which was used to create the tables in the paper. We have also provided output.cache which caches the intermediate outputs so the analysis can be completed with less resources. The cache contains the generated callgraph for each application after applying the previous work (which we compare with) library specialization (baseline) and temporal system call specialization (temporal) and the Augmented Control Flow Graph (ACFG) for C2C. By using this cache you do not need to actually run the pointer analysis part of C2C which needs much more resources and time.

To use the cache you can use the following command to run C2C:

sudo docker run -v [path-to-cache]/outputs:/mnt/c2c -it c2c-image /bin/bash

example:

sudo docker run -v /home/user/output.cache/outputs:/mnt/c2c -it c2c-image /bin/bash

By mounting the folder into the container you can go through the results after you exit the container.

Inside the container you can ./run.sh for C2C to generate the results for all applications. After the operation is completed the results for each application will be created in their respective folder in the provided path above (inside the container: /mnt/c2c/[appname].

The main files which contain the results shown in the paper are in the following:

Table 1:

head -8 c2c-static.stats
cat c2c-final.stats (third column represents disabled edges)

Table 2:

cat syscallreduction.stats  (shows the number of syscalls required across lib-spec, temporal and C2C)
cat syscall.diffs (shows the name of extra syscalls filtered compared to temporal and lib-spec)

Source Code

The bitcode for all applications have been provided in the bitcodes folder and the source code for the LLVM pass and the python scripts are available in the src folder.

Academic Publication

Please use the following citation for C2C.

@inproceedings{c2c,
  title={{C2C}: Fine-grained Configuration-driven System Call Filtering},
  author={Ghavamnia, Seyedhamed and Palit, Tapti and Polychronakis, Michalis},
  year={2022},
  booktitle={Proceedings of the 29th ACM Conference on Computer and Communications Security (CCS)},
}

c2c's People

Contributors

shamedgh avatar

Stargazers

Bubbble avatar Haixin Nan avatar Rakshith R avatar  avatar Yinnan Yao avatar  avatar Weijie Liu avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.