Inter-procedural buffer overflows detection in C/C++ source code via static analysis

We propose inter-procedural static analysis tool for buffer overflow detection. It is based on previously developed intra-procedural algorithm which uses symbolic execution with state merging. This algorithm is path-sensitive and supports tracking several kinds of value relations such as arithmetic...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Trudy Instituta sistemnogo programmirovaniâ Jg. 28; H. 5; S. 119 - 134
1. Verfasser: Dudina, I.
Format: Journal Article
Sprache:Englisch
Veröffentlicht: Russian Academy of Sciences, Ivannikov Institute for System Programming 01.10.2018
Schlagworte:
ISSN:2079-8156, 2220-6426
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Abstract We propose inter-procedural static analysis tool for buffer overflow detection. It is based on previously developed intra-procedural algorithm which uses symbolic execution with state merging. This algorithm is path-sensitive and supports tracking several kinds of value relations such as arithmetic operations, cast instructions, binary relations from constraints. In this paper we provide a formal definition for inter-procedural buffer overflow errors and discuss different kinds of such errors. We use function summaries for inter-procedural analysis, so it provides natural path-sensitivity in some degree. This approach allowed us to improve intra-procedural algorithm by tracking inter-procedural value dependencies. Furthermore, we introduce a technique to extract the sufficient condition of buffer overflow for a function, which is supposed to be stored in the summary of this function and checked at every call site. This approach was implemented for Svace static analyzer as the new buffer overflow detector, and it has shown 64% true-positive ratio on Android 5.0.2.
AbstractList We propose inter-procedural static analysis tool for buffer overflow detection. It is based on previously developed intra-procedural algorithm which uses symbolic execution with state merging. This algorithm is path-sensitive and supports tracking several kinds of value relations such as arithmetic operations, cast instructions, binary relations from constraints. In this paper we provide a formal definition for inter-procedural buffer overflow errors and discuss different kinds of such errors. We use function summaries for inter-procedural analysis, so it provides natural path-sensitivity in some degree. This approach allowed us to improve intra-procedural algorithm by tracking inter-procedural value dependencies. Furthermore, we introduce a technique to extract the sufficient condition of buffer overflow for a function, which is supposed to be stored in the summary of this function and checked at every call site. This approach was implemented for Svace static analyzer as the new buffer overflow detector, and it has shown 64% true-positive ratio on Android 5.0.2.
Author Dudina, I.
Author_xml – sequence: 1
  givenname: I.
  surname: Dudina
  fullname: Dudina, I.
BookMark eNo9kMlKBDEURYMoOP6BiywViWZO9VIahwZBcViHl-RFSsqKJNVK_72tLa7u5S4Ol7NPtscyIiHHgp8LY4S-WDw9PF4-McmFZbI7MafMbZE9KSVnVku7ve7czVgnjN0lR629cc6l4U5xsUeeF-OElX3UEjEtKww0LHPGSssn1jyUr0YTThinvoy0H-n8Yn52RltZ1og0loT0swfaJpj6SGGEYdX6dkh2MgwNj_7ygLxcXz3Pb9nd_c1ifnnH4vqLY3qWJWaHNuU0S8pJsCFoESWKGDKELoTo4kyissEq7pwIxkZrApcqB1DqgCw23FTgzX_U_h3qyhfo_e9Q6quHuj42oI-gDc_KgJBa65QAOKLsuNDZWW7SmqU3rFhLaxXzP09w_yvab0T7H9Fedt5479Q3iA10Dg
ContentType Journal Article
DBID AAYXX
CITATION
DOA
DOI 10.15514/ISPRAS-2016-28(5)-7
DatabaseName CrossRef
DOAJ Directory of Open Access Journals
DatabaseTitle CrossRef
DatabaseTitleList
Database_xml – sequence: 1
  dbid: DOA
  name: DOAJ: Directory of Open Access Journal (DOAJ)
  url: https://www.doaj.org/
  sourceTypes: Open Website
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 2220-6426
EndPage 134
ExternalDocumentID oai_doaj_org_article_ca450f35a12444ddaa0ee28014f7605d
10_15514_ISPRAS_2016_28_5__7
GroupedDBID 642
AAYXX
ALMA_UNASSIGNED_HOLDINGS
CITATION
GROUPED_DOAJ
OK1
ID FETCH-LOGICAL-c1567-49f2ef7e6dfd9d372a6bb41c2e1cbfab8bbc7c92e36b630771b56c65b023fba33
IEDL.DBID DOA
ISSN 2079-8156
IngestDate Mon Nov 03 22:02:03 EST 2025
Sat Nov 29 05:34:01 EST 2025
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue 5
Language English
LinkModel DirectLink
MergedId FETCHMERGED-LOGICAL-c1567-49f2ef7e6dfd9d372a6bb41c2e1cbfab8bbc7c92e36b630771b56c65b023fba33
OpenAccessLink https://doaj.org/article/ca450f35a12444ddaa0ee28014f7605d
PageCount 16
ParticipantIDs doaj_primary_oai_doaj_org_article_ca450f35a12444ddaa0ee28014f7605d
crossref_primary_10_15514_ISPRAS_2016_28_5__7
PublicationCentury 2000
PublicationDate 2018-10-01
PublicationDateYYYYMMDD 2018-10-01
PublicationDate_xml – month: 10
  year: 2018
  text: 2018-10-01
  day: 01
PublicationDecade 2010
PublicationTitle Trudy Instituta sistemnogo programmirovaniâ
PublicationYear 2018
Publisher Russian Academy of Sciences, Ivannikov Institute for System Programming
Publisher_xml – name: Russian Academy of Sciences, Ivannikov Institute for System Programming
SSID ssj0002507301
Score 2.0419688
Snippet We propose inter-procedural static analysis tool for buffer overflow detection. It is based on previously developed intra-procedural algorithm which uses...
SourceID doaj
crossref
SourceType Open Website
Index Database
StartPage 119
SubjectTerms контекстная чувствительность
межпроцедурный анализ
переполнение буфера
поиск дефектов
символьное исполнение
статический анализ
чувствительность к путям
Title Inter-procedural buffer overflows detection in C/C++ source code via static analysis
URI https://doaj.org/article/ca450f35a12444ddaa0ee28014f7605d
Volume 28
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVAON
  databaseName: DOAJ: Directory of Open Access Journal (DOAJ)
  customDbUrl:
  eissn: 2220-6426
  dateEnd: 20201231
  omitProxy: false
  ssIdentifier: ssj0002507301
  issn: 2079-8156
  databaseCode: DOA
  dateStart: 20100101
  isFulltext: true
  titleUrlDefault: https://www.doaj.org/
  providerName: Directory of Open Access Journals
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwrV1LSwMxEA4iHrz4Ft_k4EGR0N2896jFopdSbAVvIU8oyCra1r9vZncr9eTF6-4Sst9M8k3CzDcIXWbKE44JSZLUBeE6aOKECIR5LXjwZWTUNs0m1HCoX16q0UqrL8gJa-WBW-B63nJRJCYsEBEPwdoiRgqaJ0nlUDzA7luoauUwBXtwJnZwXegsl18SkETp6uYgQug9jkdPt-PsIaUkVF-Ja6J-8dKKfH_DM4MdtNUFiPi2ndguWov1HtpeNl_A3VrcR5PmLo80BBRAOwO7OfQ6wZCTmV7fvj5xiLMm0arG0xr3e_2bG9ze1WMoZMeLqcVQTzT12HbSJAfoeXA_6T-QrkUC8fmXFOFVojGpKEMKVWCKWukcLz2NpXfJOu2cV76ikUkn83JWpRPSS-EyVSdnGTtE6_VbHY8QrkLhtKBeF9FzWSSXqopHHqTmyYqojxFZAmTeWyUMAycIANS0gBoA1FBthDHqGN0Bij_fgo518yBb13TWNX9Z9-Q_BjlFm3lirYpteYbWZx_zeI42_GI2_fy4aBznG_tIxWk
linkProvider Directory of Open Access Journals
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Inter-procedural+buffer+overflows+detection+in+C%2FC%2B%2B+source+code+via+static+analysis&rft.jtitle=Trudy+Instituta+sistemnogo+programmirovani%C3%A2&rft.au=I.+.+Dudina&rft.date=2018-10-01&rft.pub=Russian+Academy+of+Sciences%2C+Ivannikov+Institute+for+System+Programming&rft.issn=2079-8156&rft.eissn=2220-6426&rft.volume=28&rft.issue=5&rft.spage=119&rft.epage=134&rft_id=info:doi/10.15514%2FISPRAS-2016-28%285%29-7&rft.externalDBID=DOA&rft.externalDocID=oai_doaj_org_article_ca450f35a12444ddaa0ee28014f7605d
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2079-8156&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2079-8156&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2079-8156&client=summon