{"id":31504,"date":"2021-02-01T16:50:51","date_gmt":"2021-02-01T21:50:51","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=31504"},"modified":"2021-07-06T17:04:05","modified_gmt":"2021-07-06T21:04:05","slug":"imessages-blastdoor-sandbox","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2021\/02\/01\/imessages-blastdoor-sandbox\/","title":{"rendered":"iMessage&rsquo;s BlastDoor Sandbox"},"content":{"rendered":"<p><a href=\"https:\/\/googleprojectzero.blogspot.com\/2021\/01\/a-look-at-imessage-in-ios-14.html\">Samuel Gro&szlig;<\/a> (via <a href=\"https:\/\/news.ycombinator.com\/item?id=25953668\">Hacker News<\/a>, <a href=\"https:\/\/www.macrumors.com\/2021\/01\/28\/messages-blastdoor-ios-14-security-system\/\">MacRumors<\/a>):<\/p>\n<blockquote cite=\"https:\/\/googleprojectzero.blogspot.com\/2021\/01\/a-look-at-imessage-in-ios-14.html\"><p>One of the major changes in iOS 14 is the introduction of a new, tightly sandboxed &ldquo;BlastDoor&rdquo; service which is now responsible for almost all parsing of untrusted data in iMessages (for example, <a href=\"https:\/\/bugs.chromium.org\/p\/project-zero\/issues\/detail?id=1858\">NSKeyedArchiver payloads<\/a>). Furthermore, this service is written in <a href=\"https:\/\/developer.apple.com\/swift\/\">Swift<\/a>, a (mostly) memory safe language which makes it significantly harder to introduce classic memory corruption vulnerabilities into the code base.<\/p><p>[&#8230;]<\/p><p>As can be seen, the majority of the processing of complex, untrusted data has been moved into the new BlastDoor service. Furthermore, this design with its 7+ involved services allows fine-grained sandboxing rules to be applied, for example, only the <\/p><p>[&#8230;]<\/p><p>To limit an attacker&rsquo;s ability to retry exploits or brute force ASLR, the BlastDoor and <code>imagent<\/code> services are now subject to a newly introduced exponential throttling mechanism enforced by <code>launchd<\/code>, causing the interval between restarts after a crash to double with every subsequent crash (up to an apparent maximum of 20 minutes). With this change, an exploit that relied on repeatedly crashing the attacked service would now likely require in the order of multiple hours to roughly half a day to complete instead of a few minutes.<\/p><\/blockquote>\n\n<p><a href=\"https:\/\/daringfireball.net\/linked\/2021\/01\/29\/blastdoor\">John Gruber<\/a> (<a href=\"https:\/\/twitter.com\/daringfireball\/status\/1355231243944611844\">tweet<\/a>):<\/p>\n<blockquote cite=\"https:\/\/daringfireball.net\/linked\/2021\/01\/29\/blastdoor\"><p>This is a big deal, and from what I understand, a major multi-year undertaking by the iMessage team. Cimpanu&rsquo;s report makes it sound like it&rsquo;s an iOS 14 feature, but it&rsquo;s on MacOS 11, too&#x2009;&mdash;&#x2009;it&rsquo;s an iMessage feature.<\/p><\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/01\/10\/project-zero-remote-iphone-exploitation\/\">Project Zero Remote iPhone Exploitation<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2019\/10\/03\/about-project-zero\/\">About Project Zero<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2019\/09\/06\/apple-responds-to-project-zero\/\">Apple Responds to Project Zero<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2019\/08\/23\/imessage-nskeyedarchiver-and-_nsdatafilebackedfuture\/\">iMessage, NSKeyedArchiver, and _NSDataFileBackedFuture<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2019\/07\/08\/malformed-imessage-could-brick-iphone\/\">Malformed iMessage Could Cause iPhone Boot Loop<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2018\/05\/10\/black-dot-unicode-bug\/\">&ldquo;Black Dot&rdquo; Unicode Bug<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2018\/01\/01\/identityservicesd-what-if-anyone-can-be-you\/\">identityservicesd: What If Anyone Can Be You?<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2016\/03\/21\/imessage-attachments-security-flaw\/\">iMessage Attachments Security Flaw<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Samuel Gro&szlig; (via Hacker News, MacRumors): One of the major changes in iOS 14 is the introduction of a new, tightly sandboxed &ldquo;BlastDoor&rdquo; service which is now responsible for almost all parsing of untrusted data in iMessages (for example, NSKeyedArchiver payloads). Furthermore, this service is written in Swift, a (mostly) memory safe language which makes [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2021-02-01T21:50:55Z","apple_news_api_id":"692e6868-f429-4e5b-8995-1c8189cdb907","apple_news_api_modified_at":"2021-07-06T21:04:10Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAA==","apple_news_api_share_url":"https:\/\/apple.news\/AaS5oaPQpTluJlRyBic25Bw","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[69,205,2095,140,31,1837,30,1891,141,53,48,901],"class_list":["post-31504","post","type-post","status-publish","format-standard","hentry","category-technology","tag-cocoa","tag-dyld","tag-exploit","tag-imessage","tag-ios","tag-ios-14","tag-mac","tag-macos-11-0","tag-messages","tag-sandboxing","tag-security","tag-swift-programming-language"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/31504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=31504"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/31504\/revisions"}],"predecessor-version":[{"id":31505,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/31504\/revisions\/31505"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=31504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=31504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=31504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}