GitHub repareert automatisch kwetsbaarheden in code met AI-tool

GitHub brengt een nieuwe AI-tool uit die automatisch kwetsbaarheden in code kan repareren. De tool genaamd code scanning autofix is als publieke bèta beschikbaar voor alle gebruikers van GitHub Advanced Security.

GitHub maakt het met een tool genaamd CodeQl al langer mogelijk om repository's automatisch te scannen op potentiële beveiligingsproblemen. Deze engine wordt nu samen met GitHub Copilot-api's gebruikt om niet alleen automatisch kwetsbaarheden te vinden, maar ook te suggereren hoe ontwikkelaars een gevonden gat kunnen dichten. Code scanning autofix geeft daarbij ook uitleg over de gedane suggestie.

De suggesties over het fiksen van een bug beperken zich bovendien niet tot een enkel bestand, maar kunnen wijzigingen aan meerdere bestanden omvatten. Ook kunnen er dependency's in zitten die toegevoegd moeten worden aan een project. Ontwikkelaars kunnen een suggestie accepteren, aanpassen of afwijzen, legt GitHub in een aankondiging uit.

Volgens GitHub kan code scanning autofix nu omgaan met ruim negentig procent van de soorten waarschuwingen voor JavaScript, Typescript, Java en Python. Ook zegt het bedrijf dat het systeem ruim twee derde van de gevonden fouten kan oplossen, met weinig tot geen aanpassingen door de ontwikkelaar zelf. Later volgt ondersteuning voor meer talen. C# en Go worden als eerste toegevoegd.

Door Eveline Meijer

Nieuwsredacteur

21-03-2024 • 09:45

39

Reacties (39)

39
39
9
2
0
26
Wijzig sortering
Hmmm…. Kan je de fixes dan nog wel eerst reviewen? Blijft wel graag in control over mijn code.

—edit— te snel overheen gelezen.

—edit 2— en terecht in de comments op gewezen

[Reactie gewijzigd door PdeBie op 24 juli 2024 15:06]

In dit YT filmpje laten ze ook direct zien hoe het werkt:
https://www.youtube.com/watch?v=lm9a9R9P6uc
De ironie om te vragen of er nog een code review kan worden gedaan als je het artikel niet eens reviewt. :p
Dit schreeuwt om AI die een bijdrage eerst inhoudelijk beoordeelt en dan voor het posten aangeeft dat er wellicht een overbodige vraag in staat :)
Waarom lees je het artikel niet gewoon? Want daar is een hele alinea over geschreven...
De suggesties over het fiksen van een bug beperken zich bovendien niet tot een enkel bestand, maar kunnen wijzigingen aan meerdere bestanden omvatten. Ook kunnen er dependency's in zitten die toegevoegd moeten worden aan een project. Ontwikkelaars kunnen een suggestie accepteren, aanpassen of afwijzen, legt GitHub in uit.
En dan komt er straks een regel die verplicht je security bugs door AI te laten patchen. Stel je voor dat die security fix 1000 andere bugs introduceert, want daar kijkt zo'n LLM wel heel vaak overheen.

Sommige security bugs zijn geen security bugs omdat er in een ander stukje code iets voor is geschreven die de bug op een andere manier tegenhoudt zonder regressions te veroorzaken door core code dramatisch aan te passen om het op te lossen. Niet ideaal, maar bij grote software wel vaak noodzaak. Hier kijken LLM's ook vaak overheen.

Zo kan ik maar doorgaan waarom dit zo'n slecht idee is met huidige AI.

[Reactie gewijzigd door MrFax op 24 juli 2024 15:06]

Ik help gewoon iemand die ergens overheen leest, jouw mening gaat niet over mijn reactie, maar over het artikel, reageer dan ook lekker op het artikel ipv op mij :)

Je loopt sowieso vooruit op de zaken die imo onwaarschijnlijk zijn, ik ga niet mee in je doomdenken, sorry!
Je loopt sowieso vooruit op de zaken die imo onwaarschijnlijk zijn, ik ga niet mee in je doomdenken, sorry!
Zou je wel moeten doen, zeker gezien de schade die een "security" patch kan brengen...
> Ontwikkelaars kunnen een suggestie accepteren, aanpassen of afwijzen, legt GitHub in een aankondiging uit.

