0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是可重復(fù)構(gòu)建?可重復(fù)構(gòu)建為軟件供應(yīng)鏈安全保駕護(hù)航

openEuler ? 來源:openEuler ? 2023-03-21 16:49 ? 次閱讀

可重復(fù)構(gòu)建( Reproducible Builds)是證明軟件供應(yīng)鏈安全的必要手段,2022已被納入SupplyChainSecurityCon的topics以及微軟的S2C2F(Secure Supply Chain Consumption Framework)當(dāng)中,并受到了Google開源安全團(tuán)隊(duì)的支持贊助。OpenSSF/SLSA在軟件供應(yīng)鏈完整性與包管理最佳實(shí)踐中也對可重復(fù)構(gòu)建有所要求。

2022年openEuler已初步建設(shè)可重復(fù)構(gòu)建能力。

什么是可重復(fù)構(gòu)建

對于可重復(fù)的構(gòu)建,給定相同的源代碼、構(gòu)建環(huán)境和構(gòu)建指令,任何人均可重建出Bit to Bit完全相同的指定制品。

可重復(fù)構(gòu)建的目的與意義

可重復(fù)構(gòu)建可以驗(yàn)證二進(jìn)制是否被植入后門,避免潛在安全風(fēng)險(xiǎn),從而保障二進(jìn)制的質(zhì)量。構(gòu)建環(huán)境和構(gòu)建工程能夠被還原,使依賴變化范圍最小化、測試最小化,方便問題定位、提高開發(fā)效率。

通過可重復(fù)構(gòu)建可以創(chuàng)建從代碼到制品的可獨(dú)立驗(yàn)證路徑,結(jié)合已有的代碼發(fā)布簽名、軟件倉庫簽名、安全啟動等技術(shù),使開源代碼從生產(chǎn)到使用的全過程可追溯成為可能。

構(gòu)建差異產(chǎn)生的原因

在代碼構(gòu)建期間,從源代碼到產(chǎn)品發(fā)布的二進(jìn)制包,中間每一個步驟、每一個構(gòu)建工具都有可能引入二進(jìn)制差異,而這些差異經(jīng)過逐步放大,導(dǎo)致最終發(fā)布的二進(jìn)制包每次編譯都不相同,而且差異非常巨大。

2983eb48-ba4d-11ed-bfe3-dac502259ad0.png

二進(jìn)制差異案例(差異放大)

導(dǎo)致構(gòu)建差異的因素有很多,包含環(huán)境、時間戳、隨機(jī)數(shù)、文件亂序等等,這些差異都是在構(gòu)建過程中生成的。數(shù)字簽名可以證明源碼和二進(jìn)制的唯一性,但是無法證明源碼與二進(jìn)制之間對應(yīng)關(guān)系的一致性。證明源碼與二進(jìn)制一致性的工作量非常大、技術(shù)難度高。例如下圖在各編譯過程中可能會產(chǎn)生差異的因素:

29970066-ba4d-11ed-bfe3-dac502259ad0.png

openEuler可重復(fù)構(gòu)建方案

openEuler當(dāng)前的可重復(fù)構(gòu)建是將rpm包構(gòu)建兩次,再進(jìn)行對比。在構(gòu)建過程中利用開源工具libfaketime進(jìn)行差異消除,構(gòu)建結(jié)束后將兩次構(gòu)建出的rpm包進(jìn)行對比,若rpm不一致,則進(jìn)行解壓繼續(xù)對比,將差異粒度精確到文件,并輸出差異報(bào)告。

29d251ca-ba4d-11ed-bfe3-dac502259ad0.png

為了達(dá)到構(gòu)建可重復(fù)的目的,通常要滿足兩個條件:

1、構(gòu)建系統(tǒng)的完全確定性,保證兩次構(gòu)建的日期、時間完全相同(或者去除掉時間信息),文件順序一致;

2、是用的構(gòu)建工具集及構(gòu)建工具需要一致或被記錄。

主要措施有以下三步:

1、 openEuler的可重復(fù)構(gòu)建使用了libfaketime工具消除差異。此工具主要是利用LD_PRELOAD環(huán)境變量進(jìn)行差異消除。LD_PRELOAD 是 Linux 系統(tǒng)的一個環(huán)境變量,它可以影響程序的運(yùn)行時的鏈接(Runtime linker),通過此變量將 Linux 系統(tǒng)自帶的動態(tài)庫.so 替換我們自己動態(tài)庫中自定義的函數(shù),例如:time()、gethostname()、random()、rand()等函數(shù),確保編譯過程中獲取的時間、主機(jī)名、隨機(jī)數(shù)能夠保持一致。

