Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3368089.3409719acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

Intelligent REST API data fuzzing

Published: 08 November 2020 Publication History

Abstract

The cloud runs on REST APIs. In this paper, we study how to intelligently generate data payloads embedded in REST API requests in order to find data-processing bugs in cloud services. We discuss how to leverage REST API specifications, which, by definition, contain data schemas for API request bodies. We then propose and evaluate a range of data fuzzing techniques, including structural schema fuzzing rules, various rule combinations, search heuristics, extracting data values from examples included in REST API specifications, and learning data values on-the-fly from previous service responses. After evaluating these techniques, we identify the top-performing combination and use this algorithm to fuzz several Microsoft Azure cloud services. During our experiments, we found 100s of “Internal Server Error” service crashes, which we triaged into 17 unique bugs and reported to Azure developers. All these bugs are reproducible, confirmed, and fixed or in the process of being fixed.

Supplementary Material

Auxiliary Teaser Video (fse20main-p387-p-teaser.mp4)
The cloud runs on REST APIs. In this paper, we study how to intelligently generate data payloads embedded in REST API requests in order to find data-processing bugs in cloud services. We discuss how to leverage REST API specifications, which, by definition, contain data schemas for API request bodies. We then propose and evaluate a range of data fuzzing techniques, including structural schema fuzzing rules, various rule combinations, search heuristics, extracting data values from examples included in REST API specifications, and learning data values on-the-fly from previous service responses. After evaluating these techniques, we identify the top-performing combination and use this algorithm to fuzz several Microsoft Azure cloud services. During our experiments, we found 100s of “Internal Server Error” service crashes, which we triaged into 17 unique bugs and reported to Azure developers. All these bugs are reproducible, confirmed, and fixed or in the process of being fixed.
Auxiliary Presentation Video (fse20main-p387-p-video.mp4)
The cloud runs on REST APIs. In this paper, we study how to intelligently generate data payloads embedded in REST API requests in order to find data-processing bugs in cloud services. We discuss how to leverage REST API specifications, which, by definition, contain data schemas for API request bodies. We then propose and evaluate a range of data fuzzing techniques, including structural schema fuzzing rules, various rule combinations, search heuristics, extracting data values from examples included in REST API specifications, and learning data values on-the-fly from previous service responses. After evaluating these techniques, we identify the top-performing combination and use this algorithm to fuzz several Microsoft Azure cloud services. During our experiments, we found 100s of “Internal Server Error” service crashes, which we triaged into 17 unique bugs and reported to Azure developers. All these bugs are reproducible, confirmed, and fixed or in the process of being fixed.

References

