{"id":705790,"date":"2020-11-16T11:20:51","date_gmt":"2020-11-16T19:20:51","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?p=705790"},"modified":"2020-11-16T11:25:29","modified_gmt":"2020-11-16T19:25:29","slug":"restler-finds-security-and-reliability-bugs-through-automated-fuzzing","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/research\/blog\/restler-finds-security-and-reliability-bugs-through-automated-fuzzing\/","title":{"rendered":"RESTler finds security and reliability bugs through automated fuzzing"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_gif-1.gif\" alt=\"\"\/><\/figure>\n\n\n\n<p>Cloud services have become the new critical infrastructure, and cloud expectations have transformed how developers work. The number of cloud services that are business-critical continues to grow every day, with no end in sight. And the era of boxed software is over: developers are now responsible for continuously shipping new capabilities in live services while also maintaining their security and availability.<\/p>\n\n\n\n<p>Today, most cloud and web services are programmatically accessed through REST (<strong>RE<\/strong>presentational <strong>S<\/strong>tate <strong>T<\/strong>ransfer) APIs. However, the tools for static analysis and fuzz testing that are commonplace in native development aren\u2019t adequate or sufficient for developers of web services. Now more than ever, these developers need automated approaches to discover issues that may compromise services through their APIs, either intentionally by attackers or accidentally through unusual usage patterns. To meet this need, Microsoft researchers have developed and open-sourced new tools to help developers find security and reliability issues in their cloud services by automatically testing their REST APIs.<\/p>\n\n\n\n<h2 id=\"introducing-restler\">Introducing RESTler<\/h2>\n\n\n\n<p>Over the past few years, researchers at Microsoft have been exploring novel techniques for automatically testing and finding security and reliability bugs in cloud\/web services through their REST APIs\u2014including several recently published papers on <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/restler-stateful-rest-api-fuzzing\/\">stateful fuzzing<\/a> and <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/differential-regression-testing-for-rest-apis\/\">differential regression testing<\/a> for REST APIs, and the applications of such techniques to find <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/checking-security-properties-of-cloud-services-rest-apis\/\">security vulnerabilities<\/a> and <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/intelligent-rest-api-data-fuzzing\/\">data-processing bugs<\/a>.<\/p>\n\n\n\n<p>Researchers and engineers within the company have used these techniques to strengthen the security and reliability of many Microsoft and open-source services. This continued innovation and progress has led to more robust services everywhere.<\/p>\n\n\n\n<p>Built on this research and now available to developers and the open-source community, RESTler is the first stateful REST API fuzzing tool for automatically testing and finding security and reliability bugs in cloud\/web services through their REST APIs. Given an OpenAPI\/Swagger specification of a cloud\/web service REST API, RESTler <em>automatically generates and executes tests<\/em> that exercise the service through its REST API\u2014no prerecorded REST API traffic or preexisting tests are needed. RESTler <em>intelligently infers dependencies<\/em> among request types from the API specification, and, during testing, it checks for specific classes of bugs and dynamically learns from prior service responses. This intelligence allows RESTler to explore deeper service states reachable only through specific request sequences and to find more bugs.<\/p>\n\n\n\n<p>In addition to RESTler, Microsoft Research has created a self-hosted REST API fuzzing service, a platform where developers can integrate continuous testing into their builds. It can host a developer-definable set of REST API fuzzing tools, with default support for RESTler and OWASP&#8217;s (Open Web Application Security Project) ZAP. Any Docker packaged tool built on Linux can easily be integrated into the platform. New tool integration can be accomplished with a single configuration file.<\/p>\n\n\n\n<p>This lightweight platform brings a developer-first approach to incorporating REST API fuzzing into the service development workflow. It enables developers to kick off a single job, deploying any mix of tools, to regularly test their services. Using the supplied python CLI or their preferred REST client, developers can easily run jobs and get actionable notifications. After fixing identified bugs, developers can re-run requests that identified initial bugs to confirm the validity of their fix.<\/p>\n\n\n\n<p>Today, we are open-sourcing the RESTler tool and the self-hosted REST API Fuzz Testing platform. We hope that cloud service developers, including the open-source community, will take advantage of these new tools to make their services more reliable and secure.\u00a0<\/p>\n\n\n\n<p>For more details, see <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/microsoft\/restler-fuzzer\">https:\/\/github.com\/microsoft\/restler-fuzzer<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> and <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/microsoft\/rest-api-fuzz-testing\">https:\/\/github.com\/microsoft\/rest-api-fuzz-testing<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>.<\/p>\n\n\n\n\n\t<div class=\"border-bottom border-top border-gray-300 mt-5 mb-5 msr-promo text-center text-md-left alignwide\" data-bi-aN=\"promo\" data-bi-id=\"1144028\">\n\t\t\n\n\t\t<p class=\"msr-promo__label text-gray-800 text-center text-uppercase\">\n\t\t<span class=\"px-4 bg-white display-inline-block font-weight-semibold small\">PODCAST SERIES<\/span>\n\t<\/p>\n\t\n\t<div class=\"row pt-3 pb-4 align-items-center\">\n\t\t\t\t\t\t<div class=\"msr-promo__media col-12 col-md-5\">\n\t\t\t\t<a class=\"bg-gray-300 display-block\" href=\"https:\/\/www.microsoft.com\/en-us\/research\/story\/the-ai-revolution-in-medicine-revisited\/\" aria-label=\"The AI Revolution in Medicine, Revisited\" data-bi-cN=\"The AI Revolution in Medicine, Revisited\" target=\"_blank\">\n\t\t\t\t\t<img decoding=\"async\" class=\"w-100 display-block\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2025\/06\/Episode7-PeterBillSebastien-AIRevolution_Hero_Feature_River_No_Text_1400x788.jpg\" alt=\"Illustrated headshot of Bill Gates, Peter Lee, and S\u00e9bastien Bubeck\" \/>\n\t\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<div class=\"msr-promo__content p-3 px-5 col-12 col-md\">\n\n\t\t\t\t\t\t\t\t\t<h2 class=\"h4\">The AI Revolution in Medicine, Revisited<\/h2>\n\t\t\t\t\n\t\t\t\t\t\t\t\t<p id=\"the-ai-revolution-in-medicine-revisited\" class=\"large\">Join Microsoft\u2019s Peter Lee on a journey to discover how AI is impacting healthcare and what it means for the future of medicine.<\/p>\n\t\t\t\t\n\t\t\t\t\t\t\t\t<div class=\"wp-block-buttons justify-content-center justify-content-md-start\">\n\t\t\t\t\t<div class=\"wp-block-button\">\n\t\t\t\t\t\t<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/story\/the-ai-revolution-in-medicine-revisited\/\" aria-describedby=\"the-ai-revolution-in-medicine-revisited\" class=\"btn btn-brand glyph-append glyph-append-chevron-right\" data-bi-cN=\"The AI Revolution in Medicine, Revisited\" target=\"_blank\">\n\t\t\t\t\t\t\tListen now\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div><!--\/.msr-promo__content-->\n\t<\/div><!--\/.msr-promo__inner-wrap-->\n\t<\/div><!--\/.msr-promo-->\n\t\n\n\n\n<h3 id=\"acknowledgements\"><em>Acknowledgements<\/em><\/h3>\n\n\n\n<p>RESTler and the REST API Fuzzing platform are the joint work of Microsoft researchers, engineers, and interns. We thank all contributors, including Vaggelis Atlidakis, Jamie Davis, Richard Files, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/pg\/\">Patrice Godefroid<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/mgreisen\/\">Marc Greisen<\/a>, Bo-Yuan Huang, Daniel Lehmann, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/marinapo\/\">Marina Polishchuk<\/a>, Dave Tamasi, and <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/statis\/\">Stas Tishkin<\/a>. We also thank Microsoft Research managers <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/tball\/\">Tom Ball<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/donaldk\/\">Donald Kossmann<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/petelee\/\">Peter Lee<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/madanm\/\">Madan Musuvathi<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/walkerm\/\">Mike Walker<\/a>, <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/normw\/\">Norm Whitaker<\/a>, and <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/people\/chwh\/\">Chris White<\/a> for their support. Finally, we thank our collaborators in product groups across Microsoft: our early adopters, including Anton Evseev, Tom Gallagher, Mikhail Triakhov, and Natalia Varava, for their valuable feedback, Microsoft service developers for confirming and fixing the bugs we reported, and Azure leaders Albert Greenberg, Mark Russinovich, John Walton, and Craig Wittenberg for encouraging us to pursue this line of research.<\/p>\n\n\n\n<p><strong>Explore More<\/strong><strong>:<\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/restler-stateful-rest-api-fuzzing\/\" target=\"_blank\" rel=\"noreferrer noopener\">RESTler: Stateful REST API Fuzzing<\/a>\u00a0(ICSE 2019)\u00a0<\/li><li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/checking-security-properties-of-cloud-services-rest-apis\/\" target=\"_blank\" rel=\"noreferrer noopener\">Checking Security Properties of Cloud Service REST APIs<\/a>\u00a0(ICST 2020)\u00a0<\/li><li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/differential-regression-testing-for-rest-apis\/\" target=\"_blank\" rel=\"noreferrer noopener\">Differential Regression Testing for REST APIs<\/a>\u00a0(ISSTA 2020)\u00a0<\/li><li><a href=\"https:\/\/www.microsoft.com\/en-us\/research\/publication\/intelligent-rest-api-data-fuzzing\/\" target=\"_blank\" rel=\"noreferrer noopener\">Intelligent REST API Data Fuzzing<\/a>\u00a0(FSE 2020)\u00a0<\/li><\/ul>\n\n\n\n<p><em><em>This work was developed under the\u00a0<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/group\/new-security-ventures\/\">New Security Ventures<\/a>\u00a0group, whose mission it is to empower defenders with next-generation security technologies, and the\u00a0<a href=\"https:\/\/www.microsoft.com\/en-us\/research\/group\/research-software-engineering-rise\/\">Research in Software Engineering<\/a>\u00a0(RiSE) group.<\/em><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cloud services have become the new critical infrastructure, and cloud expectations have transformed how developers work. The number of cloud services that are business-critical continues to grow every day, with no end in sight. And the era of boxed software is over: developers are now responsible for continuously shipping new capabilities in live services while [&hellip;]<\/p>\n","protected":false},"author":38838,"featured_media":706021,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr-author-ordering":[],"msr_hide_image_in_river":0,"footnotes":""},"categories":[1],"tags":[],"research-area":[13558],"msr-region":[],"msr-event-type":[],"msr-locale":[268875],"msr-post-option":[243984],"msr-impact-theme":[],"msr-promo-type":[],"msr-podcast-series":[],"class_list":["post-705790","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-research-blog","msr-research-area-security-privacy-cryptography","msr-locale-en_us","msr-post-option-blog-homepage-featured"],"msr_event_details":{"start":"","end":"","location":""},"podcast_url":"","podcast_episode":"","msr_research_lab":[],"msr_impact_theme":[],"related-publications":[],"related-downloads":[],"related-videos":[],"related-academic-programs":[],"related-groups":[144812,682881],"related-projects":[],"related-events":[],"related-researchers":[],"msr_type":"Post","featured_image_thumbnail":"<img width=\"960\" height=\"540\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-960x540.jpg\" class=\"img-object-cover\" alt=\"Diagram explaining RESTler API fuzzing tool\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-960x540.jpg 960w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-300x169.jpg 300w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-1024x576.jpg 1024w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-768x432.jpg 768w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-1536x864.jpg 1536w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-2048x1152.jpg 2048w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-16x9.jpg 16w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-1066x600.jpg 1066w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-655x368.jpg 655w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-343x193.jpg 343w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-640x360.jpg 640w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-1280x720.jpg 1280w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2020\/11\/1400x788_Restler_still_with_logo-1920x1080.jpg 1920w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/>","byline":"","formattedDate":"November 16, 2020","formattedExcerpt":"Cloud services have become the new critical infrastructure, and cloud expectations have transformed how developers work. The number of cloud services that are business-critical continues to grow every day, with no end in sight. And the era of boxed software is over: developers are now&hellip;","locale":{"slug":"en_us","name":"English","native":"","english":"English"},"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/posts\/705790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/users\/38838"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/comments?post=705790"}],"version-history":[{"count":19,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/posts\/705790\/revisions"}],"predecessor-version":[{"id":706027,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/posts\/705790\/revisions\/706027"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media\/706021"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=705790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/categories?post=705790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/tags?post=705790"},{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=705790"},{"taxonomy":"msr-region","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-region?post=705790"},{"taxonomy":"msr-event-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-event-type?post=705790"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=705790"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=705790"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=705790"},{"taxonomy":"msr-promo-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-promo-type?post=705790"},{"taxonomy":"msr-podcast-series","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-podcast-series?post=705790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}