在醫(yī)療器材研發(fā)過程中,大量的精力被投注于確保安全性和降低患者風(fēng)險(xiǎn)的考慮。盡管如此,隨著不同儀器聯(lián)網(wǎng)性能的不斷提升,安全研究人員在很多醫(yī)療儀器中都發(fā)現(xiàn)了安全不足,其中一個(gè)例子就是在一種常用輸液泵中發(fā)現(xiàn)的1,400個(gè)安全漏洞。
為了應(yīng)對這種不利的局面,美國食品藥品監(jiān)督管理局(FDA)發(fā)布了關(guān)于管理醫(yī)療設(shè)備安全性的規(guī)范。此公告意在重申除了使用安全之外,信息安全也應(yīng)納入醫(yī)療設(shè)備研發(fā)過程中的關(guān)鍵考慮因素。
針對網(wǎng)絡(luò)安全與靜態(tài)分析的FDA指導(dǎo)原則
在意識(shí)到醫(yī)療儀器應(yīng)當(dāng)遵守更為嚴(yán)格的安全性目標(biāo)后,F(xiàn)DA在2014年頒布了網(wǎng)絡(luò)安全管理指導(dǎo)原則;隨著無線通信、網(wǎng)絡(luò)和互聯(lián)網(wǎng)在醫(yī)療設(shè)備中更進(jìn)一步的普及和應(yīng)用,醫(yī)療設(shè)備的安全性也面臨著前所未有的挑戰(zhàn)。
進(jìn)一步來說,與其他儀器不同的是,醫(yī)療設(shè)備直接關(guān)系到患者的安全和隱私。風(fēng)險(xiǎn)管理(包括安全性強(qiáng)化和漏洞管理)是醫(yī)療設(shè)備軟件開發(fā)中最重要的組成部分——而靜態(tài)分析則是這個(gè)過程中最重要的環(huán)節(jié)。
家庭護(hù)理和“可穿戴”醫(yī)療設(shè)備數(shù)量呈現(xiàn)指數(shù)型成長,而它們僅是醫(yī)療設(shè)備中的一個(gè)分支。同樣,對于其他醫(yī)療和物聯(lián)網(wǎng)(IoT)的商業(yè)契機(jī)來說,這些發(fā)展都面臨著安全、資料安全性和隱私的考慮。
FDA的指導(dǎo)原則涵蓋范圍較廣,并且意在建立高級(jí)安全性管理規(guī)范;此指導(dǎo)原則列舉了需要啟用自動(dòng)化工具的眾多原因,其中包括以下幾點(diǎn):
• “制造商應(yīng)當(dāng)在設(shè)計(jì)和開發(fā)醫(yī)療設(shè)備時(shí)滿足網(wǎng)絡(luò)安全”;這也是GrammaTech公司一直著重探討的一個(gè)課題——在研發(fā)的最開始就將安全性考慮進(jìn)來,而不是研發(fā)后再作為附加項(xiàng)目,這是非常關(guān)鍵的。以下是詳細(xì)的說明。
• “在進(jìn)行設(shè)計(jì)和開發(fā)時(shí)就應(yīng)該適當(dāng)?shù)膶λw資產(chǎn)、威脅和安全漏洞的定義進(jìn)行探討”; 靜態(tài)分析與良好的軟件開發(fā)流程無縫集成,并特別著重于檢測與識(shí)別程序代碼和二進(jìn)制代碼中的安全漏洞。
• “評(píng)估設(shè)備功能中的安全威脅和漏洞對最終用戶/患者中所造成的影響,以及這些威脅與漏洞被利用的可能性”;舉例來說,通過對遭污染數(shù)據(jù)的分析,GrammaTech 的CodeSonar工具能追蹤整個(gè)軟件的數(shù)據(jù)源,并辨別來自外部的潛在安全漏洞。
• “在提交產(chǎn)品上市審核前,制造商應(yīng)當(dāng)提供與其醫(yī)療設(shè)備網(wǎng)絡(luò)安全相關(guān)的文件”;靜態(tài)分析工具提供報(bào)告工具,以協(xié)助處理文件、測試完成以及軟件就緒。
“安全優(yōu)先”的設(shè)計(jì)
安全性(security)并非一直是醫(yī)療儀器的首要考慮因素——長時(shí)間以來,儀器間的通信僅限于本地網(wǎng)絡(luò)并掌握在可信賴的操作人員和設(shè)備中。然而現(xiàn)代化的醫(yī)療設(shè)備普遍擁有聯(lián)網(wǎng)功能(且往往是互聯(lián)網(wǎng)), 因此這些設(shè)備也對安全性和隱私有著更高的要求。所以在研發(fā)周期的較初期階段就需要遵循安全策略。
軟件開發(fā)周期中的軟件安全性
“安全優(yōu)先”的設(shè)計(jì)方法,意味著將集成安全性視為軟件開發(fā)周期(SDLC)中的一個(gè)最高優(yōu)先級(jí),如圖1所示;開發(fā)者和項(xiàng)目經(jīng)理應(yīng)該在以下的關(guān)鍵階段注意各種情況。
• 需求階段:一旦可進(jìn)行系統(tǒng)范圍內(nèi)的威脅評(píng)估,就可以了解醫(yī)療設(shè)備中的威脅面(threat surface)。在需求階段,可以導(dǎo)入安全性相關(guān)的需求以及已知的“濫用案例(黑客可能會(huì)追蹤的用例)”和風(fēng)險(xiǎn)分析;后面會(huì)進(jìn)一步提及應(yīng)該被導(dǎo)入并加以考慮的安全性需求。此階段十分關(guān)鍵,因?yàn)樵谶@個(gè)時(shí)間點(diǎn),安全性成為一個(gè)已知的項(xiàng)目目標(biāo)并已擁有適當(dāng)水平的風(fēng)險(xiǎn)管理、調(diào)度和成本計(jì)算。
• 設(shè)計(jì)和架構(gòu):在候選架構(gòu)完成時(shí),安全性必須納入審核項(xiàng)目中(之前可能并未納入);根據(jù)已知威脅評(píng)估和安全性需求對架構(gòu)進(jìn)行審核,為這個(gè)開發(fā)階段增加了一個(gè)新的環(huán)節(jié)。在這個(gè)階段,應(yīng)該建立測試計(jì)劃,涵蓋針對預(yù)知“濫用案例”的安全性分析。
• 代碼開發(fā):在撰寫程序代碼階段,遵循安全性指南和編碼標(biāo)準(zhǔn)是非常重要的;使用例如靜態(tài)分析等自動(dòng)化工具,是確保安全漏洞不被導(dǎo)入產(chǎn)品的關(guān)鍵。測試和對自動(dòng)化測試(包含安全性分析)在此階段十分重要。
• 集成和測試:在系統(tǒng)整體上開始成形時(shí),子系統(tǒng)和系統(tǒng)測試可以在集成以及上市之前發(fā)現(xiàn)安全漏洞。自動(dòng)化滲透測試工具在這個(gè)階段十分有效,可以發(fā)現(xiàn)在較早開發(fā)階段未能發(fā)現(xiàn)的安全漏洞;最終產(chǎn)品上市前的包裝與配置是此階段最后一個(gè)步驟的關(guān)鍵,需要確保這款開箱即用產(chǎn)品具備最高的安全性,可預(yù)防大多數(shù)目前市面上聯(lián)網(wǎng)設(shè)備常見的問題。
• 部署和維護(hù):當(dāng)產(chǎn)品進(jìn)入市場并大范圍部署后,修補(bǔ)安全漏洞所需的費(fèi)用將會(huì)大幅飆升;一款以“安全優(yōu)先”設(shè)計(jì)方法出發(fā)的產(chǎn)品,發(fā)生安全漏洞事件的幾率較低,但是供貨商必須具備能持續(xù)應(yīng)對安全性挑戰(zhàn)的能力。在設(shè)計(jì)產(chǎn)品時(shí)至關(guān)重要的一點(diǎn)就是采用可更新的固件和軟件,從而能迅速應(yīng)對新出現(xiàn)的問題;不過在產(chǎn)品進(jìn)行維護(hù)和改版時(shí),安全性仍然是一個(gè)持續(xù)性的目標(biāo),新出現(xiàn)的安全漏洞和威脅也需要以新一代的方案反饋到系統(tǒng)設(shè)計(jì)中。
安全性需求
確保醫(yī)療設(shè)備安全性需要經(jīng)過許多考慮;以下列出了安全性需求的關(guān)鍵案例——其中有一些可能凌駕于對產(chǎn)品功能性的需求:
• 用戶驗(yàn)證──根據(jù)不同的用戶等級(jí),驗(yàn)證用戶存取數(shù)據(jù)與執(zhí)行功能的權(quán)限。 • 防篡改──防止通過改變設(shè)備軟硬件來規(guī)避安全防護(hù)機(jī)制的行為。 • 安全存儲(chǔ)──確保存儲(chǔ)的數(shù)據(jù)受到在線或離線訪問保護(hù),包括利用加密文件存儲(chǔ)與數(shù)字版權(quán)管理(DRM)等技術(shù)。 • 安全通信──確保數(shù)據(jù)傳輸安全性,同時(shí)避免通過連接通道(如網(wǎng)絡(luò)、USB端口)的有害存?。浑m然網(wǎng)絡(luò)連接通常是第一個(gè)被注意到的,別忘了還有其他可能遭遇攻擊的通道。 • 可靠性和可用性──在面臨進(jìn)行中的黑客攻擊時(shí),仍能維持醫(yī)療設(shè)備的安全工作。
靜態(tài)分析工具對IEC 62304標(biāo)準(zhǔn)和醫(yī)療設(shè)備軟件的適用性
盡管IEC 62304標(biāo)準(zhǔn)沒有明確要求開發(fā)工具,卻列出了對嚴(yán)格測試、驗(yàn)收標(biāo)準(zhǔn)和可追溯性的要求;有鑒于目前大部分醫(yī)療設(shè)備軟件項(xiàng)目的涵蓋范圍,在沒有工具的情況下要完成那些功能要求是不實(shí)際的。例如:
• 第5.5.2節(jié) 對一個(gè)軟件單元驗(yàn)證步驟的要求: 制造商需要建立相關(guān)策略、方法和步驟來驗(yàn)證每一個(gè)軟件單元
• 第5.5.3節(jié)要求: 制造商需要在較大型軟件項(xiàng)目的集成之前,為軟件單元建立適當(dāng)?shù)尿?yàn)收標(biāo)準(zhǔn),并確保軟件單元符合驗(yàn)收標(biāo)準(zhǔn)……軟件程序代碼是否符合程序編寫流程和編碼標(biāo)準(zhǔn)?
• 第 5.5.4節(jié)提供額外驗(yàn)收標(biāo)準(zhǔn): 當(dāng)呈現(xiàn)于設(shè)計(jì)時(shí),制造商需要依以下情況包含適合的額外驗(yàn)收標(biāo)準(zhǔn):正確的事件序列;數(shù)據(jù)和控制流程;經(jīng)計(jì)劃的資源分配;錯(cuò)誤處理(錯(cuò)誤描述、隔離和復(fù)原);變量初始化;自我診斷;內(nèi)存管理和內(nèi)存溢出;以及邊界條件。
這些驗(yàn)收標(biāo)準(zhǔn)中的大多數(shù)非常適合靜態(tài)應(yīng)用程序安全檢測(SAST),即靜態(tài)分析工具;實(shí)際上已經(jīng)有采用靜態(tài)分析的強(qiáng)力佐證──FDA曾使用GrammaTech的CodeSonar工具,在一連串的輸液泵故障事件中,分析醫(yī)療設(shè)備軟件并評(píng)估其源代碼的質(zhì)量。
SAST工具在安全性設(shè)計(jì)中所扮演的角色
SAST工具在編碼和集成階段為軟件開發(fā)提供了關(guān)鍵性的支持;無論是在開發(fā)還是維護(hù)階段,持續(xù)確保程序代碼質(zhì)量,能大幅降低軟件安全性與質(zhì)量可能帶來的成本與風(fēng)險(xiǎn)。以下是其主要優(yōu)勢:
• 靜態(tài)分析可以找出基于覆蓋的測試無法發(fā)現(xiàn)的錯(cuò)誤(bug)──后者的單元測試一般通過軟件覆蓋程度的量測來進(jìn)行,諸如聲明或判定覆蓋等;盡管已經(jīng)很嚴(yán)苛,但仍有一些缺陷會(huì)通過這類測試。靜態(tài)分析工具能識(shí)別這類缺陷。
• 靜態(tài)分析工具能在較早階段發(fā)現(xiàn)缺陷──能在產(chǎn)品開發(fā)者手上就避免缺陷發(fā)生是最理想的情況,這樣可以節(jié)省隨著項(xiàng)目進(jìn)展而不斷增加的測試和修復(fù)所需成本。
• 靜態(tài)分析可以應(yīng)對SOUP──在醫(yī)療設(shè)備軟件中,未知來源軟件(SOUP)需要特別的應(yīng)對方式;一款良好的靜態(tài)分析工具能夠評(píng)估第三方和商用現(xiàn)成軟件(包括二進(jìn)制可執(zhí)行文件和庫)的質(zhì)量和安全性。
• 靜態(tài)分析可以加速上市前核準(zhǔn)文件的建立:將軟件單元驗(yàn)收結(jié)果建文件,是證明產(chǎn)品遵循認(rèn)證標(biāo)準(zhǔn)的關(guān)鍵;靜態(tài)分析工具擁有大量的報(bào)告功能,可符合FDA審核要求。
結(jié)論
安全性現(xiàn)在已經(jīng)成為醫(yī)療設(shè)備軟件研發(fā)過程中的首要風(fēng)險(xiǎn)/責(zé)任管理因素;在研發(fā)初期就將安全性納入到產(chǎn)品設(shè)計(jì)考慮,不但是FDA的要求,也是一個(gè)良好的習(xí)慣。在縮短醫(yī)療設(shè)備上市時(shí)間以及上市前的審批流程當(dāng)中,靜態(tài)分析工具扮演了重要角色。
文章來源于電子技術(shù)設(shè)計(jì)。
推薦閱讀: