【軟體無所不在5-4】軟體更新竟讓裝置變磚塊?

在許多情況下,軟體有正當的理由必須更新。有時,軟體更新是為了提供原本已宣傳、但出貨時卻來不及加入的功能。因此,裝置開箱、連上網路、下載最新軟體以獲得最新功能,對今日的消費者來說就像家常便飯。但像這樣的更新不一定每次都很順利,有時候功能遠比預期還晚推出,或者功能根本就不如原先所預期。

軟體更新可能既麻煩又耗費成本

除此之外,一些透過更新取得的功能,也可能導致不預期或不良的後果。例如:Spectre 漏洞最初的修正就會導致某些系統的效能變慢。除了 CPU 效能問題之外,有些案例是儲存效能也受到影響,而這又可能進一步影響系統的其他效能,因為資料讀取速率突然變慢。

大體而言,裝置能自動更新對使用者來說是件好事。許多裝置軟體所發生的問題,可透過更新來修正當然最好。只不過,軟體更新有時候也可能反而讓裝置變得無法使用。這樣的問題通常是因為更新規劃不當,或是硬體上的變異所造成。例如裝置用到一些不良 (或仿冒) 的晶片 (這樣的情況並非罕見),所以才會讓裝置在更新後出現異常行為,甚至變成磚塊 (完全不能用)。

繼續閱讀

【 軟體無所不在 5-3】擁有軟體存取權限的車廠等製造商,才知道的隱藏版功能

系統由軟體所掌控的另一個結果是,掌控系統的人可以透過程式化來改變系統在各種狀況下的行為。很多產業都會有一些廠商會透過推播的方式來幫客戶更新軟體,但有些時候客戶並不領情

一個例子就是廠商假借按計畫逐步淘汰的名義,強迫客戶提早更新。他們可能在產品設計上動手腳,讓產品在經過幾年之後就自然故障,確保客戶會定期汰舊換新。近年來,我們經常看到廠商透過軟體方式來達到這項目的,刻意不讓某些裝置升級至最新軟體,或者操弄裝置的特定功能,如電池續航力。

一般來說,軟體的檢驗是一項相當困難的工作,前述案例即可證明。掌握軟體的人若想操弄軟體或隱藏某些狀況,通常都能很有效地達到目的。這在真空管與拉桿的時代就很難辦到。

車廠開始採取措施來,防止隱藏版軟體更新功能遭非法啟用

繼續閱讀

【 軟體無所不在 5-2】微處理器底層也可能出現風險

今日的微處理器內部還有一層比所有軟體使用的機器碼更低階的程式在運作,那就是所謂的微指令 (microcode)。這些微指令通常隨處理器而異,不過當微處理器出現問題時,可透過修改微指令的方式來修正機器碼的錯誤。之前鬧得沸沸揚揚的 Spectre 和 Meltdown 處理器漏洞,就是透過修改微指令的方式來修正。不過,這樣的修改也存在著風險,因為如果沒有改好,很可能會讓微處理器徹底毀於一旦。由於伺服器通常不能任意重新開機,因為它們必須執行一些重要的企業流程,基於這一點,前述的修補絕不能等閒視之。

微處理器底層也可能出現風險

微指令既然可以修改,意味著就連微處理器晶片也可被視為軟體。且近來似乎更掀起了一股認識如何重新程式化微處理器的風潮。不僅如此,還有其他幾種類型的處理器也可被程式化,例如:可針對特定工作單次程式化的「特殊應用晶片」(ASIC)、可隨時重新程式化的「現場可程式化邏輯閘陣列」(FPGA),以及專門處理類比訊號的「數位訊號處理器」(DSP)。

FPGA 正逐漸被當成特化的協作處理器來使用,例如:影像處理、網路資料過濾,或是其他高效能運算。一些較單純的 CPU 也已經可以用 FPGA 來實做。雖然未來的裝置應該不會由一系列可重新程式化通用晶片所構成,但在某些應用上確實可行。除此之外,還有一種沒有太多人關注的特化 DSP。行動電話和某些裝置為了應付各種版本的無線射頻標準,都將其無線射頻模組設計成所謂的「軟體定義無線射頻」(SDR) 裝置,如此一來,只需單一模組就能透過程式的修改來應付各種不同標準。市面上有許多 DVB-T 電視訊號 USB 接收器都採用 Realtek 的晶片,事實上,這就是一種寬頻 SDR 裝置。許多專案也都利用這款極便宜的接收器來接收無線訊號,少了它,就得使用價格更昂貴的其他套件。

隨著這些不同的可程式化處理器逐漸廣為人知、日益普及,再加上人們對它們的興趣逐漸提高,這類處理器也越來越有可能被用於惡意攻擊。

下期待續:【 軟體無所不在 5-3】-擁有軟體存取權限的車廠等製造商,才知道的隱藏版功能

【軟體無所不在5-1】軟體更新一旦出了問題,有可能會危及生命安全!

精密複雜的軟體是工業成長的動力,讓工業以前所未有的方式茁壯,但最新的科技卻也伴隨著風險和後果。

軟體更新一旦出了問題,有可能會危及生命安全,例如交通運輸便是一例。針對軟體的安全性,全球航空產業已制定了嚴格的規範,但仍舊過度依賴一套無法預見所有情況的系統。

才不過數十年前,系統的邏輯設計還在使用機械開關來控制。要將一輛列車停止,駕駛員必須扳動一個控制桿,經由電力或機械方式將列車切換至「危險」狀態 (代表列車應該停止)。在進入隧道之前,若列車的高度超過隧道的限高,列車就會撞壞隧道前方某處的一個水銀管,使得該列車的電力被切斷。倫敦地鐵北線 (Northen Line) 就時常發生這樣的情況。這類控制邏輯相對上容易理解、也容易確認。

但隨著系統的日益複雜,系統慢慢開始改用電機零件來控制,再複雜一點的邏輯,就用離散電路來控制。如果訊號必須經過中繼轉送,那系統會發出聲音來確認操作已確實執行。因此,只要按部就班執行各樣動作,就能確保邏輯的正常運作。

到了今日,系統上的電機零件已經很少,因為,為了提升效能和效率,系統必須具備更複雜的邏輯。為了實現關鍵系統所需要的複雜邏輯,製造商開始在系統內導入微處理器。微處理器不僅擁有更大的彈性,而且比離散電路更容易透過程式控制。

繼續閱讀