Ga ervan dat deze eerst gereviewd kan worden.
Ik neem aan dat het gewoon een PR word net zoals de suggesties om een package the upgraden
In het bericht staat "Ontwikkelaars kunnen een suggestie accepteren, aanpassen of afwijzen, legt GitHub in een aankondiging uit". En als je op de link klikt kun je zien dat het (logischerwijs) gewoon in een PR terecht komt. Uiteraard.
Wordt AI dan ook al toegepast om kwetsbaarheden op te sporen met kwade bedoelingen of zelfs automatisch scripts te laten schrijven om misbruik te maken van de kwetsbaarheden?
Tuurlijk! AI is een breed begrip, maar als we naar LLM kijken, kan je er gif op innemen dat wat voor verdedeging wordt gebruikt ook voor de aanval wordt gebruikt. En wellicht dat de commerciële oplossingen proberen dat te blokkeren, men kan prima privaat een AI model draaien met bedoeling X. Dat kan zelfs op commerciele infra. Ik verwacht echter dat grotere criminele organisaties dat doen met on-premises oplossingen, dat is een heel stuk moeilijker op te sporen...
Code kan op zich al uit kwade bedoelingen zijn geschreven. Het is te verwachten dat foute ontwikkelaars deze AI proberen te misleiden om te kunnen doen alsof hun code betrouwbaar zou zijn.
Ha ha, dit en een flink aantal AI linters in je Visual Code en je bent als programmeur full time bezig om te al die AI meningen te lezen en te duiden.
De opmars van Clippy :)
Of je doet het gewoon meteen goed en je krijgt geen meldingen :P
Maar ik weet het beter!!1!! :Y)

Maar geen gekheid. Sommige suggestie mbt "code kwaliteit" zijn niet hulpzaam. In mijn huidige project is er ook een bepaalde (absurd hoge) target afgesproken. Nu loopt de tool te klagen dat we "duplication" hebben met een aantal blokken code en of we die nog refactoren. Negeren verbeterd de afgesproken cijfers namelijk niet. Die blokken duplicatie? Enkele lijnen html met </div>. |:(
Als die tools nou slimmer worden en zelf beseffen "dat kan je niet veranderen", dan zou het een stuk beter zijn.
Misschien kun je je divs omzetten naar een span en er een display: block style overheen gooien. Ben je van het gezeur van de AI tool af.
Was sarcastisch bedoeld natuurlijk, maar ik denk dat iemand met OCD om van alle meldingen af te komen nog dat soort hacks zou toepassen ook, alleen om de checklist af te werken.
Zelf zet ik een irritante melding van de IDE gewoon uit als ik vind dat ie onzin praat ;)

[Reactie gewijzigd door kozue op 24 juli 2024 15:06]

Alleen in dit geval is het niet de IDE, maar de SIG (een 3rd party SonarQube) met een contractuele verplicht. :| :X
Dus helaas maar eromheen hacken. :Y)

[Reactie gewijzigd door SPee op 24 juli 2024 15:06]

It's all in the eye of the beholder wat goed is.
Dus... straks als mijn applicatie wordt gehackt, kan ik GitHub aansprakelijk stellen omdat ze mijn security bugs niet hebben gefixt?
Nee, want in het artikel staat ook dat ze geen fixes toepassen enkel kenbaar maken welke er mogelijk aandacht nodig hebben.
Ontwikkelaars kunnen een suggestie accepteren, aanpassen of afwijzen, legt GitHub in een aankondiging uit.

[Reactie gewijzigd door Bender op 24 juli 2024 15:06]

Hij bedoelt vast met zijn reactie wie verantwoordelijk is voor de fix. Als je hem accepteert, wie is dan verantwoordelijk als het na de fix alsnog fout gaat? Begrijp niet dat mensen hierom staan te springen...
Degene die de wijziging doorvoert en naar productie brengt?

Anders zou je ook kunnen stellen dat degene die code op Stackoverflow verantwoordelijk is, omdat iemand het gecopypaste heeft in zijn software.
Anders zou je ook kunnen stellen dat degene die code op Stackoverflow verantwoordelijk is, omdat iemand het gecopypaste heeft in zijn software. ?
Naar mijn mening een scheve vergelijking. Je betaald voor een dienst en microsoft, in dit geval, biedt mogelijkheden om sneller fixes op de code uit te voeren. Mocht het zo zijn dat het meer schade veroorzaakt, laten ze dan de code gewoon staan? Trekken ze het in?
Degene die de wijziging doorvoert en naar productie brengt?
Microsoft zal dit zeker dolgraag willen dat dit gebeurd, maar hopelijk denken andere hier beter over na en duwen ze niet blind code door.

