<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          再談“開源軟件供應(yīng)鏈安全”

          共 6086字,需瀏覽 13分鐘

           ·

          2022-01-26 13:59

          轉(zhuǎn)載自:開源社KAIYUANSHE

          作者:莊表偉

           

          緣起


          之前寫過一篇文章《我所理解的開源軟件供應(yīng)鏈安全》,當(dāng)時的情況,還沒有出現(xiàn)一些值得探討的,堪稱緊迫的熱點事件,所以我也僅僅是泛泛而談,到最后留了一句話:「我的提議是:不再提“開源供應(yīng)鏈安全”,而是提“開源生態(tài)建設(shè)”?!?/span>

          在最近一段時間,接連出現(xiàn)了Log4j2事件,與Marak Squires刪庫事件,一時間大家都議論紛紛,我也覺得自己有責(zé)任,來更加深入的探討一下,這個方面的問題。

          時代已經(jīng)發(fā)生了變化


          在B站上,有一位著名的Up主:半佛仙人,發(fā)了一篇文章,后來還專門錄了一期視頻。因為是“外行”的緣故,所以會受到很多的批評與指責(zé)。其實我覺得他說得大致上都很有道理,作為一位熱心人士,積極找程序員朋友交流,盡量深入理解開源,然后再發(fā)表自己看法,已經(jīng)非常不錯了。

          至少半佛的一個觀點,我特別贊同:時代已經(jīng)發(fā)生了變化。我們只有意識并理解這些變化,然后才談得上“如何應(yīng)對”。

          比爾蓋茨的一封信

          1976年2月3日,著名的微軟公司的創(chuàng)始人,發(fā)布了《致電腦愛好者的一封公開信》。這封信在開源社區(qū),估計無人不知、無人不曉。關(guān)鍵在于下面這段話:“誰會從事專業(yè)的軟件開發(fā)卻分文無獲。哪有業(yè)余愛好者會花費3個人年的精力去編寫軟件,去修正軟件,編寫使用手冊卻免費發(fā)放給別人使用?”

          在很長一段時間里,開源社區(qū)的人都視微軟是開源的敵人,而且常常喜歡拿段話出來“打臉”。現(xiàn)在就是有那么多人,那么多技術(shù)水平高超,卻不求回報的人,愿意花費極其驚人的時間,去寫軟件,修bug,寫文檔。甚至還有社區(qū)運(yùn)營、技術(shù)布道等等諸多工作。

          “你們這些資本家們無法理解的事情,正在這個世界上發(fā)生著,而且越來越多”。

          早期的黑客是一群什么人?

          有一些事情,確實很難理解。尤其是像半佛這樣的人,無法理解那些早期黑客的動機(jī)。因為按照“理性經(jīng)濟(jì)人”的假設(shè),那些黑客完全是在做一些一味付出,不求回報的事情。

          事實上,我們可以從兩個角度,來理解黑客的邏輯。

          • 關(guān)于回報:如果我們擴(kuò)展經(jīng)濟(jì)人假設(shè),將回報,不僅僅局限于經(jīng)濟(jì)上的,金錢的,直接的回報。而是按照功利主義的定義:“效用最大化”。所謂效用,包括幸福、快樂、滿足等等情感體驗。通過獲得經(jīng)濟(jì)收入,當(dāng)然是一種方式。但是:社會地位的提升,甚至僅僅是在社區(qū)范圍內(nèi)的備受尊崇,也是一種方式。更有甚至,僅僅是創(chuàng)造一個從未存在過的事物,這種創(chuàng)造的喜悅,就足以回報那些黑客的全部投入。

          • 關(guān)于未來:黑客、程序員,也許是最喜歡科幻小說的人群了吧。不僅僅是喜歡,而且他們甚至希望能夠促成某種未來的早日實現(xiàn)。如果自己寫的代碼能夠幫助這樣的未來早日實現(xiàn),如果與一群黑客一起努力,能夠推動這樣的世界早日降臨,幾乎每一個黑客都會愿意傾盡全力。


          所以,簡單的總結(jié)就是:早期黑客們,在努力推動未來早日實現(xiàn)的過程中,已經(jīng)獲得了他們希望得到的回報。

          供求雙方,從合一到分離

          我們可以引用一段自由軟件的定義:“自由軟件”尊重用戶的自由,并且尊重整個社區(qū)。粗略來講,一個軟件如果是自由軟件,這意味著用戶可以自由地運(yùn)行,拷貝,分發(fā),學(xué)習(xí),修改并改進(jìn)該軟件。

          后來在社區(qū)里有一些不同的聲音,在質(zhì)疑這樣的定義。為什么只談用戶的自由,卻不談“作者”的自由?為了用戶可以自由的運(yùn)行,拷貝,分發(fā),學(xué)習(xí),修改并改進(jìn),就可以不管作者的利益了嗎?作者為啥不能自由的定義自己的授權(quán)協(xié)議?想授予就授予?想收回就收回?

          其實,根源還是在于時代不同了。在自由軟件,甚至開源軟件剛剛誕生的時候。軟件的供求雙方,是一個緊密的整體。社區(qū)里的人,既是一些軟件的開發(fā)者,也是另一個軟件的使用者。所謂“尊重整個社區(qū)”就是這個意思。尊重整個社區(qū)的自由,就是為了整個社區(qū)的利益。

          在早期:開源與互聯(lián)網(wǎng)幾乎就是一對雙生子,他們一起成長,互相扶持。風(fēng)借火勢,火借風(fēng)威。但是,漸漸的,開源社區(qū)與軟件產(chǎn)業(yè)、互聯(lián)網(wǎng)產(chǎn)業(yè),以及由互聯(lián)網(wǎng)產(chǎn)業(yè)成長起來的云計算行業(yè),不再是一體的了。在這個過程中,供應(yīng)方發(fā)生了變化,需求方也發(fā)生了變化。要想再愉快的一起玩耍,就需要從新思考各自的定位了。

          所以,下面我將從分離之后的供求雙方,來分析這個問題。
           

          從“禮物文化”到“注意力兌換”


          在Eric Raymond的《大教堂與集市》中,有一個最經(jīng)典的比喻,就是禮物文化。我們引用其中的兩段:

          在禮物文化下,其成員通過送出禮物而競爭社會地位。
          禮物文化并不是對物質(zhì)稀缺的適應(yīng),而是對物質(zhì)充裕的適應(yīng)。充裕性會使命令關(guān)系難以維持,會使交換關(guān)系變成無意義的游戲。在禮物文化中,社會地位并不取決于你控制了什么,而是你給予了什么。

          禮物的價值,是由禮物本身決定的?

          我們來分析一下禮物這個比喻的內(nèi)涵。一個人送出了一個禮物。人們根據(jù)這個禮物的貴重程度,而“賦予”這個送禮者,相應(yīng)的社會地位。

          這意味著三個并未明確講述的要素:

          • 禮物的價值是客觀存在的嗎?是可以被客觀、準(zhǔn)確、以公認(rèn)的方式判定的嗎?

          • 人們,注意這里的人們,到底是一百個人,還是一萬個人?這些人的數(shù)量應(yīng)該會有多少,他們?nèi)绾芜_(dá)成共識?

          • 所謂社會地位,到底是什么?尊重,禮讓,還是某種“注目禮”?


          開源軟件的價值,現(xiàn)在是由“價值+關(guān)注度”決定的

          假設(shè)我們還是沿用“禮物”這個思路,來看現(xiàn)在的開源軟件,我們需要如何來衡量一個人做出了多大的貢獻(xiàn)?或者說“送出了多貴重的禮物?”

          先區(qū)分兩種情況,一個人獨立開發(fā)出一款開源軟件,作為一個禮物。一個人參與一個開源項目,在其中貢獻(xiàn)了一部分“代碼、文檔、討論、布道等等”

          • 首先應(yīng)該是軟件價值本身,一個加密軟件,應(yīng)該比一個加法軟件,更有價值。

          • 其次是這個軟件究竟對多少人有價值?一個只對一百個人有用的軟件,肯定不如對一百萬人有用的軟件,那么有價值。

          • 然后就是爭奪關(guān)注度的情況了,一款對一百萬人有用的軟件,現(xiàn)在只有一百個人知道,這個軟件的價值說到底也不大。


          現(xiàn)在來計算禮物的價值:一個人,做了一個開源軟件,有多少人知道這個軟件,而且知道是他做的,而且認(rèn)可他的工作。這個數(shù)量,大概可以用來推算他所貢獻(xiàn)的禮物的價值。

          如何將注意力兌換成其他事物?

          自從互聯(lián)網(wǎng)流行以后,尤其是互聯(lián)網(wǎng)上免費的商業(yè)模式流行起來以后,大家都會談一個詞,叫做“流量變現(xiàn)”。其實在開源軟件領(lǐng)域,簡單的“禮物文化”,也需要升級為“注意力兌換”。

          以前的邏輯是:一個人貢獻(xiàn)禮物 –> 獲得社會地位

          現(xiàn)在的邏輯是:一個人貢獻(xiàn)禮物 –> 吸引了多少注意力 –> 這些注意力能夠兌換多少社會地位

          當(dāng)然,我們也可以將兌換這個詞,用來描述更多的現(xiàn)象。

          • 兌換內(nèi)心滿足(有人用,我就很開心)

          • 兌換社會地位(更高的社會評價)

          • 兌換就業(yè)機(jī)會(跳槽到大廠)

          • 兌換風(fēng)險投資(有投資人看中這個開源軟件)

          • 兌換維護(hù)合同(有企業(yè)級用戶使用,愿意找你維護(hù))


          但是,所有的這些,還需要一個前提:注意力。如果沒有足夠高的關(guān)注度,你啥也兌換不了。

          事實上,早期開源那種“愛用就用,別來煩我”的態(tài)度,當(dāng)然沒有問題。但是:那樣不夠“友好”,也就會影響關(guān)注度的快速提升。無論是在社區(qū)快速響應(yīng),和藹可親的回答問題,快速修復(fù)bug,其實都是一種吸引更多注意力,留住更多關(guān)注度的辦法。

          雖然這么說有些殘忍,但是我還是想說:“Marak Squires的做法錯了,一款開源軟件有幾千萬次下載,并不能夠自動兌換成社會地位,個人收入或者其他東西”。

          供應(yīng)鏈、責(zé)任鏈與利益鏈


          下面再來說說需求方的問題。現(xiàn)在我們常常說:軟件吞噬世界,開源吞噬軟件。但是,我們?yōu)樯哆€會接著說:云計算吞噬開源呢?

          • 軟件吞噬世界:全世界都運(yùn)行在軟件之上

          • 開源吞噬軟件:幾乎所有的軟件,都有開源的成分,甚至完全就是開源

          • 云計算吞噬開源:云計算靠開源賺到了錢,但是并沒有分給開源


          當(dāng)然,這里面的每一句話,可能都有些問題。

          由開源軟件的依賴關(guān)系,自然形成的供應(yīng)鏈

          在上一篇文章中,我寫了這么一段話:“我們在做軟件開發(fā)時,通常會定義的一個依賴文件。一款軟件,會依賴一組其他軟件(包),而這些軟件(包)又會進(jìn)一步的依賴某些其他的軟件(包)。但是,隨著包依賴描述的不斷改進(jìn),我們會區(qū)分:開發(fā)期(Dev)依賴與執(zhí)行期(Running)依賴?!?/span>

          在那段話里,我只是希望說明“依賴不等于風(fēng)險”,由軟件依賴關(guān)系形成的整個網(wǎng)絡(luò),可以稱之為:“開源供應(yīng)鏈”或者“開源生態(tài)”,卻不能簡單的等同于供應(yīng)鏈風(fēng)險。

          但是,我并沒有進(jìn)一步分析:開源軟件的供應(yīng)鏈與一般的供應(yīng)鏈,有何區(qū)別?以下一段文字,要特別感謝李大維老師,因為與他的交談,讓我認(rèn)識到這一點。

          傳統(tǒng)的供應(yīng)鏈,是一級與一級之間,都簽了合同的。
          但是在軟件,尤其是開源軟件的供應(yīng)鏈,每一級之間,都有免責(zé)條款。

          免責(zé)條款

          事實上,有兩種免責(zé)條款。一種是大多數(shù)開源軟件的授權(quán)協(xié)議里寫的。比如在GPL 2.0里。

          ·由于本程序是免費提供的,所以在法律許可范圍內(nèi),本程序是沒有擔(dān)保的。除非有書面說明。本程序是“AS IS”的,沒有任何明示或暗示的保證,比如默認(rèn)的適銷性、適用性這些保證都沒有,關(guān)于本程序的功能和性能導(dǎo)致的風(fēng)險都由用戶自己承擔(dān),(你單位用我作品出了事,你可別想拉我當(dāng)墊背的,大公司都不背這鍋,你讓我一個不掙你錢的背?)如果我這作品真有缺陷,你自己想辦法搞定,你可以花錢買服務(wù),這種公司又不是沒有。

          摘錄自衛(wèi)Sir的《人話版GPL 2.0協(xié)議》

          再比如在MIT里:

          本軟件是“按原樣“提供的,不附帶任何明示或暗示的保證,包括沒有任何有關(guān)適銷性、適用性、非侵權(quán)性保證以及其他保證。在任何情況下,作者或版權(quán)持有人,對任何權(quán)益追索、損害賠償以及其他追責(zé),都不負(fù)任何責(zé)任。無論這些追責(zé)產(chǎn)生自合同、侵權(quán),還是直接或間接來自于本軟件以及與本軟件使用或經(jīng)營有關(guān)的情形。

          摘錄自衛(wèi)Sir的《開源程序員絕望毀庫跑路的背后》

          另一種是互聯(lián)網(wǎng)服務(wù)的免責(zé)條款、云計算服務(wù)的免責(zé)條款、商用軟件的免責(zé)條款。

          這里就不再摘錄了,因為那種法律文本,往往都很長很長,在你使用之前,你幾乎是不會去讀完的。但是:你肯定已經(jīng)點過“確定”或者“接受”按鈕了。

          利益斷裂

          一方面是供應(yīng)鏈的延續(xù)性,另一方面是責(zé)任的斷裂(免除)。于是,我們就會發(fā)現(xiàn)一個實際存在的現(xiàn)象:因為責(zé)任鏈條斷裂,所以利益鏈條也斷裂了。

          因為事實上軟件出現(xiàn)問題之后,廠商可能損失的金額并不太高,所以在平時廠商也沒有任何動力,投入足夠的人力與預(yù)算,去確保他所用到的開源軟件的供應(yīng)鏈安全。

          前兩天聽到的一個課程,在介紹影響全球互聯(lián)網(wǎng)產(chǎn)業(yè)的美國《通信規(guī)范法》230條款。互聯(lián)網(wǎng)公司被免除了涉及用戶生成內(nèi)容的法律責(zé)任。一方面這些內(nèi)容的存在不會損害互聯(lián)網(wǎng)廠商的利益,另一方面,互聯(lián)網(wǎng)廠商又可以出于“出于良善的信念”自行刪除或管理這些內(nèi)容。

          這當(dāng)然大大降低了互聯(lián)網(wǎng)廠商的法律風(fēng)險與投入成本。再加上他們所用到的開源軟件,又是無需支付費用的。這才帶來了互聯(lián)網(wǎng)產(chǎn)業(yè)的高速發(fā)展與如今的繁榮。

          冰山現(xiàn)象

          與此同時,我們還在開源社區(qū)里,積極的宣傳禮物文化?!俺湓P詴姑铌P(guān)系難以維持,會使交換關(guān)系變成無意義的游戲。”

          結(jié)果就變成了:開源世界的冰火兩重天

          • 一座冰山是“開源項目”,海面之上看得到的開源項目,只是開源世界里的極小部分


          • 海面之下的開源項目,不僅重要,而且是海面上的開源項目,存在的基礎(chǔ)

          • 但是,海面之下的開源項目,幾乎沒有商業(yè)價值,也沒有投資前景


          • 另一種冰山是“開源貢獻(xiàn)者”,海面之上的開源開發(fā)者,只是開源社區(qū)里的一小部分人


          • 他們的確做出了極大的貢獻(xiàn),也因此享受到了“禮物文化”

          • 海面之下的開發(fā)者,他們的貢獻(xiàn)甚至被忽略了,社區(qū)的尊崇地位,幾乎與他們無關(guān)


          生態(tài)責(zé)任


          當(dāng)我們來談開源軟件的供應(yīng)鏈風(fēng)險,或者開源生態(tài)的問題時,首先需要達(dá)成一個共識:現(xiàn)在的開源生態(tài),的確存在問題,而且是一個亟待解決的,嚴(yán)重的問題。

          基于這一共識,我們才能夠來討論,在這個生態(tài)之中,有哪些角色,各自有什么責(zé)任?

          開源開發(fā)者的責(zé)任

          大家應(yīng)該都能承認(rèn),開源是一種軟件開發(fā)的協(xié)作方式。對于某些人來說,開源甚至是一種娛樂方式。當(dāng)然,如果有公司愿意雇傭你寫開源代碼,開源也是一種很不錯的工作方式。但是,如果你希望將開源作為自己的生活方式,要么你家里有礦,要么你非常擅長兌換注意力。否則,難免會傷心失望。

          雖然我們都認(rèn)為,開源是一種純個人的行為,但是單純的發(fā)泄不滿。最多引發(fā)同情,卻未必會得到支持,更是難以獲取自己真正想要的結(jié)果。

          作為一個理性行動者,知道自己想要什么,也知道自己將要付出什么,才是一種負(fù)責(zé)人的做法。

          開源使用者的責(zé)任

          “只要足夠多的眼球關(guān)注,就可讓所有軟件缺陷浮現(xiàn)?!?,或者說“只要有足夠的測試員及共同開發(fā)者,所有軟件缺陷都會在很短時間內(nèi)被發(fā)現(xiàn),而且能夠很容易被解決?!边@句話被稱之為Linus定律?,F(xiàn)在我想要告訴這些開源軟件的使用者,現(xiàn)在的開源軟件已經(jīng)越來越多了,眼球已經(jīng)根本不夠用了。

          假設(shè)“開源軟件沒有質(zhì)量問題,不會給你帶來安全風(fēng)險,完全免費,拿來就可以用?!笔且环N完全不負(fù)責(zé)任的冒險。

          開源軟件并不是“免費”的,任何使用開源軟件的企業(yè),都需要為自己的使用負(fù)責(zé),要留出預(yù)算,要么找到合格的員工,要么找到合格的服務(wù)商,來幫你應(yīng)對這些風(fēng)險。

          開源基金會的責(zé)任

          一款開源軟件,如果出現(xiàn)安全風(fēng)險,這個開源軟件的社區(qū),應(yīng)該要快速解決。如果這款開源軟件被捐贈給某個開源基金會,那么這個基金會也有義務(wù),為這個開源軟件的質(zhì)量負(fù)責(zé)。

          為什么?因為:你的品牌與聲望,為這款開源軟件背書,使得更多的廠商選擇了它。那么:如果它內(nèi)含風(fēng)險,你的品牌與聲望,就放大了這些風(fēng)險。

          作為一個基金會,你收到的捐款,應(yīng)該更多的投入到保障軟件質(zhì)量的工作中去!

          開源布道師的責(zé)任

          不要只是介紹“禮物文化”,不要反復(fù)的強(qiáng)調(diào)“Just for Fun”。不要僅僅宣傳Linus眼球定律。在布道的時候,還需要介紹更多的真實世界的情況。

          政府的責(zé)任

          2022年1月13日,白宮就Log4j漏洞與公私實體召開了開源軟件安全峰會。其中一名高級官員表示:“開源軟件雖然加速了創(chuàng)新并推動了巨大的社會和經(jīng)濟(jì)效益,但其廣泛使用且由志愿者維護(hù)的事實是重大的國家安全風(fēng)險,正如我們正在經(jīng)歷的 Log4j 漏洞事件。它并非新問題。本次峰會我們將討論如何解決這個問題,生效的解決方案是什么以及我們還能采取哪些行動來保護(hù)我們都在依賴的開源軟件安全?!?/span>

          引用自《白宮和科技巨頭在開源軟件安全峰會上說了啥?》

          在我看來,各個政府,應(yīng)該都會有所行動才是。

          結(jié)束語


          這篇文章,已經(jīng)太長了,引用一段我在《2021年中國開源年度報告》中的前言,作為結(jié)尾吧。

          在開源還只是一個小眾群體的業(yè)余愛好時,幾乎做任何事情,都是自由的。但是,在軟件吞噬世界、開源吞噬軟件的今天,開源技術(shù),已經(jīng)成為整個世界的基礎(chǔ)設(shè)施之一。能力越大,責(zé)任越大。應(yīng)用越廣,風(fēng)險越高。我們應(yīng)該如何思考與保障開源供應(yīng)鏈安全呢?應(yīng)該如何建設(shè)更加健康的開源生態(tài)呢?在這樣一種生態(tài)中,各方的責(zé)任又該如何界定呢?

          愿與諸位共同探索。
          瀏覽 35
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  毛片毛片毛片毛片毛片 | 亚洲天堂网在线播放 | 丰满人妻一区二区三区 | 又大又粗又爽 | 亚洲精品国产精品乱码桃花 |