A place to cache linked articles (think custom and personal wayback machine)
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

index.html 40KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang=fr>
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset=utf-8>
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Apple Mail Stores Encrypted Emails in Plain Text Database, fix included! (archive) — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <meta name="robots" content="noindex, nofollow">
  28. <meta content="origin-when-cross-origin" name="referrer">
  29. <!-- Canonical URL for SEO purposes -->
  30. <link rel="canonical" href="https://medium.com/@boberito/apple-mail-stores-encrypted-emails-in-plain-text-database-fix-included-3c2369ce26d4">
  31. <style>
  32. /* http://meyerweb.com/eric/tools/css/reset/ */
  33. html, body, div, span,
  34. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  35. a, abbr, address, big, cite, code,
  36. del, dfn, em, img, ins,
  37. small, strike, strong, tt, var,
  38. dl, dt, dd, ol, ul, li,
  39. fieldset, form, label, legend,
  40. table, caption, tbody, tfoot, thead, tr, th, td,
  41. article, aside, canvas, details, embed,
  42. figure, figcaption, footer, header, hgroup,
  43. menu, nav, output, ruby, section, summary,
  44. time, mark, audio, video {
  45. margin: 0;
  46. padding: 0;
  47. border: 0;
  48. font-size: 100%;
  49. font: inherit;
  50. vertical-align: baseline;
  51. }
  52. /* HTML5 display-role reset for older browsers */
  53. article, aside, details, figcaption, figure,
  54. footer, header, hgroup, menu, nav, section { display: block; }
  55. body { line-height: 1; }
  56. blockquote, q { quotes: none; }
  57. blockquote:before, blockquote:after,
  58. q:before, q:after {
  59. content: '';
  60. content: none;
  61. }
  62. table {
  63. border-collapse: collapse;
  64. border-spacing: 0;
  65. }
  66. /* http://practicaltypography.com/equity.html */
  67. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  68. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  69. @font-face {
  70. font-family: 'EquityTextB';
  71. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  72. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  73. font-weight: 300;
  74. font-style: normal;
  75. font-display: swap;
  76. }
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: italic;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  89. font-weight: 700;
  90. font-style: normal;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'ConcourseT3';
  95. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  96. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  97. font-weight: 300;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  102. body {
  103. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  104. font-family: "EquityTextB", Palatino, serif;
  105. background-color: #f0f0ea;
  106. color: #07486c;
  107. font-kerning: normal;
  108. -moz-osx-font-smoothing: grayscale;
  109. -webkit-font-smoothing: subpixel-antialiased;
  110. text-rendering: optimizeLegibility;
  111. font-variant-ligatures: common-ligatures contextual;
  112. font-feature-settings: "kern", "liga", "clig", "calt";
  113. }
  114. pre, code, kbd, samp, var, tt {
  115. font-family: 'TriplicateT4c', monospace;
  116. }
  117. em {
  118. font-style: italic;
  119. color: #323a45;
  120. }
  121. strong {
  122. font-weight: bold;
  123. color: black;
  124. }
  125. nav {
  126. background-color: #323a45;
  127. color: #f0f0ea;
  128. display: flex;
  129. justify-content: space-around;
  130. padding: 1rem .5rem;
  131. }
  132. nav:last-child {
  133. border-bottom: 1vh solid #2d7474;
  134. }
  135. nav a {
  136. color: #f0f0ea;
  137. }
  138. nav abbr {
  139. border-bottom: 1px dotted white;
  140. }
  141. h1 {
  142. border-top: 1vh solid #2d7474;
  143. border-bottom: .2vh dotted #2d7474;
  144. background-color: #e3e1e1;
  145. color: #323a45;
  146. text-align: center;
  147. padding: 5rem 0 4rem 0;
  148. width: 100%;
  149. font-family: 'ConcourseT3';
  150. display: flex;
  151. flex-direction: column;
  152. }
  153. h1.single {
  154. padding-bottom: 10rem;
  155. }
  156. h1 span {
  157. position: absolute;
  158. top: 1vh;
  159. left: 20%;
  160. line-height: 0;
  161. }
  162. h1 span a {
  163. line-height: 1.7;
  164. padding: 1rem 1.2rem .6rem 1.2rem;
  165. border-radius: 0 0 6% 6%;
  166. background: #2d7474;
  167. font-size: 1.3rem;
  168. color: white;
  169. text-decoration: none;
  170. }
  171. h2 {
  172. margin: 4rem 0 1rem;
  173. border-top: .2vh solid #2d7474;
  174. padding-top: 1vh;
  175. }
  176. h3 {
  177. text-align: center;
  178. margin: 3rem 0 .75em;
  179. }
  180. hr {
  181. height: .4rem;
  182. width: .4rem;
  183. border-radius: .4rem;
  184. background: #07486c;
  185. margin: 2.5rem auto;
  186. }
  187. time {
  188. display: bloc;
  189. margin-left: 0 !important;
  190. }
  191. ul, ol {
  192. margin: 2rem;
  193. }
  194. ul {
  195. list-style-type: square;
  196. }
  197. a {
  198. text-decoration-skip-ink: auto;
  199. text-decoration-thickness: 0.05em;
  200. text-underline-offset: 0.09em;
  201. }
  202. article {
  203. max-width: 50rem;
  204. display: flex;
  205. flex-direction: column;
  206. margin: 2rem auto;
  207. }
  208. article.single {
  209. border-top: .2vh dotted #2d7474;
  210. margin: -6rem auto 1rem auto;
  211. background: #f0f0ea;
  212. padding: 2rem;
  213. }
  214. article p:last-child {
  215. margin-bottom: 1rem;
  216. }
  217. p {
  218. padding: 0 .5rem;
  219. margin-left: 3rem;
  220. }
  221. p + p,
  222. figure + p {
  223. margin-top: 2rem;
  224. }
  225. blockquote {
  226. background-color: #e3e1e1;
  227. border-left: .5vw solid #2d7474;
  228. display: flex;
  229. flex-direction: column;
  230. align-items: center;
  231. padding: 1rem;
  232. margin: 1.5rem;
  233. }
  234. blockquote cite {
  235. font-style: italic;
  236. }
  237. blockquote p {
  238. margin-left: 0;
  239. }
  240. figure {
  241. border-top: .2vh solid #2d7474;
  242. background-color: #e3e1e1;
  243. text-align: center;
  244. padding: 1.5rem 0;
  245. margin: 1rem 0 0;
  246. font-size: 1.5rem;
  247. width: 100%;
  248. }
  249. figure img {
  250. max-width: 250px;
  251. max-height: 250px;
  252. border: .5vw solid #323a45;
  253. padding: 1px;
  254. }
  255. figcaption {
  256. padding: 1rem;
  257. line-height: 1.4;
  258. }
  259. aside {
  260. display: flex;
  261. flex-direction: column;
  262. background-color: #e3e1e1;
  263. padding: 1rem 0;
  264. border-bottom: .2vh solid #07486c;
  265. }
  266. aside p {
  267. max-width: 50rem;
  268. margin: 0 auto;
  269. }
  270. /* https://fvsch.com/code/css-locks/ */
  271. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  272. font-size: 1rem;
  273. line-height: calc( 1.5em + 0.2 * 1rem );
  274. }
  275. h1 {
  276. font-size: 1.9rem;
  277. line-height: calc( 1.2em + 0.2 * 1rem );
  278. }
  279. h2 {
  280. font-size: 1.6rem;
  281. line-height: calc( 1.3em + 0.2 * 1rem );
  282. }
  283. h3 {
  284. font-size: 1.35rem;
  285. line-height: calc( 1.4em + 0.2 * 1rem );
  286. }
  287. @media (min-width: 20em) {
  288. /* The (100vw - 20rem) / (50 - 20) part
  289. resolves to 0-1rem, depending on the
  290. viewport width (between 20em and 50em). */
  291. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  292. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  293. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  294. margin-left: 0;
  295. }
  296. h1 {
  297. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  298. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  299. }
  300. h2 {
  301. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  302. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  303. }
  304. h3 {
  305. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. }
  309. @media (min-width: 50em) {
  310. /* The right part of the addition *must* be a
  311. rem value. In this example we *could* change
  312. the whole declaration to font-size:2.5rem,
  313. but if our baseline value was not expressed
  314. in rem we would have to use calc. */
  315. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  316. font-size: calc( 1rem + .6 * 1rem );
  317. line-height: 1.5em;
  318. }
  319. p, li, pre, details {
  320. margin-left: 3rem;
  321. }
  322. h1 {
  323. font-size: calc( 1.9rem + 1.5 * 1rem );
  324. line-height: 1.2em;
  325. }
  326. h2 {
  327. font-size: calc( 1.5rem + 1.5 * 1rem );
  328. line-height: 1.3em;
  329. }
  330. h3 {
  331. font-size: calc( 1.35rem + 1.5 * 1rem );
  332. line-height: 1.4em;
  333. }
  334. figure img {
  335. max-width: 500px;
  336. max-height: 500px;
  337. }
  338. }
  339. figure.unsquared {
  340. margin-bottom: 1.5rem;
  341. }
  342. figure.unsquared img {
  343. height: inherit;
  344. }
  345. @media print {
  346. body { font-size: 100%; }
  347. a:after { content: " (" attr(href) ")"; }
  348. a, a:link, a:visited, a:after {
  349. text-decoration: underline;
  350. text-shadow: none !important;
  351. background-image: none !important;
  352. background: white;
  353. color: black;
  354. }
  355. abbr[title] { border-bottom: 0; }
  356. abbr[title]:after { content: " (" attr(title) ")"; }
  357. img { page-break-inside: avoid; }
  358. @page { margin: 2cm .5cm; }
  359. h1, h2, h3 { page-break-after: avoid; }
  360. p3 { orphans: 3; widows: 3; }
  361. img {
  362. max-width: 250px !important;
  363. max-height: 250px !important;
  364. }
  365. nav, aside { display: none; }
  366. }
  367. ul.with_columns {
  368. column-count: 1;
  369. }
  370. @media (min-width: 20em) {
  371. ul.with_columns {
  372. column-count: 2;
  373. }
  374. }
  375. @media (min-width: 50em) {
  376. ul.with_columns {
  377. column-count: 3;
  378. }
  379. }
  380. ul.with_two_columns {
  381. column-count: 1;
  382. }
  383. @media (min-width: 20em) {
  384. ul.with_two_columns {
  385. column-count: 1;
  386. }
  387. }
  388. @media (min-width: 50em) {
  389. ul.with_two_columns {
  390. column-count: 2;
  391. }
  392. }
  393. .gallery {
  394. display: flex;
  395. flex-wrap: wrap;
  396. justify-content: space-around;
  397. }
  398. .gallery figure img {
  399. margin-left: 1rem;
  400. margin-right: 1rem;
  401. }
  402. .gallery figure figcaption {
  403. font-family: 'ConcourseT3'
  404. }
  405. footer {
  406. font-family: 'ConcourseT3';
  407. display: flex;
  408. flex-direction: column;
  409. border-top: 3px solid white;
  410. padding: 4rem 0;
  411. background-color: #07486c;
  412. color: white;
  413. }
  414. footer > * {
  415. max-width: 50rem;
  416. margin: 0 auto;
  417. }
  418. footer a {
  419. color: #f1c40f;
  420. }
  421. footer .avatar {
  422. width: 200px;
  423. height: 200px;
  424. border-radius: 50%;
  425. float: left;
  426. -webkit-shape-outside: circle();
  427. shape-outside: circle();
  428. margin-right: 2rem;
  429. padding: 2px 5px 5px 2px;
  430. background: white;
  431. border-left: 1px solid #f1c40f;
  432. border-top: 1px solid #f1c40f;
  433. border-right: 5px solid #f1c40f;
  434. border-bottom: 5px solid #f1c40f;
  435. }
  436. </style>
  437. <h1>
  438. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  439. Apple Mail Stores Encrypted Emails in Plain Text Database, fix included! (archive)
  440. <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
  441. </h1>
  442. <section>
  443. <article>
  444. <h3><a href="https://medium.com/@boberito/apple-mail-stores-encrypted-emails-in-plain-text-database-fix-included-3c2369ce26d4">Source originale du contenu</a></h3>
  445. <div class="ac ae af ag ah do aj ak"><figure class="dq dr ds dt du dv da db paragraph-image"/><div><p id="866b" class="ej ek ar bz el b em en eo ep eq er es"><h1 class="el b em et ar">Apple Mail Stores Encrypted Emails in Plain Text Database, fix included!</h1></p></div><p id="83b8" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">I was investigating how macOS and Siri suggest contacts and information to you, the user. This led me to the process called <em class="gi">suggestd,</em> run by the system level LaunchAgent <em class="gi">com.apple.suggestd,</em> and the Suggestions folder in the user-level Library folder, which contains multiple files and some potentially important database files (.db files). These are databases with information from Apple Mail and other Apple applications that enable macOS and Siri to become better at suggesting information.</p><p id="e0eb" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">The main thing I discovered was that the <em class="gi">snippets.db</em> database file in the Suggestions folder stored my emails. And on top of that, I found that it stored my S/MIME encrypted emails completely <strong class="fw gj">UNENCRYPTED</strong>. Even with Siri disabled on the Mac, it <strong class="fw gj">*still*</strong> stores unencrypted messages in this database!</p><p id="1305" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh"><strong class="fw gj">**This is definitely not the expected behavior and can be considered an inadvertent information exposure.**</strong></p><p id="4026" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">Let me say that again… The <em class="gi">snippets.db</em> database is storing encrypted Apple Mail messages…completely, totally, fully — <strong class="fw gj">UNENCRYPTED — </strong>readable, even with Siri disabled, without requiring the private key. Most would assume that disabling Siri would stop macOS from collecting information on the user. This is a big deal. This is a big deal for governments, corporations and regular people who use encrypted email and expect the contents to be protected. Secret or top-secret information, which was sent encrypted, would be exposed via this process and database, as would trade secrets and proprietary data.</p><p id="6cf1" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">Some may not know what S/SMIME encrypted email is. So, what is it? S/MIME uses a pair of keys to operate — a public key and a private key. Emails are encrypted with the recipient’s public key. The email can only be decrypted with the corresponding private key, which is supposed to be in sole possession of the recipient. If the private key is unavailable or removed, the message should not be readable, by anything. Unless the private key is compromised, you can be confident that only your intended recipient will be able to access the sensitive data in your email.</p><p id="e557" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">Unfortunately, <em class="gi">snippets.db </em>stores these encrypted messages completely <strong class="fw gj">UNENCRYPTED</strong>, not requiring the private key to read the message. This completely defeats the purpose of utilizing and sending an encrypted email.</p><p id="e71e" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">Another database, <em class="gi">entities.db</em>, stores records of people’s names, email, and phone numbers you’ve corresponded with. Although the phone number may not be in your contact list, data from emails such as signature blocks and forward information are stored. It’s like an address book built for you. This could be touchy, as it may allow quick and easy access to some potentially sensitive information.</p><p id="c869" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">Although it has been suggested that you must disable Siri from learning from Apple Mail, even if Siri is disabled, I would argue that it still is the incorrect default behavior. Fortunately, I have discovered a way to mitigate the issue.</p><p id="b4fc" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">There are 3 ways to disable these processes from learning from Apple Mail.</p><ol class=""><li id="6b01" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh gk gl gm">You can manually click the settings, but this does not scale well across an enterprise fleet of Macs.</li></ol><figure class="go gp gq gr gs dv da db paragraph-image"/><blockquote class="gx"><div id="5181" class="gy gz ha bz el b hb hc hd he hf hg gh"><p class="el b hh hi cd">System Preferences → Siri →Siri Suggestions &amp; Privacy →Uncheck the boxes for Apple Mail.</p></div></blockquote><p id="aa35" class="fu fv ar bz fw b fx hj fz hk gb hl gd hm gf hn gh">2. As the user, not with elevated privileges, you can run this command in Terminal to turn off Siri from learning from Apple Mail.</p><blockquote class="ho hp hq"><p id="2cad" class="fu fv ar gi fw b fx fy fz ga gb gc gd ge gf gg gh"><strong class="fw gj">defaults write com.apple.suggestions SiriCanLearnFromAppBlacklist -array com.apple.mail</strong></p></blockquote><p id="5cb5" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">3. You can deploy a System-Level (for all users) configuration profile to turn off Siri from learning from Apple Mail.</p><p id="555d" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh"><a href="https://github.com/boberito/ConfigurationProfiles/blob/master/suggestd.mobileconfig" class="bi cv hr hs ht hu" target="_blank" rel="noopener nofollow">https://github.com/boberito/ConfigurationProfiles/blob/master/suggestd.mobileconfig</a></p><pre class="go gp gq gr gs hv hw hx"><span id="568c" class="hy hz ar bz ia b fc ib ic r id">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br/>&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "<a href="http://www.apple.com/DTDs/PropertyList-1.0.dtd" class="bi cv hr hs ht hu" target="_blank" rel="noopener nofollow">http://www.apple.com/DTDs/PropertyList-1.0.dtd</a>"&gt;<br/>&lt;plist version="1.0"&gt;<br/>&lt;dict&gt;<br/> &lt;key&gt;PayloadContent&lt;/key&gt;<br/> &lt;array&gt;<br/> &lt;dict&gt;<br/> &lt;key&gt;PayloadContent&lt;/key&gt;<br/> &lt;dict&gt;<br/> &lt;key&gt;com.apple.suggestions&lt;/key&gt;<br/> &lt;dict&gt;<br/> &lt;key&gt;Forced&lt;/key&gt;<br/> &lt;array&gt;<br/> &lt;dict&gt;<br/> &lt;key&gt;mcx_preference_settings&lt;/key&gt;<br/> &lt;dict&gt;<br/> &lt;key&gt;SiriCanLearnFromAppBlacklist&lt;/key&gt;<br/> &lt;array&gt;<br/> &lt;string&gt;com.apple.mail&lt;/string&gt;<br/> &lt;/array&gt;<br/> &lt;/dict&gt;<br/> &lt;/dict&gt;<br/> &lt;/array&gt;<br/> &lt;/dict&gt;<br/> &lt;/dict&gt;<br/> &lt;key&gt;PayloadEnabled&lt;/key&gt;<br/> &lt;true/&gt;<br/> &lt;key&gt;PayloadIdentifier&lt;/key&gt;<br/> &lt;string&gt;MCXToProfile.85654d27-2ffe-4ee5-8ae3-ac63864d6bf3.alacarte.customsettings.73a7cb5a-550b-473d-a191-b8ec261302bd&lt;/string&gt;<br/> &lt;key&gt;PayloadType&lt;/key&gt;<br/> &lt;string&gt;com.apple.ManagedClient.preferences&lt;/string&gt;<br/> &lt;key&gt;PayloadUUID&lt;/key&gt;<br/> &lt;string&gt;73a7cb5a-550b-473d-a191-b8ec261302bd&lt;/string&gt;<br/> &lt;key&gt;PayloadVersion&lt;/key&gt;<br/> &lt;integer&gt;1&lt;/integer&gt;<br/> &lt;/dict&gt;<br/> &lt;/array&gt;<br/> &lt;key&gt;PayloadDescription&lt;/key&gt;<br/> &lt;string&gt;Disable Apple Mail Siri Suggestions&lt;/string&gt;<br/> &lt;key&gt;PayloadDisplayName&lt;/key&gt;<br/> &lt;string&gt;Disable Siri Suggestions&lt;/string&gt;<br/> &lt;key&gt;PayloadIdentifier&lt;/key&gt;<br/> &lt;string&gt;suggestd&lt;/string&gt;<br/> &lt;key&gt;PayloadOrganization&lt;/key&gt;<br/> &lt;string&gt;&lt;/string&gt;<br/> &lt;key&gt;PayloadRemovalDisallowed&lt;/key&gt;<br/> &lt;true/&gt;<br/> &lt;key&gt;PayloadScope&lt;/key&gt;<br/> &lt;string&gt;System&lt;/string&gt;<br/> &lt;key&gt;PayloadType&lt;/key&gt;<br/> &lt;string&gt;Configuration&lt;/string&gt;<br/> &lt;key&gt;PayloadUUID&lt;/key&gt;<br/> &lt;string&gt;85654d27-2ffe-4ee5-8ae3-ac63864d6bf3&lt;/string&gt;<br/> &lt;key&gt;PayloadVersion&lt;/key&gt;<br/> &lt;integer&gt;1&lt;/integer&gt;<br/>&lt;/dict&gt;<br/>&lt;/plist&gt;</span></pre><p id="bee5" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">The third option is the only way to permanently disable macOS and Siri from collecting this Apple Mail information for all users. Whichever way you disable it, you may want to delete the <em class="gi">snippets.db</em> file as well since disabling doesn’t remove previously saved emails. It just stops future ones from populating the database. This needs to be deployed to prevent <em class="gi">suggestd </em>from processing your emails even if Siri is disabled. The interface in the Siri System Preference panel may show it’s checked, but if you uncheck it you can’t re-check it. So, the user interface may not always report properly that it’s enabled or disabled.</p><p id="e281" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">You can run the following in Terminal to see what the setting’s value is.</p><blockquote class="ho hp hq"><p id="e2aa" class="fu fv ar gi fw b fx fy fz ga gb gc gd ge gf gg gh"><strong class="fw gj">defaults read com.apple.suggestions SiriCanLearnFromAppBlacklist</strong></p></blockquote><p id="9a0f" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">But even without this setting disabled, there are protections in place, most, not all, of your email messages go into this database. The user-level Library Suggestions folder is supposed to be protected by SIP (sandbox definition file found in <em class="gi">/System/Library/Sandbox/Profiles/com.apple.suggestd.sb</em>) and things like Bash, Zsh or Python are not intended to have access. It’s also marked with an extended attribute to prevent backups(<em class="gi">com_apple_backup_excludeItem</em>). Also, if you have FileVault enabled, then you have potentially another layer of protection if someone got their hands on your powered-off Mac.</p><p id="6d76" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">However, be careful, because anything you grant Full Disk Access to with a Privacy Preferences Policy Control now has access to that directory. For example, when you turn on Remote Login(<em class="gi">sshd</em>) or File Sharing(<em class="gi">smbd</em>) you grant <em class="gi">sshd</em> and <em class="gi">smbd</em> Full Disk Access.</p><p id="049b" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">Additionally, Finder always has access, so with an AppleScript one could potentially get their hands on these files. Especially, since you’re presented with so many things asking for permission in macOS Catalina, the dialog fatigue is real. Though, if a vulnerability was discovered and taken advantage of in <em class="gi">suggestd</em>, that could be a way to access these emails through <em class="gi">suggestd</em>’s entitlement or honestly anything that’s been granted Full Disk Access. If System Integrity Protection (SIP) is disabled (please don’t disable SIP), then the directory is definitely not protected.</p><p id="ff47" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">This sums up the positives, so there are protections in place and even a way to stop it, but it’s still an incorrect behavior because even with Siri enabled or disabled it should not be storing encrypted messages completely unencrypted.</p><p id="40e2" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">The process that controls all of this is called <em class="gi">suggestd</em>. If you’re curious about <em class="gi">suggestd</em>, you can check it out in Activity Viewer. Then, with deeper inspection of the process under the Open Files and Ports tab, it shows what databases are being used by <em class="gi">suggestd</em>. If you want to watch <em class="gi">suggestd</em> do its thing live, you can run the following in Terminal.</p><blockquote class="ho hp hq"><p id="d3b8" class="fu fv ar gi fw b fx fy fz ga gb gc gd ge gf gg gh"><strong class="fw gj">log stream --predicate ‘(subsystem ==”com.apple.suggestions”)’ --level info</strong></p></blockquote><p id="bd2a" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">You can even start another instance of <em class="gi">suggestd</em>.</p><blockquote class="ho hp hq"><p id="ee0f" class="fu fv ar gi fw b fx fy fz ga gb gc gd ge gf gg gh"><strong class="fw gj">/System/Library/PrivateFrameworks/CoreSuggestions.framework/Versions/A/Support/suggestd</strong></p></blockquote><p id="3ebd" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">I discovered this database and what’s stored there on July 25th and began extensively testing on multiple computers with Apple Mail set up and fully confirming this on July 29th. Later that week, I confirmed this database exists on 10.12 machines up to 10.15 and behaves the same way, storing encrypted messages unencrypted. If you have iCloud enabled and Siri enabled, I know there is some data sent to Apple to help with improving Siri, but I don’t know if that includes information from this database. S/MIME is supported in iOS with Apple Mail, but I haven’t dug into it. I’d imagine it behaves the same but due to the app sandboxing and the security model of iOS, it’d take a lot more to get your hands on that database but maybe not impossible chaining vulnerabilities together. The focus on this has been macOS related.</p></div>
  446. <section class="dj dk dl dm dn"><div class="n p"><div class="ac ae af ag ah do aj ak"><h2 id="dacb" class="hy hz ar bz by io ip iq ir is it iu iv iw ix iy iz">Timeline</h2><p id="b541" class="fu fv ar bz fw b fx ja fz jb gb jc gd jd gf je gh">July 29 —</p><ul class=""><li id="19ca" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">Reported to product-security@apple.com that this exists in 10.14 and beta of 10.15.</li><li id="36f4" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh jf gl gm">Submitted a ticket to Apple enterprise support.</li><li id="360d" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh jf gl gm">Submitted a bug report ticket through Feedback application using an Apple Business Manager account.</li><li id="9f08" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh jf gl gm">Contacted professional points of contact within Apple.</li><li id="aaa2" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh jf gl gm">Received a response from Apple enterprise support.</li><li id="a603" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh jf gl gm">Received response from professional contacts within Apple.</li></ul><p id="cbbb" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">July 30 —</p><ul class=""><li id="f030" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">Reported and updated with all points of contact and tickets that this exists in 10.13.6.</li><li id="c3ce" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh jf gl gm">Received a response from enterprise support that this has been submitted to engineering.</li></ul><p id="5dae" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">July 31 —</p><ul class=""><li id="0de9" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">Reported and updated all points of contact and tickets that this exists in 10.12.6.</li><li id="0838" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh jf gl gm">Received response from enterprise support thanking me for testing but no update to report yet.</li></ul><p id="34a8" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">August 1 —</p><ul class=""><li id="b905" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">Received a response from product security that they are investigating the issue.</li></ul><p id="861d" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">September 4 —</p><ul class=""><li id="df8a" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">I sent an update to product security that the problem still exists in Catalina betas.</li></ul><p id="f633" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">September 9 —</p><ul class=""><li id="f963" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">Received a response from product security that they are still investigating the issue.</li></ul><p id="2915" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">October 9 —</p><ul class=""><li id="4d97" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">Sent an update to product security that the public final release of Catalina still has the issue and that the Supplemental Updates to Mojave did not address it.</li></ul><p id="5421" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">October 18 —</p><ul class=""><li id="dfb0" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">Contacted personal contacts within Apple about the issue.</li></ul><p id="636b" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">October 31 —</p><ul class=""><li id="4b00" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">Created a new product security ticket for the issue with Apple.</li><li id="b18a" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh jf gl gm">Followed up with Enterprise Support on the severity of the issue again.</li><li id="fea6" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh jf gl gm">Emailed Tim Cook.</li></ul><p id="590a" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">November 5 —</p><ul class=""><li id="414b" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh jf gl gm">Received information from Enterprise Support on disabling learning from Apple Mail through System Preferences →Siri.</li></ul></div></div></section>
  447. <p><hr class="ie fb if ig ih ii ij ik il im in"/><section class="dj dk dl dm dn"><div class="n p"><div class="ac ae af ag ah do aj ak"><p id="4983" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">It’s been 100 days since I’ve alerted Apple, we’ve seen a security update to macOS Sierra 10.12, security updates to macOS High Sierra 10.13, Supplemental Updates to macOS Mojave 10.14, a security update to macOS Mojave 10.14, macOS Catalina 10.15.0 released, Supplemental Update to 10.15.0, and 10.15.1 release.</p><p id="e9b3" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">For a company that prides itself on security and privacy, the lack of attention to detail on an issue like this completely and totally surprises me. It brings up the question of what else is tracked and potentially improperly stored without you realizing it. For an operating system that you generally have to change controls to make it less secure, this is a setting that requires you to set to make it more secure and behave correctly. I also have to wonder why it took 99 days for someone to know the answer on how to prevent this. All parties at Apple were alerted multiple times before writing this blog and giving an ample amount of time before I published this. The two real main issues here are...</p><ol class=""><li id="2ebc" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh gk gl gm">Disabling Siri doesn’t stop macOS from collecting data for Siri.</li><li id="e407" class="fu fv ar bz fw b fx jg fz jh gb ji gd jj gf jk gh gk gl gm">That with Siri enabled or disabled this process is storing encrypted emails in a database completely unencrypted.</li></ol><p id="064f" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">If these issues are a concern for you and your organization, consider creating an enterprise support ticket, filing feedback, or contact your representative at Apple and let them know.</p><p id="856f" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">These views are my own and not the views of my employer. If you have any questions or want more information on this, feel free to contact me on the MacAdmins Slack(boberito), Linkedin(<a href="https://www.linkedin.com/in/bob-gendler-8702014" class="bi cv hr hs ht hu" target="_blank" rel="noopener nofollow">linkedin.com/in/bob-gendler-8702014</a>) or email(<a href="mailto: bobgendler@gmail.com" class="bi cv hr hs ht hu" target="_blank" rel="noopener nofollow">bobgendler@gmail.com</a>).</p><p id="65a7" class="fu fv ar bz fw b fx fy fz ga gb gc gd ge gf gg gh">Below are some screenshots showing an encrypted message being displayed <strong class="fw gj">UNENCRYPTED </strong>with DB Browser for SQLite without requiring the private key. Apologies for all the blocked-out areas but I had to hide identifying information.</p></div></div><div class="dv"><div class="n p"><div class="jl jm jn jo jp jq ag jr ah js aj ak"><figure class="go gp gq gr gs dv ju jv paragraph-image"><div class="gt gu ec gv ak"><div class="da db jt"><div class="eb r ec ed"><div class="jw r"><div class="dw dx de t u dy ak ax dz ea"><img class="de t u dy ak ef eg eh" src="https://miro.medium.com/max/60/1*H2RlI9G-zplTUzAcEcQQ7Q.jpeg?q=20" width="2880" height="1800" role="presentation"/></div><img class="dw dx de t u dy ak ei" width="2880" height="1800" role="presentation"/><noscript><img class="de t u dy ak" src="https://miro.medium.com/max/5760/1*H2RlI9G-zplTUzAcEcQQ7Q.jpeg" width="2880" height="1800" role="presentation"/></noscript></div></div></div></div><figcaption class="cd fc jx jy ii dc da db jz ka by fb">macOS Catalina 10.15.0 — Private key removed. Message unreadable in Apple Mail. Message readable in the database.</figcaption></figure><figure class="kc dv ju jv paragraph-image"><div class="gt gu ec gv ak"><div class="da db kb"><div class="eb r ec ed"><div class="kd r"><div class="dw dx de t u dy ak ax dz ea"><img class="de t u dy ak ef eg eh" src="https://miro.medium.com/max/60/1*zmrB-xJUzwc2iNDKUrqLrg.jpeg?q=20" width="2560" height="1440" role="presentation"/></div><img class="dw dx de t u dy ak ei" width="2560" height="1440" role="presentation"/><noscript><img class="de t u dy ak" src="https://miro.medium.com/max/5120/1*zmrB-xJUzwc2iNDKUrqLrg.jpeg" width="2560" height="1440" role="presentation"/></noscript></div></div></div></div><figcaption class="cd fc jx jy ii dc da db jz ka by fb">macOS Mojave 10.14.6 — Private key is available. Message in Apple Mail. Message readable in the database.</figcaption></figure><figure class="kc dv ju jv paragraph-image"><div class="gt gu ec gv ak"><div class="da db jt"><div class="eb r ec ed"><div class="jw r"><div class="dw dx de t u dy ak ax dz ea"><img class="de t u dy ak ef eg eh" src="https://miro.medium.com/max/60/1*HLBtssNe4Vnz6wzRywz6Pw.jpeg?q=20" width="2880" height="1800" role="presentation"/></div><img class="dw dx de t u dy ak ei" width="2880" height="1800" role="presentation"/><noscript><img class="de t u dy ak" src="https://miro.medium.com/max/5760/1*HLBtssNe4Vnz6wzRywz6Pw.jpeg" width="2880" height="1800" role="presentation"/></noscript></div></div></div></div><figcaption class="cd fc jx jy ii dc da db jz ka by fb">macOS High Sierra 10.13.6 — Private key removed. Message unreadable in Apple Mail. Message readable in the database.</figcaption></figure><figure class="kc dv ju jv paragraph-image"><div class="gt gu ec gv ak"><div class="da db jt"><div class="eb r ec ed"><div class="jw r"><div class="dw dx de t u dy ak ax dz ea"><img class="de t u dy ak ef eg eh" src="https://miro.medium.com/max/60/1*SVNfpjpAPsicWPWR20n6DA.jpeg?q=20" width="2880" height="1800" role="presentation"/></div><img class="dw dx de t u dy ak ei" width="2880" height="1800" role="presentation"/><noscript><img class="de t u dy ak" src="https://miro.medium.com/max/5760/1*SVNfpjpAPsicWPWR20n6DA.jpeg" width="2880" height="1800" role="presentation"/></noscript></div></div></div></div><figcaption class="cd fc jx jy ii dc da db jz ka by fb">macOS Sierra 10.12.6-Private key is available. Message in Apple Mail. Message readable in the database.</figcaption></figure></div></div></div></section></p>
  448. </article>
  449. </section>
  450. <nav id="jumpto">
  451. <p>
  452. <a href="/david/blog/">Accueil du blog</a> |
  453. <a href="https://medium.com/@boberito/apple-mail-stores-encrypted-emails-in-plain-text-database-fix-included-3c2369ce26d4">Source originale</a> |
  454. <a href="/david/stream/2019/">Accueil du flux</a>
  455. </p>
  456. </nav>
  457. <footer>
  458. <div>
  459. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  460. <p>
  461. Bonjour/Hi!
  462. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  463. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  464. </p>
  465. <p>
  466. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  467. </p>
  468. <p>
  469. Voici quelques articles choisis :
  470. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  471. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  472. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  473. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  474. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  475. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  476. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  477. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  478. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  479. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  480. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  481. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  482. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  483. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  484. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  485. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  486. </p>
  487. <p>
  488. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  489. </p>
  490. <p>
  491. Je ne traque pas ta navigation mais mon
  492. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  493. conserve des logs d’accès.
  494. </p>
  495. </div>
  496. </footer>
  497. <script type="text/javascript">
  498. ;(_ => {
  499. const jumper = document.getElementById('jumper')
  500. jumper.addEventListener('click', e => {
  501. e.preventDefault()
  502. const anchor = e.target.getAttribute('href')
  503. const targetEl = document.getElementById(anchor.substring(1))
  504. targetEl.scrollIntoView({behavior: 'smooth'})
  505. })
  506. })()
  507. </script>