Skip to main content
QUICK REVIEW

[論文レビュー] Debloating Software through Piece-Wise Compilation and Loading

Anh Quach, Aravind Prakash|arXiv (Cornell University)|Feb 2, 2018
Security and Verification in Computing被引用数 30
ひとこと要約

本論文は、ソフトウェアコンponentsのパーツワイズコンパイルおよびロードを可能にするコンパイラベースのデブローティングフレームワークを提示する。ベンチマークプログラムではコードブロードを最大86%まで削減し、coreutilsでは86%以上削減した。機能的欠損なしに、脆弱なコードや再利用可能なガジェットコードをすべて削除する。ロード時のオーバーヘッドは最小限であり、Firefox や curl といった実世界のアプリケーションにおいて、セキュリティとパフォーマンスの両面で顕著な利点を示した。

ABSTRACT

Programs are bloated. Our study shows that only 5% of libc is used on average across the Ubuntu Desktop environment (2016 programs); the heaviest user, vlc media player, only needed 18%. In this paper: (1) We present a debloating framework built on a compiler toolchain that can successfully debloat programs (shared/static libraries and executables). Our solution can successfully compile and load most libraries on Ubuntu Desktop 16.04. (2) We demonstrate the elimination of over 79% of code from coreutils and 86% of code from SPEC CPU 2006 benchmark programs without affecting functionality. We show that even complex programs such as Firefox and curl can be debloated without a need to recompile. (3) We demonstrate the security impact of debloating by eliminating over 71% of reusable code gadgets from the coreutils suite and show that unused code that contains real-world vulnerabilities can also be successfully eliminated without adverse effects on the program. (4) We incur a low load time overhead.

研究の動機と目的

  • 実際の利用状況ではライブラリ内のコードのわずか数パーセントしか使用されていないという、ソフトウェアブロードの広範な問題に対処すること。
  • 不要なコードを削除できるように、選択的コンパイルとランタイムロードを可能にするコンパイラツールチェーンの設計および実装。
  • 実世界のアプリケーションおよびシステムライブラリの機能的正しさ、パフォーマンスオーバーヘッド、セキュリティへの影響を評価すること。
  • Firefox や curl のような複雑なプログラムに対し、再コンパイルなしにデブローティングを適用できることを実証し、機能を保持すること。
  • 実世界の脆弱性を含む不要なコードを削除することで、攻撃表面積をどの程度削減できるかを定量化すること。

提案手法

  • 変更済みのコンパイラツールチェーンを活用し、ライブラリおよび実行可能ファイルから必要なコードセグメントを分析・抽出する。
  • パーツワイズコンパイルおよびロードを実装し、実行時に必要な関数およびデータのみをロード可能にする。
  • Ubuntu Desktop 16.04環境における多様なプログラムにおいて、使用済みおよび未使用のコードパスを特定するために静的および動的解析を実施する。
  • バイナリインストルメンテーションおよびランタイムロードメカニズムを適用し、必要に応じて必要なコードセグメントのみをオンデマンドでロードする。
  • 従来のビルドシステムおよびランタイム環境と統合することで、後方互換性を確保し、最小限の混乱をもたらす。
  • coreutils、SPEC CPU 2006ベンチマーク、Firefox や curl といった本番環境アプリケーションを対象に、広範なテストを通じて機能を検証する。

実験結果

リサーチクエスチョン

  • RQ1実世界のプログラムから不要なコードを安全に削除できる範囲はどの程度か?
  • RQ2パーツワイズコンパイルおよびロードは、多様なソフトウェアワークロードにおいてコードサイズをどの程度削減できるか?
  • RQ3ランタイムロードメカニズムによって引き起こされるパフォーマンスオーバーヘッドはどの程度か?
  • RQ4デブローティングは、再利用可能なコードガジェットおよび既知の脆弱性の数をどの程度削減できるか?
  • RQ5Firefox や curl のような複雑な、事前にコンパイル済みバイナリに対しても、再コンパイルなしにデブローティングを適用できるか?

主な発見

  • 2016年版Ubuntu Desktopプログラムの2016個のプログラムにおいて、libcの平均使用率は5%であり、vlcメディアプレlayerでは最大18%に達した。
  • 本フレームワークは、coreutilsを79%以上、SPEC CPU 2006ベンチマークを86%以上デブローティングし、機能的欠損なしに成功した。
  • coreutilsスイートでは、再利用可能なコードガジェットの71%以上が削除され、潜在的な攻撃表面積が削減された。
  • 実世界の脆弱性を含む不要なコードが正常に削除され、プログラム動作に悪影響を及ぼさなかった。
  • ランタイムロードオーバーヘッドは低く抑えられ、本番環境への実用的導入可能性を示した。
  • Firefox や curl のような複雑な、事前にコンパイル済みバイナリに対しても、再コンパイルなしにデブローティングが可能となった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。