{"id":246,"date":"2022-04-01T17:34:00","date_gmt":"2022-04-01T17:34:00","guid":{"rendered":"https:\/\/pc-keeper.tech\/index.php\/2022\/04\/01\/on-the-weaponization-of-open-source\/"},"modified":"2022-04-01T17:34:00","modified_gmt":"2022-04-01T17:34:00","slug":"on-the-weaponization-of-open-source","status":"publish","type":"post","link":"https:\/\/pc-keeper.tech\/index.php\/2022\/04\/01\/on-the-weaponization-of-open-source\/","title":{"rendered":"On the Weaponization of Open Source"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div>\n<div style=\"background-color: #d4f1f4; padding: 15px 15px 10px 15px;\">\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\"><strong>Disclaimer:<\/strong> The author is completely responsible for the content of this article. The opinions expressed are their own and do not represent IEEE\u2019s position nor that of the Computer Society nor its Leadership.<\/p>\n<\/div>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-265844 img-responsive alignright\" src=\"https:\/\/ieeecs-media.computer.org\/wp-media\/2022\/03\/30222908\/on-the-weaponization-of-open-source.jpg\" alt=\"Picture with the words what do you think on the weaponization about open source\" width=\"250\" height=\"250\" srcset=\"https:\/\/ieeecs-media.computer.org\/wp-media\/2022\/03\/30222908\/on-the-weaponization-of-open-source.jpg 250w, https:\/\/ieeecs-media.computer.org\/wp-media\/2022\/03\/30222908\/on-the-weaponization-of-open-source-150x150.jpg 150w, https:\/\/ieeecs-media.computer.org\/wp-media\/2022\/03\/30222908\/on-the-weaponization-of-open-source-100x100.jpg 100w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\"\/>First of all, I need to preface this article with how much I abhor the current conflict in Ukraine and I wholeheartedly support the sanctions. However, I think the conflict has spilled over into areas of software development that have got some unintended consequences attached.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">As part of this post, I\u2019m going to look at:<\/p>\n<ol style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">\n<li>The decision by MongoDB to cut off services in Russia;<\/li>\n<li>The destructive change in a node library that deleted files on Russian IPs;<\/li>\n<li>And, a change in code\/license in a community terraform module to insult Putin.<\/li>\n<\/ol>\n<p>\u00a0<\/p>\n<hr style=\"width: 100%;\"\/>\n<p>\u00a0<\/p>\n<p style=\"text-align: center; color: #ff6600;\"><strong>Want More Tech News? Subscribe to ComputingEdge Newsletter Today!<\/strong><\/p>\n<p>\u00a0<\/p>\n<hr style=\"width: 100%;\"\/>\n<p>\u00a0<\/p>\n<h2>MongoDB Cutting Off Russian Customers<\/h2>\n<hr style=\"text-align: left; width: 40%; height: 3px; color: #ffa300; background-color: #ffa300; border: none;\"\/>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">MongoDB is a company and in order to comply with sanctions, they have decided to cut off Russian customers. I think there\u2019s a bit of inconsistency in the tech sector on whether a SaaS offering and paying a subscription is tantamount to a new sale, but I think that is in the spirit of the sanctions \u2013 making it difficult for Russian companies to operate. Mongo is a commercial entity and as such can choose who to sell its wares. I don\u2019t think there are any restrictions on running an instance of Mongo in your own kit.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">While I agree with this, it does pose an interesting question. What would happen to your organization if a service provider disappeared?<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Note, I do not think that this means that we should all rush to build our own data centers, writing our own databases, and running all our own services. The simplification and optimization of using Software as a Service should not easily be dismissed.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">However, it does not hurt to be prudent and do a threat assessment of what would happen if the service disappears. Again, I do not think that this should be taken as an incentive to run everything in multi-cloud, as I happen to think the overall increase in complexity would actually reduce reliability.<\/p>\n<p>\u00a0<\/p>\n<h2>Node Library Deleting All Files on Russian IPs<\/h2>\n<hr style=\"text-align: left; width: 40%; height: 3px; color: #ffa300; background-color: #ffa300; border: none;\"\/>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">A bit more sinister is this story \u2013 under the moniker \u201cprotestware,\u201d the <code>peacenotwar<\/code> dependency was injected into dependencies that affected Vue.js CLI (and Unity by some reports). <code>peacenotwar<\/code> checks the IP address of the computer it is running on, and if it is deemed to be inside Russia, deletes all files.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Now, supply chain attacks against node modules are nothing new. Not many months go by without a story about a hijacked node module installing backdoors or cryptominers. I think it is safe to say everyone agrees that these attacks are malicious and the actions are those of criminals.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">With this idea of \u201cprotestware,\u201d it becomes morally a little bit ambiguous. I think this feels a little bit of a problem of recent times where because of Brexit or Trump, political discourse has turned to be very divisive and tribal.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">You are either with us or against us.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">In my mind, the term \u201cprotestware\u201d is attempting to legitimize the malicious actions and very much turns open source libraries into weapons to be aimed and fired at your opponent. I do think that these actions are to be condemned \u2013 especially as the \u201cdelete files based on geofencing IP addresses\u201d has got the potential of causing collateral damage.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">I don\u2019t know how much truth there is in the issue raised on the <code>peacenotwar<\/code> repository that an American NGO lost 30,000 files documenting Russian war crimes \u2013 but it should be remembered that geo-location is not always right.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Anecdotal evidence of misidentification of IP addresses makes this a very indiscriminate weapon. And I have to ponder, if mass-bombing of civilian targets by Russia\u2019s armed forces is to be abhorred, blanket wiping files in the Russia IP range is not exactly a targeted action.<\/p>\n<p>\u00a0<\/p>\n<h2>Putin Khuylo<\/h2>\n<hr style=\"text-align: left; width: 40%; height: 3px; color: #ffa300; background-color: #ffa300; border: none;\"\/>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Last but not least, I\u2019d like to look at a story that community terraform modules for AWS have been updated to include political statements.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">First, there was a change to the license \u201cAdditional terms of use for users from Russia and Belarus.\u201d<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">By using the code provided in this repository you agree with the following:<\/p>\n<ul style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">\n<li style=\"list-style-image: url('https:\/\/ieeecs-media.computer.org\/wp-media\/2021\/11\/17161248\/Icon_Right-Double-Arrow.png');\">Russia has illegally annexed Crimea in 2014 and brought the war in Donbas followed by a full-scale invasion of Ukraine in 2022.<\/li>\n<li style=\"list-style-image: url('https:\/\/ieeecs-media.computer.org\/wp-media\/2021\/11\/17161248\/Icon_Right-Double-Arrow.png');\">Russia has brought sorrow and devastation to millions of Ukrainians, killed hundreds of innocent people, damaged thousands of buildings, and forced several million people to flee.<\/li>\n<li style=\"list-style-image: url('https:\/\/ieeecs-media.computer.org\/wp-media\/2021\/11\/17161248\/Icon_Right-Double-Arrow.png');\">Putin khuylo!<\/li>\n<\/ul>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">In addition, this acceptance was included in the code:<\/p>\n<div class=\"highlight\">\n<div style=\"color: #f8f8f2; background-color: #282a36; -moz-tab-size: 2; -o-tab-size: 2; tab-size: 2;\">\n<table style=\"border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block;\">\n<tbody>\n<tr>\n<td style=\"vertical-align: top; padding: 0; margin: 0; border: 0;\">\n<pre style=\"color: #f8f8f2; background-color: #282a36; -moz-tab-size: 2; -o-tab-size: 2; tab-size: 2;\" tabindex=\"0\"><code><span style=\"margin-right: .4em; padding: 0 .4em; color: #7f7f7f;\">1\n<\/span><span style=\"margin-right: .4em; padding: 0 .4em; color: #7f7f7f;\">2\n<\/span><span style=\"margin-right: .4em; padding: 0 .4em; color: #7f7f7f;\">3\n<\/span><span style=\"margin-right: .4em; padding: 0 .4em; color: #7f7f7f;\">4\n<\/span><span style=\"margin-right: .4em; padding: 0 .4em; color: #7f7f7f;\">5\n<\/span><\/code><\/pre>\n<\/td>\n<td style=\"vertical-align: top; padding: 0; margin: 0; border: 0; width: 100%;\">\n<pre style=\"color: #f8f8f2; background-color: #282a36; -moz-tab-size: 2; -o-tab-size: 2; tab-size: 2;\" tabindex=\"0\"><code class=\"language-terraform\" data-lang=\"terraform\"><span style=\"color: #ff79c6;\">variable<\/span> <span style=\"color: #f1fa8c;\">\"putin_khuylo\"<\/span> {\n   <span style=\"color: #50fa7b;\">description<\/span> = <span style=\"color: #f1fa8c;\">\"Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https:\/\/en.wikipedia.org\/wiki\/Putin_khuylo!\"<\/span>\n   <span style=\"color: #50fa7b;\">type<\/span>        = bool\n   <span style=\"color: #50fa7b;\">default<\/span>     = <span style=\"color: #ff79c6;\">true<\/span>\n}\n<\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>\u00a0<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Setting the variable to <code>false<\/code> means the terraform module will not work.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Now, I think this is problematic on two fronts.<\/p>\n<p>\u00a0<\/p>\n<h3 style=\"font-size: 26px;\">1. I don\u2019t think this can be classed as open source anymore.<\/h3>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">The definition of an Open Source License is quite clear:<\/p>\n<blockquote style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">\n<p>5. No Discrimination Against Persons or Groups The license must not discriminate against any person or group of persons.<\/p>\n<\/blockquote>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">I don\u2019t really want to have to read through each of my dependencies and transitive dependencies licenses to determine whether I am agreeing to discriminatory terms by using a library.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Where does it end?<\/p>\n<ul style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">\n<li style=\"list-style-image: url('https:\/\/ieeecs-media.computer.org\/wp-media\/2021\/11\/17161248\/Icon_Right-Double-Arrow.png');\">What about a license that demands you refrain from\/support eating meat?<\/li>\n<li style=\"list-style-image: url('https:\/\/ieeecs-media.computer.org\/wp-media\/2021\/11\/17161248\/Icon_Right-Double-Arrow.png');\">What about a license that demands you are pro-life\/pro-choice?<\/li>\n<li style=\"list-style-image: url('https:\/\/ieeecs-media.computer.org\/wp-media\/2021\/11\/17161248\/Icon_Right-Double-Arrow.png');\">What about a license that demands you vote Democrat\/Republican?<\/li>\n<\/ul>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">It is quite undesirable to politicize and weaponize open source that way. Depending on what kind of organization you work with, it might be completely unacceptable and outside the permission for an engineer to agree to these kinds of contracts.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">I can\u2019t imagine that a government agency would want to discover that the software they\u2019re using is mandating some kind of political stance.<\/p>\n<p>\u00a0<\/p>\n<h3 style=\"font-size: 26px;\">2. I don\u2019t think this can be enforced anyway<\/h3>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">This article argues that it is not practical to encode morality into licenses, as it would either be ignored or forked anyway.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">The JSON license, \u201cThe Software shall be used for Good, not Evil,\u201d is unenforceable, and the licenses are designed with clause 6 in mind, \u201cNo Discrimination Against Fields of Endeavor,\u201d in order to avoid license traps from downstream dependencies.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">In my opinion, the result of the <code>putin_khuylo<\/code> change is that this terraform AWS module can no longer fulfill either of those clauses and therefore can no longer be classed as open source.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">The author of the change discussed this on Hacker News and it has since changed the name of this AWS terraform to be \u201cAdditional Information\u201d rather than \u201cAdditional Terms and Conditions,\u201d but the <code>putin_khuylo<\/code> code change remains in the module.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">In my opinion that should raise eyebrows, if not red flags, about the \u201csafety\u201d of these components. It looks like these changes were made straight into the master branch without pull requests \u2013 that does suggest a lack of review process. These actions have negatively impacted the trust in the maintainers. And that makes me wonder whether using those components is safe.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Furthermore, from a licensing perspective, some organizations have guidelines of what licenses are permitted, so changing a license could be quite risky. In addition, if it can be argued that the code breaks the spirit of the license, would it still be safe to use it? Some war stories about frantically removing \u201cinfectious\u201d GPL\u2019d libraries make me think the lawyers might have a field day.<\/p>\n<p>\u00a0<\/p>\n<h2>What to Do?<\/h2>\n<hr style=\"text-align: left; width: 40%; height: 3px; color: #ffa300; background-color: #ffa300; border: none;\"\/>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Now, if trust is gone, there are only the following options:<\/p>\n<ul style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">\n<li style=\"list-style-image: url('https:\/\/ieeecs-media.computer.org\/wp-media\/2021\/11\/17161248\/Icon_Right-Double-Arrow.png');\">Find a different library (easier said than done);<\/li>\n<li style=\"list-style-image: url('https:\/\/ieeecs-media.computer.org\/wp-media\/2021\/11\/17161248\/Icon_Right-Double-Arrow.png');\">Manually review the code for every commit (that means a lot of work \u2013 might not be practical if the license has changed);<\/li>\n<li style=\"list-style-image: url('https:\/\/ieeecs-media.computer.org\/wp-media\/2021\/11\/17161248\/Icon_Right-Double-Arrow.png');\">Or, fork the library (maintaining libraries is expensive and a huge commitment).<\/li>\n<\/ul>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">The problem with dependencies in modern software engineering is that only the biggest organizations have the resources to write all their own libraries (e.g. Google, Goldman Sachs, etc).<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Most organizations simply do not have the capacity to write everything from scratch \u2013 and for good reason. The whole point of open source is collaboration and re-use, there has to be some trust.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Dependencies and supply chain attacks are a big thing. And yes, some people advocate dependency scanning and version pinning, but I don\u2019t think it is possible to use open source libraries at scale without a certain amount of trust.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">I\u2019m working in an organization where there are hundreds of teams and thousands of microservices. I\u2019m trying to think about how we can assess the risk of thousands of dependencies and millions of lines of code.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">Without trust, the only way that\u2019s possible is to fork all libraries, prevent open source, and generally kill off any agility and velocity.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">My problem is that this weaponization is killing off trust.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">I think the temptation of using open source projects as weapons against Russia should be resisted because it sets a dangerous precedent and may ultimately set back the open source movement and push organizations back into seeking refuge in commercial software with all its opaqueness and obscurity.<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\">It\u2019s not about sitting on the fence or taking sides in a war. It\u2019s about what open source has achieved over the last 30 years and I think that\u2019s now at risk of becoming collateral damage.<\/p>\n<p>\u00a0<\/p>\n<h2>About Gerald Benischke<\/h2>\n<hr style=\"text-align: left; width: 40%; height: 3px; color: #00629b; background-color: #00629b; border: none;\"\/>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\"><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-265855 img-responsive alignleft\" src=\"https:\/\/ieeecs-media.computer.org\/wp-media\/2022\/03\/30224648\/Gerald-Benischke.jpg\" alt=\"Headshot of software engineer Gerald Benischke\" width=\"137\" height=\"137\"\/>Gerald Benischke is a UK-based software engineering consultant, and over the last 20 years has worked in the public, financial, and telecom sectors with clients including Barclays, HMRC, and MBNA. His primary interests include middle-tier services, databases, security, automation, and functional programming.<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p style=\"color: #454545; font-size: 18px; line-height: 1.7em;\"><em>Do you have another perspective on the topic shared in this article? Let us know by filling out our guest blog form and share a few points you\u2019d like to address. Complete the form here.<\/em><\/p>\n<\/div><\/div>\n<p><script>\n    !function(f,b,e,v,n,t,s)\n    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n      n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n      if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n      n.queue=[];t=b.createElement(e);t.async=!0;\n      t.src=v;s=b.getElementsByTagName(e)[0];\n      s.parentNode.insertBefore(t,s)}(window,document,'script',\n      'https:\/\/connect.facebook.net\/en_US\/fbevents.js');\n    fbq('init', '2406379906149876');\n    fbq('track', 'PageView');\n  <\/script><script>\n    !function(f,b,e,v,n,t,s)\n    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n      n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n      if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n      n.queue=[];t=b.createElement(e);t.async=!0;\n      t.src=v;s=b.getElementsByTagName(e)[0];\n      s.parentNode.insertBefore(t,s)}(window,document,'script',\n      'https:\/\/connect.facebook.net\/en_US\/fbevents.js');\n    fbq('init', '721875948349197');\n    fbq('track', 'PageView');\n  <\/script><br \/>\n<br \/>[ad_2]<br \/>\n<br \/><a href=\"https:\/\/www.computer.org\/publications\/tech-news\/community-voices\/on-the-weaponization-of-open-source\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Disclaimer: The author is completely responsible for the content of this article. The opinions expressed are their own and&hellip;<\/p>\n","protected":false},"author":1,"featured_media":247,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[158,198,199,2],"tags":[],"class_list":["post-246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","category-mongo-db","category-open-source","category-tech-news-post"],"_links":{"self":[{"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/posts\/246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/comments?post=246"}],"version-history":[{"count":0,"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/posts\/246\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/media\/247"}],"wp:attachment":[{"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/media?parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/categories?post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pc-keeper.tech\/index.php\/wp-json\/wp\/v2\/tags?post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}