Kredit: whiteMocca/Shutterstock/N.Hanacek/NIST
Vi anförtror våra liv åt mjukvara varje gång vi kliver ombord på ett högteknologiskt flygplan eller en modern bil. En långsiktig forskningssatsning som guidats av två forskare vid National Institute of Standards and Technology (NIST) och deras samarbetspartners har utvecklat nya verktyg för att göra den här typen av säkerhetskritisk programvara ännu säkrare.
Förstärka en befintlig mjukvaruverktygssats, forskargruppens nya skapelse kan stärka säkerhetstester som mjukvaruföretag genomför på de program som hjälper till att kontrollera våra fordon, driva våra kraftverk och hantera annan krävande teknik. Även om dessa tester ofta är kostsamma och tidskrävande, de minskar sannolikheten för att den här komplexa koden kommer att fela eftersom den fick en oväntad kombination av indata. Denna källa till problem kan plåga alla sofistikerade mjukvarupaket som på ett tillförlitligt sätt måste övervaka och svara på flera dataströmmar som strömmar in från sensorer och mänskliga operatörer i varje ögonblick.
Med forskningsverktyget som heter Automated Combinatorial Testing for Software, eller ACTS, mjukvaruföretag kan se till att det inte finns några samtidiga indatakombinationer som oavsiktligt kan orsaka ett farligt fel. Som en grov parallell, tänk på ett kortkommando, som att trycka på CTRL-ALT-DELETE för att återställa ett system avsiktligt. Risken med säkerhetskritisk programvara är att kombinationer som skapar oavsiktliga konsekvenser kan förekomma.
Tills nu, det fanns inget sätt att vara säker på att alla signifikanta kombinationer i mycket stora system hade testats:en riskfylld situation. Nu, med hjälp av framsteg som gjorts av forskargruppen, även programvara som har tusentals indatavariabler, var och en kan ha en rad värden, kan testas grundligt.
NIST:s ACTS-verktygslåda innehåller nu en uppdaterad version av Combinatorial Coverage Measurement (CCM), ett verktyg som ska bidra till att förbättra säkerheten och minska mjukvarukostnaderna. Programvaruindustrin spenderar ofta sju till 20 gånger så mycket pengar på att göra säkerhetskritisk programvara tillförlitlig som den gör på mer konventionell kod.
De peer-reviewed resultaten av forskargruppen visas i två artiklar som teamet kommer att presentera den 23 april vid 2019 IEEE International Conference on Software Testing, Verifiering och validering i Xi'an, Kina. Forskningen inkluderar medarbetare från University of Texas i Arlington, Adobe Systems Inc. och Österrikes SBA Research.
NIST-matematiker Raghu Kacker sa att CCM representerar en avsevärd förbättring av ACTS-verktygslådan sedan dess senaste stora tillägg 2015.
"Innan vi reviderade CCM, det var svårt att testa programvara som hanterade tusentals variabler grundligt, ", sa Kacker. "Den begränsningen är ett problem för komplex modern programvara av det slag som används i passagerarflygplan och kärnkraftverk, eftersom det inte bara är mycket konfigurerbart, det är också livsviktigt. Människors liv och hälsa beror på det."
Mjukvaruutvecklare har brottats med buggar som härrör från oväntade indatakombinationer i decennier, så NIST började titta på orsakerna till mjukvarufel på 1990-talet för att hjälpa industrin. Det visade sig att de flesta fel involverade en enda faktor eller en kombination av två indatavariabler - en medicinsk anordnings temperatur och tryck, till exempel – orsakar en systemåterställning vid fel ögonblick. Vissa involverade upp till sex indatavariabler.
Eftersom en enskild indatavariabel kan ha en rad potentiella värden och ett program kan ha många sådana variabler, det kan vara en praktisk omöjlighet att testa alla tänkbara kombinationer, så testare förlitar sig på matematisk strategi för att eliminera stora mängder möjligheter. I mitten av 2000-talet NIST-verktygslådan kan kontrollera indata i upp till sexvägskombinationer, eliminerar många risker för fel.
"Våra verktyg fångade sig, men i slutändan, du frågar dig fortfarande hur bra du har gjort det, hur noggrann din testning var, " sa NIST-datavetaren Richard Kuhn, som arbetade med Kacker i projektet. "Vi uppdaterade CCM så att den kunde svara på de frågorna."
NISTs egna verktyg kunde hantera programvara som hade några hundra indatavariabler, men SBA Research utvecklade ett annat nytt verktyg som kan undersöka programvara som har upp till 2, 000, genererar en testsvit för upp till femvägskombinationer av indatavariabler. De två verktygen kan användas på ett komplementärt sätt:Medan NIST-programvaran kan mäta täckningen av ingångskombinationer, SBA-algoritmen kan utöka täckningen till tusentals variabler.
Nyligen, Adobe Systems Inc. kontaktade NIST och bad om hjälp med femvägstestning av ett av dess programvarupaket. NIST försåg företaget med de CCM- och SBA-utvecklade algoritmerna, som tillsammans gjorde det möjligt för Adobe att köra tillförlitlighetstester på sin kod som bevisligen var både framgångsrika och grundliga.
Medan SBA Research-algoritmen inte är en officiell del av ACTS-testsviten, teamet har planer på att inkludera det i framtiden. Sålänge, Kuhn sa att NIST kommer att göra algoritmen tillgänglig för alla utvecklare som begär det.
"Samarbetet har visat att vi kan hantera större problemklasser nu, ", sade Kuhn. "Vi kan tillämpa den här metoden på fler applikationer och system som tidigare var för svåra att hantera. Vi skulle bjuda in alla företag som är intresserade av att utöka sin mjukvara att kontakta oss, och vi delar all information de kan behöva."