Säkerhetstester har fått stor uppmärksamhet nyligen på grund av frekventa attacker mot mjukvarusystem. I detta dokument presenteras ett spårningsbaserat tillvägagångssätt för säkerhetstester. Den återanvänder testfall som genererats från tidigare testmetoder för att producera exekveringsspår. En körning spår är en sekvens av program uttalanden som utövas av ett test fall. Varje spår utförs symboliskt för att producera programbegränsningar och säkerhetsbegränsningar. Ett programrestriktion är en begränsning som införs av programlogik på programvariabler. En security restriktion är ett villkor på programvariabler som måste vara uppfyllda för att säkerställa systemets säkerhet. En säkerhetsbrist finns om det finns en tilldelning av värden för att programmera variables som uppfyller programmets begränsning men bryter mot säkerhetsbegränsningen. Detta tillvägagångssätt upptäcker säkerhetsbrister även om befintliga testfall inte utlöser dem. Denna metods novelty är en testmodell som förenar programkonsistenser och säkerhetsbegränsningar så att formell motivering kan användas för att upptäcka sårbarheter. Ett verktyg som heter SecTAC implementeras och tillämpas på J4-riktmärke pro gram och 3 open-source-program. Experimentet visar att SecTAC snabbt upptäcker alla rapporterade sårbarheter och J 3 nya som inte har upptäckts tidigare. Inledning Software security har fått stor uppmärksamhet i åter cent år på grund av det enorma antalet säkerhetsattacker som utnyttjar sårbarheter i programvara. Säkerhetstestning är på väg att bli ett aktivt forskningsområde som syftar till att identifiera sårbarheter för programvara på ett effektivt sätt. På senare tid har många ap proaches föreslagits för att upptäcka sårbarheter i program [25, 14, 11, 5, 22, 1, 20, 6, 23, 4, 10, 12, 26]. Statisk analys har använts för att skanna källkod för er rors som kraschar ett system eller orsakar säkerhetsproblem [24, 25]. Dessa statiska analysverktyg använder heuristik för att avgöra om ett säkerhetsproblem kan uppstå; de brukar ungefärliga eller till och med ignorera runtime dynamik såsom grenförhållanden och hur buffertelement besöks. De är därför ofta oprecisa och orsakar många falska larm. Dynamisk analys undersöker program exekvering för att upptäcka säkerhetsproblem [13, 8, 9, 1, 20, 23]. Dessa verktyg mata testdata till ett program och övervaka dess körtid beteende. En 978-1-4244-7501-8/10/$26.00 ©201O IEEE säkerhetssårbarhet upptäcks om beteendet anses onormalt, t.ex., programmet kom åt en buffert utanför gränserna. Även om dynamisk analys minskar falsk larmfrekvens, kräver det testingångar som faktiskt orsakar säkerhetsproblem. Detta lägger en enorm börda på testare. Dynamisk symbolisk exekvering, även kallad koncilic testing, används ofta i automatisk testdatagenerering för att hitta fel som kraschar ett system eller orsakar säkerhetsproblem [11, 22, 21, 6, 4, 10, 12, 26]. Dessa verktyg utför konkret och symboliskt utförande av ett program samtidigt för att ex plore så många vägar som möjligt. De behöver inte inputs som faktiskt kan orsaka säkerhetsproblem. Men de är antingen ineffektiva i den meningen att oriktad väg explorans inte kan täcka viktiga sårbarheter, eller inte skala väl till stora och komplexa program. I detta dokument föreslår vi en ny säkerhetsprövning med hjälp av spårbaserad symbolisk exekvering och satisfiabilitetsanalys. Spårbaserad symbolisk avrättning undviker sökrymdsexplosionen av konventionell symbolisk avrättning. I vårt tillvägagångssätt, varje befintligt testfall används för att generera en körning spår, dvs. sekvensen av utövade program uttalanden. Symbolisk avrättning tillämpas sedan för att producera två typer av predikat. Den första predikatet kallas pro gram restriktion (PC), som anger ett villkor som pro gram variabler måste uppfylla efter verkställandet av staten. Den andra predikatet kallas en säkerhetsbegränsning (SC), som anger villkoret att programvariabler måste uppfylla för att säkerställa säkerheten för det givna programmet execution. En säkerhetssårbarhet upptäcks om det finns en tilldelning av värden till programvariabler uppfyller PC, men bryter mot SC, dvs PC 1\---, SC är tillfredsställande. Fördelarna med vårt tillvägagångssätt är följande. För det första, I motsats till tidigare tillvägagångssätt, kan vi vägleda vår sökning att fokusera på de funktioner i användarprogrammet som är viktigast för användaren-som anges av utvecklarnas vilja att skriva test fall för dem. Vårt tillvägagångssätt kan identifiera säkerhetsbrister även om de befintliga testfallen inte utlöser dem. Med andra ord, vår teknik kan generera nya ingångar som utlöser säkerhetsproblem, även om användaren levererade ingångar inte gör det. För det andra föreslår vi en testmodell som förenar programbegränsningar och säkerhet begränsar oss logiska uttryck så att det formella resonemanget kan vara per form för att upptäcka säkerhetssårbarheter. Därför vår ap- DSN 2010: Zhang et al.
Symbolisk körning har föreslagits för att göra program sökväg verifiering men det kan inte lösa komplexa program med enorma mängder sökväg begränsningar REF.
Detecting vulnerabilities in C programs using trace-based testing
{'venue': '2010 IEEE/IFIP International Conference on Dependable Systems & Networks (DSN)', 'journal': '2010 IEEE/IFIP International Conference on Dependable Systems & Networks (DSN)', 'mag_field_of_study': ['Computer Science']}