[1]
[n. d.]. Apigee Docs. https://docs.apigee.com/ Last accessed 2019-11-22.
[2]
[n. d.]. Postman | API Development Environment. https://www.getpostman.com/ Last accessed 2019-11-22.
[3]
[n. d.]. SoapUI. https://www.soapui.org/ Last accessed 2019-11-22.
[4]
[n. d.]. vREST-Automated REST API Testing Tool. https://vrest.io/ Last accessed 2019-11-22.
[5]
2019. APIFortress. http://apifortress.com Last accessed 2019-11-22.
[6]
2019. HttpMaster. http://www.httpmaster. net Last accessed 2019-11-22.
[7]
2019. Mass Assignment Cheat Sheet. https://github.com/OWASP/ CheatSheetSeries/blob/master/cheatsheets/Mass_Assignment_Cheat_Sheet. md Last accessed 2019-11-22.
[8]
2019. Microsoft Azure DNS Service Documentation. https://docs.microsoft.com/ en-us/azure/dns/ Last accessed 2019-11-22.
[9]
2019. OWASP API Security. https://www.owasp.org/index.php/OWASP_API_Security_Project Last accessed 2019-11-22.
[10]
S. Allamaraju. 2010. RESTful Web Services Cookbook. O'Reilly.
[11]
Amazon. 2019. Amazon Web Services (AWS)-Cloud Computing Services. https: //aws.amazon.com/ Last accessed 2019-11-22.
[12]
APIFuzzer [n. d.]. APIFuzzer. https://github.com/KissPeter/APIFuzzer.
[13]
AppSpider [n. d.]. AppSpider. https://www.rapid7.com/products/appspider.
[14]
Andrea Arcuri. 2019. RESTful API Automated Test Case Generation with EvoMaster. ACM Transactions on Software Engineering and Methodology 28, 1 ( 2019 ).
[15]
V. Atlidakis, P. Godefroid, and M. Polishchuk. 2019. RESTler: Stateful REST API Fuzzing. In Proceedings of the 41st International Conference on Software Engineering (ICSE '19). IEEE Press, Piscataway, NJ, USA, 748-758. https://doi.org/10.1109/ ICSE. 2019.00083
[16]
Boofuzz [n. d.]. BooFuzz. https://github.com/jtpereyda/boofuzz.
[17]
Burp [n. d.]. Burp Suite. https://portswigger.net/burp.
[18]
Roy T. Fielding. 2000. Architectural styles and the design of network-based software architectures. Vol. 7. University of California, Irvine Doctoral dissertation.
[19]
J. E. Forrester and B. P. Miller. 2000. An Empirical Study of the Robustness of Windows NT Applications Using Random Testing. In Proceedings of the 4th USENIX Windows System Symposium. Seattle.
[20]
fuzz-lightyear [n. d.]. Fuzz-Lightyear. https://github.com/Yelp/fuzz-lightyear.
[21]
Fuzzy-Swagger [n. d.]. Fuzzy-Swagger. https://github.com/namuan/fuzzyswagger.
[22]
T. Gallagher, B. Jefries, and L. Landauer. 2006. Hunting Security Bugs. Microsoft Press.
[23]
P. Godefroid, M.Y. Levin, and D. Molnar. 2008. Automated Whitebox Fuzz Testing. In Proceedings of NDSS' 2008 (Network and Distributed Systems Security). San Diego, 151-166.
[24]
H. Liu, S. Lu, M. Musuvathi, and S. Nath. 2019. What Bugs Cause Production Cloud Incidents?. In Proceedings of HotOS' 2019.
[25]
Microsoft. 2019. Azure REST API Specifications. https://github.com/Azure/azurerest-api-specs Last accessed 2019-11-22.
[26]
Microsoft. 2019. Microsoft Azure Cloud Computing Platform & Services. https: //azure.microsoft.com/en-us/ Last accessed 2019-11-22.
[27]
S. Newman. 2015. Building Microservices. O'Reilly.
[28]
Peach 2019. Peach Fuzzer. http://www.peachfuzzer.com/. Last accessed 2019-11-22.
[29]
QualysWAS [n. d.]. Qualys Web Application Scanning (WAS). https://www. qualys.com/apps/web-app-scanning/.
[30]
REST-assured 2019. REST Assured. http://rest-assured.io/. Last accessed 2019-11-22.
[31]
Sergio Segura, José A. Parejo, Javier Troya, and Antonio Ruiz-Cortés. 2018. Metamorphic Testing of RESTful Web APIs. ACM Transactions on Software Engineering 44, 11 ( 2018 ).
[32]
SPIKE 2019. SPIKE Fuzzer. http://resources.infosecinstitute. com/fuzzerautomation-with-spike/. Last accessed 2019-11-22.
[33]
Sulley [n. d.]. Sulley. https://github.com/OpenRCE/sulley.
[34]
M. Sutton, A. Greene, and P. Amini. 2007. Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley.
[35]
Swagger [n. d.]. Swagger. https://swagger.io/.
[36]
Swagger-Fuzzer [n. d.]. Swagger-Fuzzer. https://github.com/Lothiraldan/ swagger-fuzzer.
[37]
TnT-Fuzzer [n. d.]. TnT-Fuzzer. https://github.com/Teebytes/TnT-Fuzzer.
[38]
M. Zalewski. 2015. AFL (American Fuzzy Lop). http://lcamtuf.coredump.cx/afl/.

Cited By

View all
  • (2024)DynER: Optimized Test Case Generation for Representational State Transfer (REST)ful Application Programming Interface (API) Fuzzers Guided by Dynamic Error ResponsesElectronics10.3390/electronics1317347613:17(3476)Online publication date: 1-Sep-2024
  • (2024)ReCG: Bottom-up JSON Schema Discovery Using a Repetitive Cluster-and-Generalize FrameworkProceedings of the VLDB Endowment10.14778/3681954.368201917:11(3538-3550)Online publication date: 30-Aug-2024
  • (2024)Beyond REST: Introducing APIF for Comprehensive API Vulnerability FuzzingProceedings of the 27th International Symposium on Research in Attacks, Intrusions and Defenses10.1145/3678890.3678928(435-449)Online publication date: 30-Sep-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ESEC/FSE 2020: Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
November 2020
1703 pages
ISBN:9781450370431
DOI:10.1145/3368089
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 the author(s) 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: 08 November 2020

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. API data-payload testing
  2. JSON data fuzzing
  3. REST APIs
  4. cloud security and reliability

Qualifiers

  • Research-article

Conference

ESEC/FSE '20
Sponsor:

Acceptance Rates

Overall Acceptance Rate 112 of 543 submissions, 21%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)185
  • Downloads (Last 6 weeks)7
Reflects downloads up to 26 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2024)DynER: Optimized Test Case Generation for Representational State Transfer (REST)ful Application Programming Interface (API) Fuzzers Guided by Dynamic Error ResponsesElectronics10.3390/electronics1317347613:17(3476)Online publication date: 1-Sep-2024
  • (2024)ReCG: Bottom-up JSON Schema Discovery Using a Repetitive Cluster-and-Generalize FrameworkProceedings of the VLDB Endowment10.14778/3681954.368201917:11(3538-3550)Online publication date: 30-Aug-2024
  • (2024)Beyond REST: Introducing APIF for Comprehensive API Vulnerability FuzzingProceedings of the 27th International Symposium on Research in Attacks, Intrusions and Defenses10.1145/3678890.3678928(435-449)Online publication date: 30-Sep-2024
  • (2024)Mining REST APIs for Potential Mass Assignment VulnerabilitiesProceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661204(369-374)Online publication date: 18-Jun-2024
  • (2024)Towards More Complete Constraints for Deep Learning Library Testing via Complementary Set Guided RefinementProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680364(1338-1350)Online publication date: 11-Sep-2024
  • (2024)Fences: Systematic Sample Generation for JSON Schemas using Boolean Algebra and Flow GraphsProceedings of the 5th ACM/IEEE International Conference on Automation of Software Test (AST 2024)10.1145/3644032.3644451(66-75)Online publication date: 15-Apr-2024
  • (2024)Greybox Fuzzing for Concurrency TestingProceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3620665.3640389(482-498)Online publication date: 27-Apr-2024
  • (2024)EDEFuzz: A Web API Fuzzer for Excessive Data ExposuresProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3608133(1-12)Online publication date: 20-May-2024
  • (2024)Exploring behaviours of RESTful APIs in an industrial settingSoftware Quality Journal10.1007/s11219-024-09686-032:3(1287-1324)Online publication date: 1-Sep-2024
  • (2024)Exploiting Metadata for Intelligent and Secure JSON REST API ServicesProceedings of World Conference on Information Systems for Business Management10.1007/978-981-99-8346-9_12(135-149)Online publication date: 1-Mar-2024
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media