Esettanulmány: beágyazott szoftver

A hibajegyzéktől a kijavított és verifikált firmware-ig

Egy közép-európai orvostechnikai vállalat a Silurus Software-t bízta meg, hogy átvegye biztonságkritikus sebészeti eszköze firmware-repositoryjait. A feladat része, hogy négy szakaszban kijavítsa a gap analysis során feltárt hibákat, és három új eszközfunkciót fejlesszen. A munkát az IEC 62304 és az FDA elvárásai szerint végzi.

Ügyfél
Közép-európai orvostechnikai vállalat
Időtartam
Több hónap
Csapatunk
2 tapasztalt beágyazott szoftvermérnök, 1 FDA-szabályozási tanácsadó, 1 projektmenedzser
Technológia
Embedded C · STM32 · Renode · CI · IEC 62304 · FDA-kiberbiztonság

Nem nevezzük meg az ügyfelet és a terméket. Ezt a titoktartási megállapodások, az ügyfél üzleti érdekei és technológiájának bizalmas jellege nem teszik lehetővé.

Háttér

Egy új fejlesztőcsapatnak kellett átvennie a firmware-t

A konzol firmware-jét és a bootloadereket egyetlen fejlesztő írta és tartotta karban. A gap analysis feltárta a kód és a kiadott dokumentumok közötti eltéréseket.

A hibák között volt a szabályozási kör időzítési hibája, egy protokolleltérés és több puffertúlcsordulás. Memóriaszivárgást is találtunk a heapen, a bootloaderből pedig hiányzott az integritásellenőrzés.

A vállalatnak a hatósági dokumentáció benyújtása előtt ki kellett javíttatnia és dokumentáltatnia a hibákat. A repositoryk átvételéhez külső fejlesztőcsapatra volt szüksége.

Hibajavítás

A gyártó minden hibánál igazolni tudja, mit módosítottunk, miért volt rá szükség, és hogyan verifikáltuk a javítást.

Kihívás

Kijavítottuk a feltárt hibákat, majd verifikáltuk a javításokat

A hibák az eszköz biztonságát érintették. Minden változtatásnál az IEC 62304 szerinti életciklust kellett követnünk, és figyelembe kellett vennünk a hatósági benyújtás szabályozási alapfeltevéseit.

Nehezen reprodukálható hibák

Egyes hibák csak meghatározott hardveres körülmények és az eszköz működési ciklusa mellett jelentkeztek. Ezek reprodukálásához külön eszközöket fejlesztettünk.

Hiányzó ellenőrzési háttér

A build nem volt reprodukálható, és CI pipeline sem állt rendelkezésre.

Naprakészen tartandó dokumentáció

Minden hibajavításhoz és új funkcióhoz frissítenünk kellett a követelményeket, a tervdokumentációt és a tesztjelentéseket. A nyomon követhetőséget is naprakészen kellett tartanunk.

Megoldás

A hibákat szakaszonként javítottuk, az eredményt pedig verifikáltuk

Egynapos workshop után négy szakaszban dolgoztunk. Mindegyik szakasz eredményét verifikáltuk és dokumentáltuk, az ügyfél pedig elfogadta.

Az egynapos workshop után két tapasztalt beágyazott szoftvermérnök, egy FDA-szabályozási tanácsadó és egy projektmenedzser vette át a repositorykat. Reprodukálható buildet hoztunk létre a CI pipeline-ban, majd négy szakaszban javítottuk a hibákat.

Minden szakasz eredményét unit tesztekkel, statikus elemzéssel, Renode-szimulációban futtatott integrációs tesztekkel és saját tesztpadi hardverünkön végzett tesztekkel verifikáltuk. Ezután dokumentáltuk az eredményt, amelyet az ügyfél elfogadott. A nehezen reprodukálható hibákhoz belső eszközöket fejlesztettünk. Egy PC-s alkalmazással például beállíthattuk és rögzíthettük az eszköz működési ciklusát.

FDA-szabályozási tanácsadónk segített az ügyfélnek felmérni az új funkciók szabályozási következményeit. A funkciófejlesztési szerződések mindegyike tartalmazza a szabályozási alapfeltevéseket és a kockázatcsökkentő intézkedéseket.

A feladatok köre

Ezeket adtuk át

01

A repository átvétele és CI bevezetése

Az eszköz firmware-jéhez reprodukálható buildet és CI pipeline-t alakítottunk ki, védett brancheket állítottunk be, és bevezettük a cppcheck és flawfinder használatát.

02

Szakaszos hibajavítás

Eltávolítottuk a holt kódot, majd kijavítottuk a kritikus és magas súlyosságú hibákat. A javítások a bootloader integritásellenőrzésére, a CRC-kezelésre, a puffertúlcsordulásokra, a nem biztonságos stringformázásra és a kiolvasás elleni védelemre terjedtek ki.

03

Verifikáció

A unit tesztekhez mutációs tesztelést is alkalmaztunk. Renode-integrációs teszteket futtattunk, és tesztpadi hardveren hibainjektálásos teszteket végeztünk.

04

Új funkciók

Az eszköz működésének beállításához külön alkalmazást fejlesztettünk. A helyszíni frissítést a szervizporton keresztül, ECDSA-val aláírt firmware-image-ekkel tettük lehetővé. A szerviznaplókat SD-kártyára rögzítettük.

05

A naplózás verifikációja

Verifikáltuk az eszköz működését áramkimaradás, megtelt vagy eltávolított SD-kártya, eseménytorlódás, processzorterhelés és írási késleltetés esetén. Az E-Stop reakcióját is ellenőriztük.

06

Szabályozási dokumentáció

Minden változtatásnál frissítettük a szoftverkövetelményeket, az architektúrát és a részletes terveket. Elkészítettük a rekordformátum specifikációját és a tesztjelentéseket, és fenntartottuk a nyomon követhetőséget. Az új funkciókhoz FDA-szabályozási tanácsadást nyújtottunk. Az ügyfél kockázatelemzéséhez és threat modeljéhez is hozzájárultunk.

Eredmények

Kijavítottuk a hibákat, majd verifikáltuk és dokumentáltuk a javításokat

4Hibajavítási szakasz, mindegyik után verifikáltuk és dokumentáltuk az eredményt, az ügyfél pedig elfogadta
3Új eszközfunkció a kijavított kódbázisban
CIStatikus elemzés és unit tesztek minden módosításnál

A firmware-repositoryk kódjából a CI pipeline-ban reprodukálható buildet készítünk. Minden változtatásnál statikus elemzést és unit teszteket futtatunk.

Új funkciók fejlesztésekor is a hibajavításoknál alkalmazott folyamatot követjük. Rögzítjük a követelményeket és a kockázatcsökkentő intézkedéseket. Az eszközön tesztelünk, és fenntartjuk a nyomon követhetőséget.

Embedded CIEC 62304STM32RenodeCIRemediationFirmware updateFDA cybersecurity
Vedd fel velünk a kapcsolatot

Vannak ismert hibák a firmware-ben, és közeleg a hatósági benyújtás határideje?

Átvesszük a repositorykat, majd szakaszonként kijavítjuk a hibákat és verifikáljuk a javításokat. A dokumentációt minden módosításnál frissítjük.