MIT-systeem kan uw softwarefouten zelf repareren (door te lenen van andere software)

Anonim

MIT-systeem kan uw softwarefouten zelf repareren (door te lenen van andere software)

computers

Dario Borghino

1 juli 2015

CodePhage, een softwaretool van MIT, kan naar verluidt een veelvoorkomend type computersoftwarefout oplossen door te lenen van andere software (tegoed: Jose-Luis Olivares / MIT)

Nieuwe software die wordt ontwikkeld door MIT, blijkt in staat om software bugs zelfstandig te repareren door te lenen van andere programma's en in verschillende programmeertalen, zonder toegang tot de broncode te vereisen. Dit kan ontwikkelaars duizenden uren programmeertijd besparen en tot veel stabielere software leiden.

Bugs zijn de vloek van het leven van de softwareontwikkelaar. De wijzigingen die moeten worden aangebracht om ze te repareren, zijn vaak triviaal, waarbij meestal slechts enkele regels code hoeven te worden gewijzigd, maar het proces om precies vast te stellen welke lijnen moeten worden gerepareerd, kan een zeer tijdrovend en vaak zeer frustrerend proces zijn, met name in grotere projecten.

Maar nu kan nieuwe software van MIT hier voor zorgen, en meer. Het systeem, genaamd CodePhage, kan bugs oplossen die te maken hebben met variabele controles, en kan binnenkort worden uitgebreid om nog veel meer soorten fouten te herstellen. Opmerkelijk genoeg, volgens MIT-onderzoeker Stelios Sidiroglou-Douskos, kan de software dit soort dynamische codevertaling en -transplantatie (genaamd "horizontale code-transplantatie" van het analoge proces in de genetica) uitvoeren zonder toegang tot de broncode en over verschillende programmeertalen, door het uitvoerbare bestand rechtstreeks te analyseren.

Hoe het werkt

Stel bijvoorbeeld dat u een eenvoudig computerprogramma hebt geschreven waarin de gebruiker wordt gevraagd twee getallen in te voeren en het eerste getal wordt gedeeld door de tweede. Laten we ook zeggen dat u in uw code bent vergeten te controleren of het tweede getal niet nul is (een verdeling door nul is mathematisch ongedefinieerd).

CodePhage begint met een (bugged) applicatie en twee inputs - een die geen fouten activeert ( "veilige invoer ") en een die dat doet ( "onveilige invoer "). Met behulp van een grote database van applicaties, vindt hij er een die beide ingangen kan lezen en correct verwerken. In ons geval zou het systeem een ​​uitgebreide repository doorzoeken op een functie die twee nummers veilig kan verdelen.

"We hebben tonnen broncode beschikbaar in open-source repository's, miljoenen projecten en veel van deze projecten implementeren vergelijkbare specificaties, " zegt Sidiroglou-Douskos. "Hoewel dat misschien niet de kernfunctionaliteit van het programma is, hebben ze vaak subcomponenten die functionaliteit delen in een groot aantal projecten. "

Het systeem maakt een onderscheid tussen een "donor " -programma - de software waarvan de fix wordt geleend - en een "ontvanger " -programma - de door bug-bereden code die het MIT-systeem zal proberen te repareren.

De eerste stap is het invoeren van de "veilige " invoer in de donorcode en dynamisch volgen welke beperkingen worden opgelegd aan de invoervariabelen. De software doet hetzelfde met de tweede, "onveilige " invoer en vergelijkt de twee reeksen beperkingen. De divergentiepunten tussen de twee identificeren een beperking waaraan de veilige invoer voldoet, maar niet aan de onveilige, en dit is waarschijnlijk een beveiligingscontrole die ontbreekt in de code van de ontvanger.

In ons voorbeeld is de veilige invoer de deler als een niet-nul getal, en de onveilige invoer zou de deler zijn die nul is. Het MIT-systeem detecteert dat de voorwaarde "deler moet verschillen van nul " wordt voldaan door de veilige invoer, maar niet door de onveilige, correct identificerend dat de controle voor deze specifieke voorwaarde ontbreekt in de code van de ontvanger en is de waarschijnlijke oorzaak van de bug.

Op dit punt neemt CodePhage alle verschillen in de invoercontroles in de donorsoftware en vertaalt deze naar de programmeertaal van de ontvangende software. Het systeem probeert vervolgens de nieuwe controles toe te voegen aan de broncode van het ontvangende programma in verschillende delen van de code, totdat de onveilige invoer correct is verwerkt (en het programma gedraagt ​​zich nog steeds zoals verwacht wanneer het wordt vergeleken met een testsuite).

Naar bug-vrije software?

"De visie op de langere termijn is dat je nooit een stuk code hoeft te schrijven dat iemand anders eerder heeft geschreven, " zegt MIT-professor Martin Rinard, die deel uitmaakte van het onderzoek. "Het systeem vindt dat stukje code en voegt het automatisch samen met alle stukjes code die je nodig hebt om je programma te laten werken. "

Rinard en het team zeggen dat een ontwikkelaar bijvoorbeeld ontwikkelings- en testinspanningen kan verminderen door controles op illegale invoer weg te laten en vervolgens hun tool gebruiken om automatisch over te zetten naar controles van robuustere software, inclusief closed-source, bedrijfseigen applicaties.

Volgens moderne onderzoekers kan beveiligingscontrole in moderne commerciële software 80 procent van de code beslaan - dus de impact op de programmeertijd kan, althans in theorie, behoorlijk groot zijn. Bovendien, terwijl het systeem momenteel beperkt is tot het analyseren van variabele controles, zeggen de onderzoekers dat dezelfde technieken ook zijn ontworpen om elke berekening te volgen, uitpakken en in te voegen, zolang het systeem in staat is om de waarden die zijn toegewezen aan de variabelen in de donorsoftware.

Het MIT-systeem kan ook worden gebruikt om cheques tussen verschillende versies van dezelfde applicatie over te zetten, om te proberen en te voorkomen dat nieuw uitgebrachte software-patches en updates van de introductie van nieuwe bugs.

Wanneer getest op zeven veelvoorkomende open-sourceprogramma's, zou CodePhage naar verluidt elke keer de kwetsbare code kunnen repareren, tot 10 minuten per reparatie. In toekomstige versies hopen de onderzoekers deze achterstand zoveel mogelijk te verminderen.

Het voorschot werd deze maand gepresenteerd op de conferentie van de Association for Computing Machinery voor het programmeren van taalontwerp en -implementatie en een open access-document dat het systeem beschrijft, is online te vinden.

Bron: MIT

CodePhage, een softwaretool van MIT, kan naar verluidt een veelvoorkomend type computersoftwarefout oplossen door te lenen van andere software (tegoed: Jose-Luis Olivares / MIT)