[Reactie gewijzigd door vali op 24 juli 2024 15:06]

Begrijpt niet dat mensen hierom staan te springen? Jij bent wel heel zeker van je zaak dat je veilige code schrijft, terwijl regelmatig nieuwe soorten beveiligingsproblemen naat voren komen waar men nooit aan heeft gedacht. Ik moet de developer nog tegenkomen die alle beveiligingsproblemen kent en 100% veilige code schrijft, hint: die bestaan niet.
Nee, ik begrijp niet dat mensen hierom staan te springen, zeker als je bekijkt hoe ver chatgpt nu is qua niveau. In mijn ogen is het ook beetje apart dat gelijk de " Jij bent wel heel zeker van je zaak ", je zou beter de kant kunnen redeneren waar ik naar opzoek was, namelijk wat nou als de code veel schade aanbrengt? Binnen Red Hat zijn er namelijk ook dit soort ideeën met Insights waarbij Red Hat eventjes met een fix komt om security patches te fixen. Microsoft is zeker niet de enige...

"hint, die bestaat niet"
Alleen daarom moet je niet blind zomaar code doorduwen en vragen stellen ;) Maar ja, dit is tweakers...
Sinds wanneer kan je überhaupt een hulpmiddel aansprakelijk stellen voor iets? In welke situatie dan ook.
Goede zaak, het komt nog veel te vaak voor dat er hardcoded passwords, of credentials in de code staan.
Ik denk dat dit echt meer gaat over kwetsbaarheden als buffer overflows oid. Het probleem dat jij noemt lossen ze al best lang op met secret scanning.
Dat zal dan inderdaad het geval zijn. Met die "secret scanning" was ik nog niet bekend, thanks!
Al heel lang geleden waren er statische code analyzers (lint e.t.c.). Meestal gaven die zoveel false positives dat op een grote codebase niet te doen was om vele duizenden false positives te scannen. Tuutlijk was daar van alles in te stellen met regels, maar dat nu met een AI nu wel het aantal false positives minder zou zijn?

Ik werk met C++ coderen ook met AI tools (co-pilot), maar er zit te vaak nog fouten in. Zo vaak, dat ik het oplossen van 'niet-niet-fout, c.q. ziet-er-goed-uit-maar-is-het-net-niet zoveel tijd kost, dat ik het zelf sneller doe. Met Javascript (zeggen mijn collega's) werkt het beter.
Wij noemen de output van lintworm dan ook schijtlint.
er zullen dus wel wat limieten zijn aan de mogelijkheden en er moet goed getest worden (regressie) of alles nog werkt als vanouds.

het zal wel niet de Richfaces 4.5.17-final (die niet secure is) dependency uit de codebase van mijn huidige legacy project kunnen slopen en vervangen door iets wat hetzelfde werkt, dat zou ons een hoop werk schelen.
Ik zie hier wel het nut van in. Bijv. om vergeten of niet goed toegepaste sanitize / escape van data richting database queries of het scherm er uit te halen. Of voor als je het juist teveel hebt toegepast zoals laatst te lezen was in dit WordFence artikel:

https://www.wordfence.com...entries-wordpress-plugin/
Je mag dus dadelijk als developer met een beperkt budget en deadlines gaan strijden tegen AI die oneindig de tijd heeft om gaten in je code te vinden? Dat is een strijd die per definitie eigenlijk al verloren is (net zoals quantum computers encryptie mogelijk kunnen breken) want op een gegeven moment heb je woordblindheid en zie je je eigen werk niet meer. Een auditor inhuren is duur en veel bedrijven hebben daar geen geld voor.

Toegegeven ik heb totaal geen kennis van goed coderen in Python en C en heb via wat rommelen ook al middels ChatGPT werkbare code kunnen maken van de chocolade die ik erin gooide. Heel handig. Maar dit soort hulpjes kunnen je ook slapeloze nachten gaan bezorgen als de code kwaliteit beter is als die van een (junior) developer.

Op dit item kan niet meer gereageerd worden.