Skip to main navigation Skip to search Skip to main content

PAriCheck: An efficient pointer arithmetic checker for C programs

  • Yves Younan
  • , Pieter Philippaerts
  • , Lorenzo Cavallaro
  • , R. Sekar
  • , Frank Piessens
  • , Wouter Joosen

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

69 Scopus citations

Abstract

Buffer overflows are still a significant problem in programs written in C and C++. In this paper we present a bounds checker, called PAriCheck, that inserts dynamic runtime checks to ensure that attackers are not able to abuse buffer overflow vulnerabilities. The main approach is based on checking pointer arithmetic rather than pointer dereferences when performing bounds checks. The checks are performed by assigning a unique label to each object and ensuring that the label is associated with each memory location that the object inhabits. Whenever pointer arithmetic occurs, the label of the base location is compared to the label of the resulting arithmetic. If the labels differ, an out-of-bounds calculation has occurred. Benchmarks show that PAriCheck has a very low performance overhead compared to similar bounds checkers. This paper demonstrates that using bounds checkers for programs or parts of programs running on high-security production systems is a realistic possibility.

Original languageEnglish
Title of host publicationProceedings of the 5th International Symposium on Information, Computer and Communications Security, ASIACCS 2010
Pages145-156
Number of pages12
DOIs
StatePublished - 2010
Event5th ACM Symposium on Information, Computer and Communication Security, ASIACCS 2010 - Beijing, China
Duration: Apr 13 2010Apr 16 2010

Publication series

NameProceedings of the 5th International Symposium on Information, Computer and Communications Security, ASIACCS 2010

Conference

Conference5th ACM Symposium on Information, Computer and Communication Security, ASIACCS 2010
Country/TerritoryChina
CityBeijing
Period04/13/1004/16/10

Keywords

  • bounds checking
  • buffer overflows

Fingerprint

Dive into the research topics of 'PAriCheck: An efficient pointer arithmetic checker for C programs'. Together they form a unique fingerprint.

Cite this