在醫療器材研發過程中,大量的精力被投注于確保安全性和降低患者風險的考慮;盡管如此,隨著不同儀器連網性能的不斷提升,安全研究人員在很多醫療儀器中都發現了安全漏洞,其中一個例子就是在一種非常普及的輸液幫浦(infusion pump)中發現的1,400個安全弱點。
為了因應這種不利的局面,美國食品藥物管理局(FDA)發布了關于管理醫療設備安全性的規范。此公告意在重申除了使用安全之外,訊息安全也應納入醫療設備研發過程中的關鍵考慮。
針對網絡安全與靜態分析的FDA指導原則
在意識到醫療儀器應當遵守更為嚴格的安全性目標后,FDA在2014年頒布了網絡安全管理指導原則;隨著無線通信、網絡和因特網在醫療設備中更進一步的普及和應用,醫療設備的安全性也面臨著前所未有的挑戰。
進一步來說,與其他儀器不同的是,醫療設備直接關系到患者的安全和隱私。風險管理(包括安全性強化和弱點管理)是醫療設備軟件開發中最重要的組成部分——而靜態分析(Static Analysis)則是這個過程中最重要的環節。
家庭護理和「穿戴式」醫療裝置數量呈現指數型成長,而它們僅是醫療設備中的一個分支。同樣,對于其他醫療和物聯網(IoT)的商業契機來說,這些發展都面臨著安全、資料安全性和隱私的考慮。
FDA的指導原則涵蓋范圍較廣,并且意在建立高層級的安全性管理規范;此指導原則列舉了需要啟用自動化工具的眾多原因,其中包括以下幾點:
˙「制造商應當在設計和開發醫療設備時將訊息安全性列入考慮」:這也是軟件工具暨網絡安全解決方案GrammaTech一直著重探討的一個課題——在研發的最開始就將安全性納入設計考慮,而不是研發后再作為附加項目,這是非常關鍵的。以下是詳細的說明。
˙「在進行設計和開發時就應該適當的對所涵蓋資產、威脅和安全弱點的定義進行探討」:在良好的軟件開發流程無縫整合靜態分析,并特別著重于于偵測與識別程序代碼和二進制代碼中的安全弱點。
˙「評估設備功能中之安全威脅和弱點對終端使用者/患者中所造成的影響,以及這些威脅與弱點被利用的可能性」:舉例來說,透過對遭污染數據的分析,GrammaTech的CodeSonar工具能追蹤整個軟件的數據源,并辨別來自外部的潛在安全弱點。
˙「在提交產品上市審核前,制造商應當提供與其醫療設備資安相關的文件」:靜態分析工具能提供報告功能,以協助準備這類文件、測試完備度以及軟件是否就緒。
「安全性優先」的設計
安全性(security)并非一直是醫療儀器的首要考慮因素——長時間以來,儀器間的通訊僅限于本地網絡并掌握在可信賴的操作人員和設備中。然而現代化的醫療設備普遍擁有連網功能(且通常能連上因特網), 因此這些設備也對安全性和隱私有著更高的要求。所以在研發周期的較初期階段就需要遵循安全策略。
軟件開發周期中的軟件安全性
「安全性優先」的設計理念,意味著將整合安全性視為軟件開發周期(SDLC)中的首要考慮,如圖1所示;開發者和項目經理應該在以下的關鍵階段注意各種情況。
圖 1 迭加于軟件開發周期的安全性設計流程。
˙需求階段(requirements stage):一旦可進行系統范圍內的威脅評估,就可以了解醫療設備中的威脅面(threat surface)。在需求階段,可以導入安全性相關的需求以及已知的「濫用案例(abuse cases,即黑客可能會追蹤的使用案例)」和風險分析;后面會進一步提及應該被導入并加以考慮的安全性需求。此階段十分關鍵,因為在這個時間點,安全性成為一個已知的項目目標并已擁有適當水平的風險管理、開發時程和成本。
˙設計和架構(Design and architecture):在候選架構完成時,安全性必須納入審核項目中(之前可能并未納入);根據已知威脅評估和安全性需求對架構進行審核,為這個開發階段增加了一個新的環節。在這個階段,應該建立測試計劃,涵蓋針對預知「濫用案例」的安全性分析。
˙程序代碼開發(Code development):在撰寫程序代碼階段,遵循安全性指南和編碼標準非常重要;使用例如靜態分析等自動化工具,是確保安全性弱點不被導入產品的關鍵。測試和對自動化測試(包含安全性分析)在此階段十分重要。
˙整合和測試(Integration and Test):在系統整體上開始成形時,子系統和系統測試可以在整合,以及上市之前發現安全弱點。自動化滲透測試(penetration testing)工具在這個階段十分有效,可以發現在較早開發階段未能發現的安全性弱點;最終產品上市前的包裝與配置是此階段最后一個步驟的關鍵,需要確保這款開箱即可使用的產品的具備最高的安全性,可預防大多數目前市面上連網裝置常見的問題。
˙布建和維護(deployment and maintenance):當產品進入市場并大范圍布建后,修補安全性弱點所需的費用將會大幅飆升;一款以「安全性優先」設計理念出發的產品,發生安全漏洞事件的機率較低,但是供貨商必須具備能持續因應安全性挑戰的能力。在設計產品時至關重要的一點就是采用可更新的韌體和軟件,從而能迅速因應新出現的問題;不過在產品進行維護和改版時,安全性仍然是一個持續性的目標,新出現的安全性弱點和威脅也需要以新一代的方案回饋到系統設計中。
安全性需求
確保醫療設備安全性需要經過許多考慮;以下列出了安全性需求的關鍵案 例──其中有一些可能凌駕于對產品功能性的需求:
__˙使用者身份驗證(User authentication)──__根據不同的用戶等級,驗證用戶存取數據與 執行功能的權限。
__˙防篡改(Tamper resistance)──__防止透過改變設備軟硬件來規避安全防護機制的行為。
__˙安全儲存(Secure storage)──__確保設備儲存數據無論透過在線或脫機存取的安全性,包括用檔案加密與數字版權管理(DRM)技術。
__˙安全通訊(Secure communication)──__確保數據傳輸安全性,同時避免透過鏈接通路(如網絡、USB端口)的有害存取;雖然網絡鏈接通常是第一個被注意到的,別忘了還有其他可能遭遇攻擊的通道。
__˙可靠性和可用性(Reliability and availability)──__在面臨進行中的黑客攻擊時,仍能維持醫療設備的安全運作。
靜態分析工具對IEC 62304標準和醫療設備軟件的適用性
盡管IEC62304標準沒有明確要求開發工具,卻列出了對嚴格測試、驗收標準(acceptance criteria)和可追溯性(traceability)的要求;有鑒于目前大部分醫療設備軟件項目的涵蓋范圍,在沒有工具的情況下要完成那些功能要求是不實際的。例如:
IEC62304標準Section 5.5.2對一個軟件單元(software unit)驗證步驟的要求:制造商需要建立相關策略、方法和步驟來驗證每一個軟件單元。
Section5.5.3要求:制造商需要在較大型軟件項目的整合之前,為軟件單元建立適當的驗收標準,并確保軟件單元符合驗收標準…軟件程序代碼是否符合程序編寫流程和編碼標準?
Section 5.5.4提供額外驗收標準:當呈現于設計時,制造商需要依以下情況包含適合的額外驗收標準:正確的事件序列(event sequence);數據和控制流程;經計劃的資源分配;錯誤處理(錯誤描述、隔離和復原);變量初始化;自我診斷;內存管理和內存溢位(overflow);以及邊界條件。
這些驗收標準中的大多數非常適合靜態應用程序安全檢測(SAST),即靜態分析工具;實際上已經有采用靜態分析的強力左證──FDA曾使用GrammaTech的CodeSonar工具,在一連串的輸液幫浦故障事件中,分析醫療設備軟件并評估其源代碼的質量。
SAST工具在安全性設計中所扮演的角色
SAST工具在編碼和整合階段為軟件開發提供了關鍵性的支持;無論是在開發還是維護階段,持續確保程序代碼質量,能大幅降低軟件安全性與質量可能帶來的成本與風險。以下是其主要優勢:
__˙靜態分析可以找出基于覆蓋(coverage-based)的測試無法發現的錯誤(bug)──__后者的單元測試一般透過軟件覆蓋程度的量測來進行,諸如聲明(statement)決策(decision)的覆蓋等;盡管已經很嚴苛,但仍有一些缺陷會通過這類測試。靜態分析工具能識別這類缺陷。
__˙靜態分析工具能在較早階段發現缺陷──__能在產品開發者手上就避免缺陷發生是最理想的情況,這樣可以節省隨著項目進展而不斷增加的測試和修復所需成本。
__˙靜態分析可以因應SOUP──__在醫療設備軟件中,未知來源軟件(SOUP)需要特別的因應方式;一款良好的靜態分析工具能夠評估第三方和商用現成軟件(包括二進制應用程序和鏈接庫)的質量和安全性。
__˙靜態分析可以加速上市前核準文件的建立──__將軟件單元驗收結果建文件,是證明產品遵循認證標準的關鍵;靜態分析工具擁有大量的報告功能,可符合FDA審核要求。
結論
安全性現在已經成為醫療設備軟件研發過程中的首要風險/責任管理因素;在研發初期就將安全性納入產品設計考慮,不但是FDA的要求也是一個良好的習慣;對于縮短醫療設備上市時程,以及產品通過上市前核準流程,靜態分析工具扮演了重要角色。
-
安全性
+關注
關注
0文章
93瀏覽量
19132 -
應用程序
+關注
關注
37文章
3245瀏覽量
57614 -
存儲數據
+關注
關注
0文章
85瀏覽量
14092
發布評論請先 登錄
相關推薦
評論