old.html 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <html>
  2. <body bgcolor="silver">
  3. <title>Four ways Ubiquiti Networks is creatively violating the GPL</title>
  4. <h1>Four ways Ubiquiti Networks is creatively violating the GPL</h1>
  5. <table>
  6. <tr>
  7. <td>
  8. <font size="3">
  9. <a href="https://www.ubnt.com">Ubiquiti Networks</a>
  10. is a company which makes long-range wireless equipment. Admittedly, you can do
  11. some
  12. <a href="http://www.gizmag.com/go/7878/">
  13. pretty amazing stuff</a>
  14. with it, but the company has a dark history of
  15. <a href="http://www.girardgibbs.com/blog/ubiquiti-the-latest-in-a-string-of-tech-company-lawsuit-investigations/">
  16. securities fraud</a>,
  17. <a href="http://www.unitedagainstnucleariran.com/company/ubiquiti-networks">
  18. violation of U.S. sanctions</a>,
  19. <a href="http://www.mofo.com/resources/news/2013/02/morrison--foerster-wins-dismissal-of-counterclai__">
  20. trademark and copyright lawsuits</a>
  21. and
  22. <a href="http://www.faqs.org/patents/app/20140143374">
  23. software patents</a>,
  24. which isn't as amazing.
  25. <p>
  26. In addition to this, they have been violating the GPL.
  27. However, because they did it creatively, most people don't know about it, and
  28. Ubiquiti <i>still hasn't come into compliance</i>.
  29. <p>
  30. Here are four ways that they have succeeded in making the violations hard to
  31. notice, and even harder to act upon.
  32. <p>
  33. </font>
  34. </td>
  35. </tr>
  36. <tr>
  37. <td>
  38. <font size="5">
  39. 1. Giving the appearance of compliance
  40. <p>
  41. <img src="GPL_notice.png" alt="'You can find the complete and corresponding source in the GPL archive.'">
  42. </font>
  43. </td>
  44. </tr>
  45. <tr>
  46. <td>
  47. <font size="3">
  48. Ubiquiti had a website set up where you can download tarballs purportedly
  49. containing all GPL source for each and every firmware release. (I can't find it
  50. any more, but that doesn't mean that it isn't still there.) When you look
  51. through these tarballs, they <i>appear to be complete</i>, and there are build
  52. instructions which allow you to make your own custom firmware.
  53. <p>
  54. It's only when you look closer that you start to notice problems, such as...
  55. </font>
  56. </td>
  57. </tr>
  58. <tr>
  59. <td>
  60. <font size="5">
  61. 2. Refusing to provide the source to their modified bootloader, even
  62. though they made changes that introduced security vulnerabilities
  63. <p>
  64. <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Schlage_everest_C123_key_blanks.jpg/225px-Schlage_everest_C123_key_blanks.jpg" alt="Security keys">
  65. </font>
  66. </td>
  67. </tr>
  68. <tr>
  69. <td>
  70. <font size="3">
  71. Up until version 5.5.4 of Ubiquiti's airOS, the locally-modified
  72. <a href="http://www.denx.de/wiki/U-Boot/">u-boot</a>
  73. bootloader contained a
  74. <a href="https://community.ubnt.com/t5/Installation-Troubleshooting/AirOS-and-Security-DUMP-of-configuration-files-with-TFTP-or/m-p/921558#M66758">
  75. security issue</a>
  76. - It was possible to extract the plain-text config from devices running the
  77. firmware, <i>without leaving a trace</i>. And the plain-text config contains
  78. <i>unencrypted WPA/WPA2/RADIUS passwords</i>.
  79. <p>
  80. Even worse than this security issue, was Ubiquiti's response to it. Namely,
  81. they:
  82. <ul>
  83. <li>Refused to provide the source code, even though u-boot is under the GPL</li>
  84. <li>Didn't fix the security issue for a long time after it was publicly
  85. disclosed</li>
  86. </ul>
  87. <b>To this day, Ubiquiti still has not provided the u-boot source code.</b>
  88. </font>
  89. </td>
  90. </tr>
  91. <tr>
  92. <td>
  93. <font size="5">
  94. 3. Providing source code to <u>a</u> version of Linux, just not the one that they
  95. actually ship, and hoping that nobody notices
  96. </font>
  97. <table>
  98. <tr>
  99. <td>
  100. <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Tux.svg/207px-Tux.svg.png"></img>
  101. </td>
  102. <td>
  103. <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Allendux.svg/204px-Allendux.svg.png"></img>
  104. </td>
  105. </tr>
  106. <tr>
  107. <td><small>Ubiquiti Source</small></td>
  108. <td><small>Ubiquiti Binaries</small></td>
  109. </tr>
  110. </table>
  111. </td>
  112. </tr>
  113. <tr>
  114. <td>
  115. <font size="3">
  116. It would be natural to think that the binaries that Ubiquiti provides were
  117. compiled from the source code that Ubiquti provides. As it turns out, for a
  118. large number of their releases, <i>the kernel source given does not correspond
  119. to the kernel in the official firmware images</i>.
  120. <p>
  121. As evidence, consider that in
  122. <a href="http://ubnt.com/downloads/firmwares/XN-fw/v5.5.4/XM.v5.5.4.16501.130308.1015.bin">
  123. version 5.5.4 of the AirMax firmware</a>,
  124. the kernel was modified such that
  125. the MTD partitions would be read only, however this change cannot be found in
  126. the
  127. <a href="http://www.ubnt.com/downloads/firmwares/XN-fw/v5.5.4/GPL.UBNT.v5.5.4.tar.bz2">
  128. corresponding kernel patches or source</a>.
  129. <p>
  130. <hr>
  131. <b>Update:</b> Some people have expressed doubt that this is done in the
  132. kernel, and could have been done in userspace. In response, I would like to
  133. note a violation that is easier to verify. ag7240-eth.ko is a binary-only
  134. kernel module contained in Ubiquiti's firmware. Instructions on how to confirm
  135. this are <a href="instructions.html">here</a>.
  136. <hr>
  137. <p>
  138. Such practices make finding violations extremely difficult, and we can't know
  139. for certain that they haven't done this with anything else in the GPL tarball.
  140. It's possible that this was just a mistake, but remember that
  141. <a href="https://community.ubnt.com/t5/airOS-SDK-Custom-Development/No-more-SDK/m-p/440613#M1606">
  142. people</a> have
  143. <a href="http://community.ubnt.com/t5/airOS-SDK-Custom-Development/GPL-archive-missing-components/td-p/409238">
  144. complained</a>
  145. about this without much of a response.
  146. <p>
  147. And speaking of complaining...
  148. </font>
  149. </td>
  150. </tr>
  151. <tr>
  152. <td>
  153. <font size="5">
  154. 4. Dragging out GPL code requests for months on end, then inexplicably going
  155. silent
  156. <p>
  157. <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Bureaucracy_is_a_Challenge_%284669115193%29.jpg/180px-Bureaucracy_is_a_Challenge_%284669115193%29.jpg" alt="Bureaucracy is a challenge to be conquered with a righteous
  158. attitude, a tolerance for stupidity, and a bulldozer when necessary">
  159. </font>
  160. </td>
  161. </tr>
  162. <tr>
  163. <td>
  164. <font size="3">
  165. In case you think that I am being mean to Ubiquiti by going public, please note
  166. that
  167. I have been trying to contact Ubiquiti for the past year about the issue of
  168. the u-boot source code. You can see my attempts
  169. <a href="145960.txt">here</a>,
  170. <a href="116975.txt">here</a> and
  171. <a href="infoteam.txt">here</a>.
  172. <p>
  173. In fact,
  174. <a href="copyrightholder.txt">
  175. I even got a copyright holder of u-boot to ask for the source</a>,
  176. and they still haven't provided it.
  177. <p>
  178. From my conversations with Ubiquiti, I have found that they claimed that it's
  179. alright to refuse to provide source code to GPL-licensed software if "This
  180. decision was taken with the security of the users in mind". Furthermore, my
  181. conversations were endlessly delayed by the supposed necessity to forward my
  182. query to another, unnamed, team.
  183. <p>
  184. And ultimately, the relevant team never responded, hoping that I would simply
  185. forget about it or give up.
  186. <p>
  187. However, if we want the GPL to retain its power, this is precisely what we
  188. cannot do. If you can spare a minute, please do any or all of the following
  189. so that we can retain the GPL's power to help the community:
  190. <ul>
  191. <li>Raise awareness - upvote it, send it to friends or write a blog post about
  192. it</li>
  193. <li>Write to Ubiquiti requesting the source - their email addresses are
  194. support@ubnt.com and info@ubnt.com. You should try both.</li>
  195. <li>Become a member of the <a href="https://sfconservancy.org">
  196. Software Freedom Conservancy</a>
  197. - they work to
  198. <a href="https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit/">
  199. enforce the GPL</a>
  200. and they need your support.
  201. </li>
  202. <li>Send me an email telling me what you've done. My email address is
  203. riley@openmailbox.org</li>
  204. </font>
  205. </td>
  206. </tr>
  207. </table>
  208. <hr>
  209. <small>
  210. The
  211. <a href="https://commons.wikimedia.org/wiki/File:Schlage_everest_C123_key_blanks.jpg">
  212. image of the keys</a>
  213. is Copyright
  214. <a href="https://en.wikipedia.org/wiki/User:Cantaloupe2">
  215. Cantaloupe2</a> at
  216. <a href="https://en.wikipedia.org/wiki/">
  217. English Wikipedia</a>, CC BY-SA 3.0.
  218. <br>
  219. The
  220. <a href="https://commons.wikimedia.org/wiki/File:Tux.svg">
  221. image of Tux without glasses</a>
  222. is Copyright
  223. <a href="http://www.isc.tamu.edu/~lewing/">
  224. Larry Ewing</a>,
  225. <a href="http://www.home.unix-ag.org/simon/">
  226. Simon Budig</a>
  227. and <a href="mailto:anja@gerwinski.de">
  228. Anja Gerwinski</a>,
  229. and can be used provided that attribution is given.
  230. <br>
  231. The
  232. <a href="https://commons.wikimedia.org/wiki/File:Allendux.svg">
  233. image of Tux with glasses</a>
  234. is Copyright
  235. <a href="https://commons.wikimedia.org/wiki/User:Subcommandante">
  236. Subcommandante</a>
  237. at <a href="https://commons.wikimedia.org">
  238. Wikimedia Commons</a>, CC BY-SA 3.0
  239. <br>
  240. The
  241. <a href="https://commons.wikimedia.org/wiki/File:Bureaucracy_is_a_Challenge_%284669115193%29.jpg">
  242. bureaucracy quote photo</a>
  243. is Copyright
  244. <a href="https://www.flickr.com/people/18713399@N00">
  245. Ben Woosley</a>, CC BY-SA 2.0.
  246. <br>
  247. The text was written by
  248. <a href="mailto:riley@openmailbox.org">
  249. Riley Baird</a>
  250. (me). I, Riley Baird, the copyright holder
  251. of the text on this webpage, hereby release this text into the public domain.
  252. This applies worldwide. In case this is not legally possible, I grant any
  253. entity the right to use this work for any purpose, without any conditions,
  254. unless such conditions are required by law.
  255. </small>
  256. </body>
  257. </html>