29dbb06c-ba4d-11ed-bfe3-dac502259ad0.png

差異消除工具原理

通過使用此工具,產(chǎn)品源代碼不需要修改,從而減少了產(chǎn)品在代碼糾正方面的投資,商業(yè)和開放源代碼工具所產(chǎn)生的差異也將得到消除,也無需進(jìn)行任何代碼修改,而且時間戳的語義被最大程度地保存。并且可以通過“ unset LD_PRELOAD”格式的命令禁用該工具。

除了libfaketime原有的功能以外,我們在此基礎(chǔ)上進(jìn)行擴(kuò)展,增加了精準(zhǔn)黑白名單的機(jī)制可以有效解決因使用libfaketime而導(dǎo)致的構(gòu)建失敗問題;并完善了消除隨機(jī)數(shù)差異功能,增加了對random()、rand()、/dev/random、/dev/urandom獲取隨機(jī)數(shù)方法的替換。

2、 openEuler的可重復(fù)構(gòu)建還用到了unpacker自動化解包對比工具,可以精準(zhǔn)分析文件級差異,輸出可視化差異報(bào)告。對比兩次構(gòu)建出rpm的校驗(yàn)值,若校驗(yàn)值一致則認(rèn)為構(gòu)建可重復(fù);若校驗(yàn)值不一致,則進(jìn)行解包對比,若兩個rpm包解壓后所有文件的校驗(yàn)值均一致,同樣認(rèn)為構(gòu)建可重復(fù),若出現(xiàn)不一致文件則使用diffoscope進(jìn)行對比并輸出差異報(bào)告。此外,工具會將RSA、PGP簽名文件從rpm包中拆分出來,不會將簽名文件差異當(dāng)作是rpm差異。

29e89142-ba4d-11ed-bfe3-dac502259ad0.png

解包對比工具原理

29f08564-ba4d-11ed-bfe3-dac502259ad0.png

差異報(bào)告樣例

3、將rpm包對比結(jié)束后,我們會將對比結(jié)果以及差異報(bào)告歸檔,并在openEuler的可重復(fù)構(gòu)建網(wǎng)站展示并進(jìn)行治理。

2a0ffdf4-ba4d-11ed-bfe3-dac502259ad0.png

2022年我們已經(jīng)對openEuler核心1800+個代碼倉分別在arm及x86環(huán)境下進(jìn)行了可重復(fù)構(gòu)建的比對,涉及軟件包6000+,可重復(fù)率達(dá)到了98%。今年我們把可重復(fù)構(gòu)建范圍擴(kuò)大到了openEuler 22.09的Everything版本,構(gòu)建成功了4130個代碼倉,涉及軟件包14000+,可重復(fù)率達(dá)到94%左右。經(jīng)過初步的分析,當(dāng)前大部分不可重復(fù)代碼倉是因?yàn)闃?gòu)建出的rpm包存在html文件差異。

openEuler可重復(fù)構(gòu)建規(guī)劃

1、 針對不可重復(fù)代碼倉分析原因、提出解決建議,并回合到上游社區(qū)。

2、 使用EulerMaker替換OBS進(jìn)行構(gòu)建,解決由于libfaketime導(dǎo)致的構(gòu)建失敗問題,并實(shí)現(xiàn)通過“元數(shù)據(jù)”隨時復(fù)現(xiàn)構(gòu)建過程的能力。

3、 逐步提高openEuler代碼倉可重復(fù)率,達(dá)成Everything版本代碼倉可重復(fù)率98%以上,領(lǐng)先業(yè)界水平。

4、 復(fù)制可重復(fù)構(gòu)建能力,幫助合作伙伴達(dá)成可重復(fù)構(gòu)建目標(biāo)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • freebsd
    +關(guān)注

    關(guān)注

    0

    文章

    37

    瀏覽量

    10947
  • GNU
    GNU
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    17778
  • openEuler
    +關(guān)注

    關(guān)注

    2

    文章

    325

    瀏覽量

    6241
  • Debian
    +關(guān)注

    關(guān)注

    0

    文章

    77

    瀏覽量

    1580

