A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.md 13KB

2 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. title: ongoing by Tim Bray · OSQI
  2. url: https://www.tbray.org/ongoing/When/202x/2024/04/01/OSQI
  3. hash_url: 8ffe1e30cd3dd6446468bd6d03550457
  4. archive_date: 2024-04-04
  5. og_image: https://www.tbray.org/ongoing/misc/podcast-default.jpg
  6. description:
  7. favicon: https://www.tbray.org/favicon.ico
  8. language: en_US
  9. <p itemprop="description">I propose the formation of one or more “Open Source Quality Institutes”. An OSQI is a public-sector organization that
  10. employs software engineers. Its mission would be to improve the quality, and especially safety, of popular
  11. Open-Source software.</p>
  12. <p id="p-5" class="p1"><span class="h2">Why?</span> ·
  13. The
  14. <a href="https://en.wikipedia.org/wiki/XZ_utils_backdoor">XZ-Utils backdoor</a> (let’s just say <b>#XZ</b>) launched the train
  15. of thought that led me
  16. to this idea. If you read the story, it becomes obvious that the key vulnerability wasn’t technical, it was the fact that a
  17. whole lot of Open-Source software is on the undermaintained-to-neglected axis, because there’s no business case for paying people
  18. to take care of it. Which is a problem, because there is a <em>strong</em> business case for paying people to attack it.</p>
  19. <p>There are other essential human activities that lack a business case, for example tertiary education,
  20. potable water quality, and financial regulation. For these, we create non-capitalist constructs such as Universities and
  21. Institutes and Agencies, because society needs these things done even if nobody can make money doing them.</p>
  22. <p>I think we need to be paying more attention to the quality generally, and safety especially, of the Open-Source software
  23. that has become the underlying platform for, more or less, our civilization. Thus OSQI.</p>
  24. <p id="p-6" class="p1"><span class="h2">They’re out to get us</span> ·
  25. For me, the two big lessons from <b>#XZ</b> were first, the lack of resources supporting crucial Open-Source infrastructure,
  26. but then and especially, the
  27. demonstration that the attackers are numerous, skilled <em>and patient</em>. We already knew about numerous and skilled but this
  28. episode, where
  29. the attacker was already well-embedded in the project
  30. <a href="https://www.mail-archive.com/xz-devel@tukaani.org/msg00562.html">by May 2022</a>, opened a few eyes, including
  31. mine.</p>
  32. <p>The advantage, to various flavors of malefactor, of subverting core pieces of Open-Source infrastructure, is
  33. incalculable. <b>#XZ</b> was the one we caught; how many have we missed?</p>
  34. <p id="p-7" class="p1"><span class="h2">What’s OSQI?</span> ·
  35. It’s an organization created by a national government. Obviously, more nations than one could have an OSQI.</p>
  36. <p>The vast majority of the staff would be relatively-senior
  37. software
  38. engineers, with a small percentage of paranoid nontechnical security people
  39. (see
  40. <a href="OSQI#p-21">below</a>). You could do a lot with as few as 250 people, and
  41. the burdened cost would be trivial for a substantial government.</p>
  42. <p>Since it is a matter of obvious fact that every company in the
  43. world with revenue of a billion or more is existentially dependent on Open Source, it would be reasonable to impose a levy of,
  44. say, 0.1% of revenue on all such companies, to help support this work. The money needn’t be a problem.</p>
  45. <p id="p-8" class="p1"><span class="h2">Structure</span> ·
  46. The selection of software packages that would get OSQI attention would be left to the organization, although there would be
  47. avenues for anyone to request coverage. The engineering organization could be relatively flat, most people giving individual
  48. attention to individual projects, then also ad-hoc teams forming for tool-building or crisis-handling when something like
  49. <b>#XZ</b> blows up.</p>
  50. <p id="p-10" class="p1"><span class="h2">Why would anyone work there?</span> ·
  51. The pay would be OK; less than you’d make at Google or Facebook, but a decent civil-service salary. There would be no
  52. suspicion that your employer is trying to enshittify anything; in fact, you’d start work in the morning confident that you’re
  53. trying to improve the world. The default work mode would be remote, so you could live somewhere a not-quite-Google salary would
  54. support a very comfortable way of life. There would be decent vacations and benefits and
  55. (<em>*gasp*</em>) a pension.</p>
  56. <p>And there is a certain class of person who would find everyday joy in peeking and poking and polishing
  57. Open-Source packages that are depended on by millions of programmers and (indirectly) billions of humans. A couple of decades
  58. ago I would have been one.</p>
  59. <p>I don’t think recruiting would be a problem.</p>
  60. <p>So, what are OSQI’s goals and non-goals?</p>
  61. <p id="p-11" class="p1"><span class="h2">Goal: Safety</span> ·
  62. This has to come first. If all OSQI accomplishes is the foiling of a few <b>#XZ</b>-flavor attacks, and life becoming harder
  63. for people making them, that’s just fine.</p>
  64. <p id="p-12" class="p1"><span class="h2">Goal: Tool-building</span> ·
  65. I think it’s now conventional wisdom that Open Source’s biggest attack surfaces are dependency networks and build
  66. tools. These are big and complex problems, but let’s be bold and set a high bar:</p>
  67. <blockquote><p>Open-Source software should be built deterministically, verifiably, and reproducibly, from signed source-code
  68. snapshots. These snapshots should be free of generated artifacts; every item in
  69. the snapshot should be human-written and human-readable.</p>
  70. </blockquote>
  71. <p>For example: As
  72. <a href="https://mastodon.social/@kornel">Kornel</a> said,
  73. <a href="https://mastodon.social/@kornel/112187783363254917">Seriously, in retrospect, #autotools itself is a massive
  74. supply-chain security risk.</a> No kidding! But then everyone says “What are you gonna do, it’s wired into everything.”</p>
  75. <p>There are alternatives; I know of
  76. <a href="https://cmake.org">CMake</a> and
  77. <a href="https://mesonbuild.com">Meson</a>. Are they good enough? I don’t know. Obviously, GNU AutoHell can’t be swept out of
  78. all of the fœtid crannies where it lurks and festers, but every project from which it is scrubbed will present less
  79. danger to the world.
  80. I believe OSQI would have the scope to make real progress on this front.</p>
  81. <p id="p-13" class="p1"><span class="h2">Non-goal: Features</span> ·
  82. OSQI should never invest engineering resources in adding cool features to Open-Source packages (with the possible exception
  83. of build-and-test tools). The Open-Source community is bursting with new-features energy, most coming from people who either
  84. want to scratch their own itch or are facing a real blockage at work. They are way better positioned to make those improvements
  85. than anyone at OSQI.</p>
  86. <p id="p-23" class="p1"><span class="h2">Goal: Maintenance</span> ·
  87. Way too many deep-infra packages grow increasingly unmaintained as people age and become busy and tired and sick and dead. As I
  88. was writing this, a
  89. <a href="https://github.com/libexpat/libexpat/blob/R_2_6_2/expat/Changes">plea for help</a> came across my radar from Sebastian
  90. Pipping, the excellent but unsupported and unfunded maintainer of
  91. <a href="https://github.com/libexpat/libexpat/tree/R_2_6_2">Expat</a>, the world’s most popular XML parser.</p>
  92. <p>And yeah, he’s part of a trend, one that notably included the now-infamous
  93. <a href="https://en.wikipedia.org/wiki/XZ_Utils">XZ-Utils</a> package.</p>
  94. <p>And so I think one useful task for OSQI would be taking over (ideally partial) maintenance duties for a lot of Open-Source projects
  95. that have a high ratio of adoption to support. In some cases it would have to take a lower-intensity form, let’s call it “life
  96. support”, where OSQI deals with vulnerability reports but flatly refuses to address any requests for features no matter how
  97. trivial, and rejects all PRs unless they come from someone who’s willing to take on part of the maintenance load.</p>
  98. <p>One benefit of having paid professionals doing this is that they will blow off the kind of social-engineering harassment that
  99. the <b>#XZ</b> attacker inflicted on the XZ-Utils maintainer (see
  100. <a href="https://research.swtch.com/xz-timeline">Russ Cox’s excellent timeline</a>) and which is unfortunately too common in the
  101. Open-Source world generally.</p>
  102. <p id="p-14" class="p1"><span class="h2">Goal: Benchmarking</span> ·
  103. Efficiency is an aspect of quality, and I think it would be perfectly reasonable for OSQI to engage in
  104. benchmarking and optimization. There’s a non-obvious reason for this: <b>#XZ</b> was unmasked when a Postgres specialist noticed
  105. performance problems.</p>
  106. <p>I think that in general, if you’re a bad person trying to backdoor an Open-Source package, it’s going to
  107. be hard to do without introducing performance glitches. I’ve
  108. <a href="/ongoing/When/202x/2021/05/15/Testing-in-2021#p-13">long advocated</a> that unit and/or integration tests should
  109. include a benchmark or two, just to avert well-intentioned performance regressions; if they handicap bad guys too, that’s a
  110. bonus.</p>
  111. <p id="p-15" class="p1"><span class="h2">Goal: Education and evangelism</span> ·
  112. OSQI staff will develop a deep shared pool of expertise in making Open-Source software safer and better, and
  113. specifically in detecting and repelling multiple attack flavors. They should share it! Blogs, conferences, whatever. It even
  114. occurred to me that it might make sense to structure OSQI as an educational institution; standalone or as a grad college of
  115. something existing.</p>
  116. <p>But what I’m talking about isn’t refereed JACM papers, but what my Dad, a Professor of Agriculture, called “Extension”:
  117. Bringing the results of research directly to practitioners.</p>
  118. <p id="p-16" class="p1"><span class="h2">Non-goal: Making standards</span> ·
  119. The world has enough standards organizations. I could see individual OSQI employees pitching in, though, at the IETF or IEEE
  120. or W3C or wherever, with work on Infosec standards.</p>
  121. <p>Which brings me to…</p>
  122. <p id="p-17" class="p1"><span class="h2">Non-goal: Litigation</span> ·
  123. Or really any other enforcement-related activity. OSQI exists to fix problems, build tools, and share lessons. This is going
  124. to be easier if nobody (except attackers) sees them as a threat, and if staff don’t have to think about how their work and
  125. findings will play out in court.</p>
  126. <p>And a related non-goal…</p>
  127. <p id="p-18" class="p1"><span class="h2">Non-goal: Licensing</span> ·
  128. The intersection between the class of people who’d make good OSQI engineers and those who care about Open-Source
  129. licenses is, thankfully, very small. I think OSQI should accept the license landscape that exists and work hard to avoid
  130. thinking about its theology.</p>
  131. <p id="p-19" class="p1"><span class="h2">Non-goal: Certification</span> ·
  132. Once OSQI exists, the notion of “OSQI-approved” might arise. But it’d be a mistake;
  133. OSQI should be an <em>engineering</em> organization; the cost (measured by required bureaucracy) to perform certification would
  134. be brutal.</p>
  135. <p id="p-20" class="p1"><span class="h2">Goal: Transparency</span> ·
  136. OSQI can’t afford to have any secrets, with the sole exception of freshly-discovered but still-undisclosed
  137. vulnerabilities. And when those vulnerabilities are disclosed, the story of their discovery and characterization needs to be
  138. shared entirely and completely. This feels like a bare-minimum basis for building the level of trust that will be
  139. required.</p>
  140. <p id="p-21" class="p1"><span class="h2">Necessary paranoia</span> ·
  141. I discussed above why OSQI might be a nice place to work. There will be a downside, though; you’ll lose a certain amount of
  142. privacy. Because if OSQI succeeds, it will become a super-high-value target for our adversaries. In the natural course of
  143. affairs, many employees would become committers on popular packages, increasing their attractiveness as targets for bribes or
  144. blackmail.</p>
  145. <p>I recall once, a very senior security leader at an Internet giant saying to me “We have thousands of engineers, and my job
  146. requires me to believe that at least one of them also has another employer.”</p>
  147. <p>So I think OSQI needs to employ a small number of paranoid traditional-security (not Infosec) experts to keep an eye on their
  148. colleagues, audit their finances, and just be generally suspicious. These people would also
  149. worry about OSQI’s physical and network security. Because attackers gonna attack.</p>
  150. <p id="p-22" class="p1"><span class="h2">Pronunciation</span> ·
  151. Rhymes with “bosky”, of course. Also, people who work there are OSQIans. I’ve grabbed “osqi.org” and will cheerfully donate it
  152. in the long-shot case that this idea gets traction.</p>
  153. <p id="p-24" class="p1"><span class="h2">Are you serious?</span> ·
  154. Yeah. Except for, I no longer speak with the voice of a powerful employer.</p>
  155. <p>Look: For
  156. better or for worse, Open Source won. <i>[Narrator: Obviously, for better.]</i> That means it has become crucial civilizational
  157. infrastucture, which governments should actively support and maintain, just like roads and dams and power grids.</p>
  158. <p>It’s not so much that OSQI, or something
  159. like it, is a good idea; it’s that <em>not</em> trying to achieve these goals, in 2024, is dangerous and insane.</p>