{"id":96015,"date":"2017-04-21T07:00:00","date_gmt":"2017-04-21T21:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/?p=96015"},"modified":"2019-03-13T01:10:28","modified_gmt":"2019-03-13T08:10:28","slug":"20170421-00","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20170421-00\/?p=96015","title":{"rendered":"Application crash reported as security vulnerability, but you never crossed the airtight hatchway"},"content":{"rendered":"<p>A security vulnerability report came in that said roughly this: <\/p>\n<blockquote CLASS=\"m\">\n<p>There is a use-after-free vulnerability in the XYZ component which can be triggered as follows: <\/p>\n<ul>\n<li>Run the XYZ application.<\/li>\n<li>From the X menu, select Y.<\/li>\n<li>In the resulting dialog, check Z, clear the checkbox on W,     and twiddle your nose.<\/li>\n<li>When you click OK, the application crashes because it     is using a pointer to freed memory.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Thanks for finding a bug in the XYZ application, but is it a security vulnerability? <\/p>\n<p>We look at the usual questions: Who is the attacker? Who is the victim? What privileges have been gained? <\/p>\n<p>There is no remote aspect to this attack. In order to launch this attack, the user needs to run the XYZ application and manually go through a series of steps. It&#8217;s not like a bad guy can send a specially-crafted file and lure a victim to encounter this crash. A bad guy would have to send instructions to a victim and socially-engineer them into following them, and even then, the bad guy doesn&#8217;t gain anything yet. The bad guy would also have to socially-engineer the user into doing whatever steps are necessary in order to drop a special vtable into the freed memory. If you are a bad guy who has this much power over a victim that you can get them to type anything you want, then you don&#8217;t need the XYZ application at all. You can tell the victim, &#8220;Download this executable and run it.&#8221; <\/p>\n<p>Okay, so maybe the attacker isn&#8217;t remote? Maybe the attacker is malware that is already running at medium integrity, and it&#8217;s going to try to use this attack to gain additional privileges from an instance of the XYZ application that is running elevated.&sup1; But that doesn&#8217;t work because User Interface Privilege Isolation will not let a medium-integrity process manipulate the UI of a high-integrity process. In order for this to work, the malware would have to socially-engineer the user into setting up the vtable on the heap, at which point you may as well just socially-engineer the user into running your malware with administrative privileges. <\/p>\n<p>As far as we can tell, it looks like what you have there is a simple bug. This bug was introduced in a Windows Insider build; it never reached general availability. And the bug was already identified by the team and fixed in the next Windows Insider build. <\/p>\n<p>The finder submitted a lengthy document explaining the alleged attack and attempting to identify the root cause. It seems that this is their bread and butter, because their document appeared to follow a template. The chapter after the bug was identified and root-caused was titled &#8220;Security implications&#8221;. <\/p>\n<p>That chapter was blank. <\/p>\n<p>&sup1; The finder never mentioned such a scenario, but we try to give the finder the benefit of the doubt. For example, if you <a HREF=\"https:\/\/devblogs.microsoft.com\/oldnewthing\/\">misspell a file name<\/a>, we will assume that you simply had a typo in your report, and we will fix the typo for you. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>A crash is not a priori a security vulnerability.<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[26],"class_list":["post-96015","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-other"],"acf":[],"blog_post_summary":"<p>A crash is not a priori a security vulnerability.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/96015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=96015"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/96015\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=96015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=96015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=96015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}