原文標(biāo)題:可重復(fù)構(gòu)建為軟件供應(yīng)鏈安全保駕護(hù)航

文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    萬里紅推出供應(yīng)鏈軟件安全解決方案

    上,正式發(fā)布了萬里紅供應(yīng)鏈軟件安全解決方案,數(shù)字時代信息安全提供體系化的軟件
    的頭像 發(fā)表于 05-19 16:13 ?279次閱讀

    eUPS0505斷電續(xù)航模塊,嵌入式系統(tǒng)保駕護(hù)航

    保駕護(hù)航。應(yīng)用場景與作用在嵌入式系統(tǒng)中,有許多關(guān)鍵設(shè)備如主控MCU和存儲器都需要穩(wěn)定的電力供應(yīng),倘若遇到外部供電意外斷電,則極易導(dǎo)致存儲器數(shù)據(jù)丟失甚至系統(tǒng)損壞,因此就有
    的頭像 發(fā)表于 04-15 11:38 ?195次閱讀
    eUPS0505斷電續(xù)航模塊,<b class='flag-5'>為</b>嵌入式系統(tǒng)<b class='flag-5'>保駕護(hù)航</b>

    充電樁安全用電消防系統(tǒng):電動自行車保駕護(hù)航

    。今天,我們就來聊聊充電樁安全用電消防系統(tǒng),看看它是如何為電動自行車保駕護(hù)航的。 電動自行車充電樁,作為電動自行車充電的基礎(chǔ)設(shè)施,其安全性直接關(guān)系到廣大車主的生命財(cái)產(chǎn)安全。近年來,因充
    的頭像 發(fā)表于 04-01 14:11 ?224次閱讀

    Arm汽車技術(shù)的未來保駕護(hù)航

    隨著汽車日益復(fù)雜、新威脅不斷涌現(xiàn)以及監(jiān)管環(huán)境的變化,汽車供應(yīng)鏈必須確保車輛和零部件在開發(fā)、集成、維護(hù)和報(bào)廢的全過程都遵循嚴(yán)格的安全規(guī)范。這包括對單個產(chǎn)品的網(wǎng)絡(luò)安全進(jìn)行評估,并建立網(wǎng)絡(luò)安全
    的頭像 發(fā)表于 03-10 09:19 ?453次閱讀

    充電樁“耐力大考驗(yàn)”:老化負(fù)載研究,持久續(xù)航保駕護(hù)航

    虛擬仿真技術(shù),模擬各種復(fù)雜環(huán)境下的老化過程,縮短測試周期,降低測試成本。 充電樁老化負(fù)載研究,是保障充電樁安全可靠運(yùn)行的重要環(huán)節(jié),也是推動充電樁行業(yè)健康發(fā)展的重要力量。讓我們共同期待,更智能、更可靠的充電樁,綠色出行保駕護(hù)航!
    發(fā)表于 02-28 14:42

    一文速覽 30KPA48A:快速響應(yīng),電路安全保駕護(hù)航

    一文速覽 30KPA48A:快速響應(yīng),電路安全保駕護(hù)航
    的頭像 發(fā)表于 02-22 10:15 ?529次閱讀
    一文速覽 30KPA48A:快速響應(yīng),<b class='flag-5'>為</b>電路<b class='flag-5'>安全</b><b class='flag-5'>保駕護(hù)航</b>

    安科瑞蓄電池在線監(jiān)控系統(tǒng)鐵塔基站的穩(wěn)定運(yùn)行保駕護(hù)航

    快速發(fā)展奠定堅(jiān)實(shí)的基礎(chǔ)。確?;?4小時平穩(wěn)運(yùn)行,后備電源在其中起了非常重要的作用。 ? ? ? ?安科瑞蓄電池在線監(jiān)控系統(tǒng)鐵塔基站的穩(wěn)定運(yùn)行保駕護(hù)航實(shí)現(xiàn)電池參數(shù)實(shí)時在線監(jiān)測,對電池故障和風(fēng)險(xiǎn)及時發(fā)出預(yù)警,安裝、維護(hù)和接入
    的頭像 發(fā)表于 02-20 16:54 ?325次閱讀
    安科瑞蓄電池在線監(jiān)控系統(tǒng)<b class='flag-5'>為</b>鐵塔基站的穩(wěn)定運(yùn)行<b class='flag-5'>保駕護(hù)航</b>

    無人機(jī)電力巡檢系統(tǒng)電網(wǎng)安全保駕護(hù)航

    ? ? ? ?無人機(jī)電力巡檢系統(tǒng)電網(wǎng)安全保駕護(hù)航 ? ? ? ?電力,現(xiàn)代社會的命脈,其穩(wěn)定運(yùn)行關(guān)乎國計(jì)民生。而電力巡檢,作為保障電網(wǎng)安全的首道防線,卻長期面臨著效率低、風(fēng)險(xiǎn)高、成本
    的頭像 發(fā)表于 02-07 18:06 ?460次閱讀

    5KP26A 二極管:26V 精準(zhǔn)穩(wěn)壓,電路安全保駕護(hù)航

    5KP26A 二極管:26V 精準(zhǔn)穩(wěn)壓,電路安全保駕護(hù)航
    的頭像 發(fā)表于 01-21 14:07 ?651次閱讀

    無人機(jī)光伏巡檢系統(tǒng)光伏發(fā)電保駕護(hù)航

    ?????? 無人機(jī)光伏巡檢系統(tǒng)光伏發(fā)電保駕護(hù)航 ?????? 在當(dāng)下,光伏發(fā)電行業(yè)正處于高速發(fā)展的黃金時期,光伏電站的規(guī)模也在不斷擴(kuò)大。然而,在這繁榮的背后,光伏維護(hù)與巡檢卻面臨著諸多挑戰(zhàn)。幸運(yùn)
    的頭像 發(fā)表于 01-13 16:25 ?441次閱讀

    電梯五方對講網(wǎng)關(guān):構(gòu)建高效安全的垂直交通通訊網(wǎng)絡(luò)

    在高層建筑日益增多的今天,電梯作為連接各樓層的垂直交通工具,其安全性與通訊效率顯得尤為重要。電梯五方對講網(wǎng)關(guān),作為電梯通訊系統(tǒng)的核心部件,正以其獨(dú)特的功能與優(yōu)勢,構(gòu)建起一個高效、安全的垂直交通通訊網(wǎng)絡(luò),為人們的日常出行
    的頭像 發(fā)表于 12-29 10:42 ?449次閱讀

    工業(yè)專用直流濾波器:工業(yè)生產(chǎn)保駕護(hù)航

    在現(xiàn)代工業(yè)領(lǐng)域,高效、穩(wěn)定的電力供應(yīng)是確保生產(chǎn)順利進(jìn)行的關(guān)鍵因素之一。而工業(yè)專用直流濾波器,就如同一位默默守護(hù)的忠誠衛(wèi)士,工業(yè)生產(chǎn)保駕護(hù)航
    的頭像 發(fā)表于 10-25 11:36 ?437次閱讀

    瑞隆源產(chǎn)品符合性檢驗(yàn)中心PCIC--浪涌產(chǎn)品質(zhì)量保駕護(hù)航

    在電子科技飛速發(fā)展的時代,浪涌抑制問題成為影響電子設(shè)備正常運(yùn)行的重要因素之一。瑞隆源有這樣一個專業(yè)的機(jī)構(gòu),客戶產(chǎn)品的可靠運(yùn)行保駕護(hù)航,她就是
    的頭像 發(fā)表于 09-06 11:18 ?476次閱讀
    瑞隆源產(chǎn)品符合性檢驗(yàn)中心PCIC--<b class='flag-5'>為</b>浪涌產(chǎn)品質(zhì)量<b class='flag-5'>保駕護(hù)航</b>

    上海迪士尼度假區(qū)智慧桿保駕護(hù)航

    智慧桿服務(wù)于智慧園區(qū)建設(shè),上海國際度假區(qū)保駕護(hù)航。
    的頭像 發(fā)表于 09-03 09:43 ?634次閱讀
    上海迪士尼度假區(qū)智慧桿<b class='flag-5'>為</b>您<b class='flag-5'>保駕護(hù)航</b>

    重復(fù)燒寫的語音芯片具備哪些特點(diǎn)?

    重復(fù)燒寫語音芯片具有高可靠性、低功耗、靈活性、安全性、成本效益,支持USB下載更換語音,組合播放,PWM和DAC輸出,休眠模式和抗干擾,適合工業(yè)及需修改語音場合。
    的頭像 發(fā)表于 07-16 09:36 ?425次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品