Hoofdcategorieën
Device Settings

Software onderzoekt broncode Linux

Door Yoeri Lauwers, donderdag 16 december 2004 11:47
Bron: Telegraaf, submitter: Judaz, views: 16.736

De Telegraaf schrijft dat het bedrijf Coverity de broncode van Linux aan een onderzoek onderworpen heeft met speciaal hiervoor ontwikkelde software. Het programma spoort fouten op in broncode die geschreven is in C of C++ en analyseert op die manier de kwaliteit en de veiligheid van het onderzochte systeem. Volgens een onderzoek van de Carnegie Mellon University zouden besturingssystemen gemiddeld 5000 fouten hebben in een totaal van 5,7 miljoen regels broncode. Volgens de software van Coverity heeft Linux op deze hoeveelheid echter slechts 985 onvolkomenheden.

CoverityHoewel het bedrijf de broncode van Windows natuurlijk niet kon onderwerpen aan zijn software, stelt de CEO Seth Hallem dat er genoeg over de fouten in Windows gezegd is om te kunnen besluiten Linux dat minstens even goed is als het besturingssysteem uit Redmond, ook zonder de broncode zelf te analyseren. De Coverity-software, SWAT genaamd, analyseert C- en C++-broncode en onderzoekt deze op veel voorkomende fouten als null-pointers, niet geinitialiseerde variabelen en buffer overruns.

Volgende 12:02 Sony HDPS-M1 voor foto-opslag gearriveerd in Nederland
Vorige 11:24 Intel en HP beëindigen Itanium-alliantie
Advertentie

Reacties

«  1  2  3  »

...stelt de CEO Seth Hallem dat er genoeg over de fouten in Windows gezegd is om te kunnen besluiten Linux minstens even goed is als het besturingssysteem uit Redmond...
En met deze 'grote beurt' erbij zal het aantal fouten in de broncode van Linux dus nog verder tot een minimum gebracht worden; de voordelen van Open Source software komen hier wel duidelijk naar voren lijkt me.

[edit] gemodereerd? wat zullen we nou krijgen?

Jha ik vond dit ook al bs. Omdat een OS minder fouten in zijn code heeft, is het goed/beter?
Volgens mij is je OS goed als het veel gebruikt wordt, om de reden dat het makkelijk en goed werkt en zo. Als end user zal het mij geen hol schelen hoe die code in elkaar hangt...

Ja alleen als de code goed is, brengt dat automatische een hogere veiligheid, betrouwbaarheid en snelheid met zich mee. En een gevolg daar weer van is dat meer mensen het gebruiken.
Dus uiteindelijk interesseert het je wel een hol, alleen weet je het zelf niet.

Goed geprogrameerd zegt niks over de snelheid van de code. Meestal zijn voor het oog mooi ontworpen loops niet goed voor performance.

Nou....hogere snelheid hoeft niet, want een nutteloos while-loopje of een sleep tussendoor kan een flinke hit op performance geven, terwijl het toch goede code is..
En ik neem aan dat het de kernel betreft, en niet alle programmatuur die op linux draait, en die hebben ook invloed op performance, betrouwbaarheid en veiligheid (brakke apache, ssd, ftpd, telnetd of watooit zorgt nl. voor makkelijke ingang voor beetje goede inbrekers).
Maar het is wel goed nieuws dat de kernel relatief heel weinig fouten heeft, weer een pluspuntje voor het vele-ogen-vinden-veel-bugs principe waar linux en vele andere opensource projecten op draaien.

Goed geschreven software != veilige software.

Een perfect geschreven virus is dus echt niet veilige software :)
De code is alleen geod, de werking doet ook zoals zou kunnen verwachten. Alleen wat die werking is, daar kan dit programma niets over zeggen.

Precies! Telnet is feilloos geschreven, maar is by-design niet wenselijk, omdat deze alles clear text over het netwerk gooit.

Idd, maar het is wel zo dat veel programmeerfouten leiden tot veiligheidsgaten. Een voorbeeldje is de bekende buffer overflow.
Als je 'goeie' code hebt, heb je dus toch al 1 soort veiligheidsgaten minder.

Volgens mij is je OS goed als het veel gebruikt wordt, om de reden dat het makkelijk en goed werkt en zo.
Nee, dan is het populair.
Dat zegt meer over marketing dan technische kwaliteit (in dit geval).

En als een app of computer crasht, dan lijkt me dat je dat als eindgebruiker toch wel wat kan schelen.

Een goed gebouwde auto hoeft niet veilig te zijn. Als bv. de vakkundig gemonteerde brandstof tank direct naast de even vakkundig gemonteerde accu onder de bestuurdersstoel zit, wil dat niet zeggen dat je een veilige auto hebt...

Maar toch is dat nog altijd veiliger dan een slecht gemonteerde lekkende brandstoftank die precies boven de accu hangt die slecht geisoleerd is en waar de draadjes te dicht bij elkaar zitten, terwijl boven dat geheel het asbakje met een gat erin gemonteerd is.

Volgens mij is je OS goed als het veel gebruikt wordt, om de reden dat het makkelijk en goed werkt en zo.
Een OS is pas "goed" als het doet waar je het voor wilt gebruiken!
Ieder OS heeft zijn sterke en minder sterke punten.
Dat dat maakt werkelijk geen h.l uit of dat nu Windows, Linux, OpenVMS, Tru64 of wat dan ook is!
Als ik 2500 interactieve gebruikers heb die ivm met een appl rechtstreeks een verbinding met die machine nodig heeft (dus geen client-server toepassing) dan zijn OS'en als OpenVMS en Tru64 veel beter als Windows.
En op andere punten is Windows weer sterker!
Kijk naar wat je er mee wilt doen! Niet hoe bekend of goed je het zelf kent.

Iedere bugfix brengt weer andere bugs aan het licht en introduceert soms nieuwe. Er is een of andere rekensom voor...

Ja, die heet de Wet op Behoud van Ellende, en houdt min of meer in dat als jij problemen op gat lopen lossen de rwereld er voor zorgt dat het toch weer ergens mis gaat...

De oorlog Windows vs. Linux deel 84 kan beginnen.

En jij helpt daaraan mee, zeg dan liever niks meer ....

Het zou helemaal mooi zijn als een systeem dit zelf deed en een programma alleen laat uitvoeren indien deze 'goedgekeurd' is. Een extra check voor de programmeur dus.

De nieuwe generatie Intel processoren gaan deze features die jij beschrijft zelfs HARDWAREMATIG doorvoeren :)

deze features die jij beschrijft
Nee, die processors voeren alleen een zeer beperkt aantal controles uit.

Intel processoren checken de brondcode van de programma's die ze draaien?

Als je alle warnings in talen zoals bijvoorbeeld delphi en php ook weg wil werken moet je soms een hele omweg maken voor iets dat gewoon toegestaan is om te doen.

Soms zit zo'n "fout" er bewust in.

Nee hoor, bijna alle warnings zijn terecht. En als iets excpliciet zo moet (e.g. range overflow: MaxInt+=1) dan moet voor dat stuk code de error checking voor dat stuk uitzetten. Als je dat doet is de beslissing gedocumenteerd (en er meestal dus over nagedacht).
In Delphi heb ik altijd alle warnings aan staan, en in PHP vaak ook.
Warnings zijn daar voor een reden.

De enige warnings die niet super boeiend zijn, zijn bevoorbeeld "unused variable\value" warnings. Dat is alleen maar geheugen optimalisatie.

Idd, bij mij gaat er geen code buiten waar er warnings en/of hints inzitten.

Trouwens, ik stel me toch wel vragen bij dat onderzoek. Die software zal wel zeker niet alle 'fouten' of 'mogelijke fouten' eruit halen. Ik denk dat we die software een beetje moeten beschouwen ala FxCop van MS.
Die gaat gewoon de broncode gaan inspecteren op allerhande 'rules'. Als er aan een bepaalde rule niet voldaan wordt, dan wordt dit gemeld. Echter, dit wil daarom niet zeggen dat je daarmee de logische fouten eruithaalt.

Dit gebeurt min of meer al,

Stel je hebt een patch voor de VM dan wordt die bv gereviewed door een kapitein zoals Ingo Molnar als deze hem goedkeurt dan gaat hij voor goedkeuring naar Linus. Bij kernel 1.x wilde code nog wel eens meteen opgenomen worden maar die dagen zijn voorbij.

...stelt de CEO Seth Hallem dat er genoeg over de fouten in Windows gezegd is om te kunnen besluiten Linux minstens even goed is als het besturingssysteem uit Redmond
Your point being? Persoonlijk vind ik dit maar een flutstelling namelijk.

Systeem 1 hebben we onderzocht en we kunnen daarvan besluiten dat het relatief veilig en kwalitatief is.

Tot daar aan toe. Maar dan zeggen dat je systeem 2 wel niet kon onderzoeken maar "dat het wel zo onveilig en slecht zal zijn als beweerd wordt" getuigt niet echt van enige objectiviteit en professionaliteit.

Zelfs àls die stelling klopt, dan is ze nog zo knullig geformuleerd dat ze de geloofwaardigheid van heel dat bedrijf onderuit haalt imo

De resultaten: http://linuxbugs.coverity.com/linuxbugs.htm
(natuurlijk niet wat er fout is enzo, waarschijnlijk moet Linus dan eerst een licentie aanschaffen ;) )

edit: dit was geen reactie op Yoeri maar op jurrian, komt vast door een NULL pointer fout in mijn hoofd.

> linuxbugs.htm

.htm? Draaien ze daar nog Windows 3.11?

het voldoet iig niet aan de 8.3 naming conventie.
linuxbugs.htm is namelijk 9.3

(natuurlijk niet wat er fout is enzo, waarschijnlijk moet Linus dan eerst een licentie aanschaffen )
Volgens Slashdot-commentaar waren de betreffende bugs al naar de kenrel maintainers opgestuurd, en waren een flink aantal (enkele tientallen procenten) al opgelost in nieuwere versies.

Overigens jammer dat de samenvatting niet noemt dat de zwaarte van de bugs allerzins meeviel. Zie artikel voor meer info.

dat staat er toch niet?
Er staat: "dat er genoeg over de fouten in Windows gezegd is om te kunnen besluiten Linux minstens even goed is als het besturingssysteem uit Redmond"
dit wil zeggen dat Linux (welke goed door de test komt) een waardig alternatief is voor Windows en zegt dus eigenlijk niks over Windows

Er wordt een waardeoordeel over Windows gegeven (Windows <= Linux) zonder er ook maar naar gekeken te hebben, enkel op basis van een variant op "iedereen zegt dat Windows fouten heeft dus het zal wel zo zijn". IMHO dus niet serieus te nemen.

als ms zich wilt bewijzen zouden ze ook hun source-code door die software moeten laten testen, maar ze willen dit blijkbaar niet, zouden ze schik hebben? :-)

Ik ben benieuwd of de gevonden fouten ook netjes gerapporteerd worden. Dat zijn meteen weer 985 fouten minder.

* 786562 jurrian

Indien ze opgelost worden en er daarbij geen nieuwe fouten geintroduceerd worden.

Het was leuk geweest als ook FreeBSD bekeken was, dat schijnt het meest veilige besturingssysteem te zijn.
... ook zonder de broncode zelf te analyseren.
Er is van Windows toch een deel van de broncode uitgelekt? Als dat ook 5,7 miljoen regels code zijn, dan zouden ze die kunnen testen, maar dat zal wel illegaal zijn.

OpenBSD is veiligste OSS OS, maar Free komt vooral kwa kwaliteit van de code erg hoog denk ik (lees hoog als in weinig fouten).

blablabla

Het feit dat er net zo goed als Linux en FreeBSD veel fouten worden gevonden in de kernel, en de userspace software idem is, en de beveiligings mechanismen ook voor Linux en FreeBSD beschikbaar zijn... slaat dit nergens op.

De gebruiker kan OpenBSD ook onveilig maken (iets installeren waardoor het ook echt wat doet).

Het feit dat de gebruikersdatabase voornamelijk bestaat uit mensen die het als firewall draaien, geeft mij niet echt de hoop dat het beter is als Linux, alleen bij sommige mensen wel de illusie. (Het aantal remote holes in default install is natuurlijk gewoon goedkope marketing)

De gebruiker kan OpenBSD ook onveilig maken (iets installeren waardoor het ook echt wat doet).
Kwaak kwaak kwaak. In tegenstelling tot Linux zijn de BSD's niet alleen maar een kernel maar volledige systemen. Een standaard installatie doet al redelijk wat hoor. Hij kan, in tegenstelling tot Linux, bijvoorbeeld booten, maar daarnaast heb je standaard allemaal internet services die je alleen maar aan hoeft te zetten. Je kunt bijvoorbeeld remote inloggen (openssh komt zelfs bij openbsd vandaan), en verder ftp server, mail server, internet time server etc. En nee, KDE is inderdaad geen onderdeel van het basissysteem, dat installeer je gewoon los.

En dat aantal remote holes is inderdaad goede marketing maar zeker geen goedkope marketing. Ik zou zeggen: werk eens een tijdje met een BSD systeem voordat je dit soort onzin uitkraamt, want je hebt het blijkbaar nog nooit gebruikt.

Oh god, meneer wil ook wat zeggen...

Uiteraard bedoel ik met Linux een Linux distribute, mierenneuker.

Daarbij, Linux als kernel heeft ook gewoon een bootloader, dd een linux kernel maar op een flop.

Standaard draaien de services niet... dus dat je dan geen remote holes hebt is wel erg goedkoop. Overigens is dit bij Gentoo Linux ook (en vast nog wel wat andere distros).

En, ja ik heb BSD vaak genoeg gebruikt (Wat ik hiervoor zei is gebaseerd op ervaring en expertise niet door te geloven wat er op een populair mailinglijstje wordt gezegd). Jij bent blijkbaar een BSD gebruiker met een roze bril op en een veer in je reet.

Er is van Windows toch een deel van de broncode uitgelekt? Als dat ook 5,7 miljoen regels code zijn, dan zouden ze die kunnen testen, maar dat zal wel illegaal zijn.
Nee hoor, zolang ze zich maar aan een paar simpele regels houden:
niet naar buiten brengen wat de broncode is, en niet naar buiten brengen dat ze die broncode hebben }>

Dit zegt natuurlijk helemaal niets over de mate waarin de software voldoet aan de vereiste functionaliteit, en of het gebruiksvriendelijk en dergelijke is. Wel zegt het wat over de kunde van de programmeurs van het besturingssysteem.

Wel zegt het wat over de kunde van de programmeurs van het besturingssysteem.
Nee, ook daar zegt het niets over. De programma's van de ene programmeur kunnen namelijk fouten veroorzaken in een ander programma. Daarnaast kunnen programmeurs ook fouten maken onder tijdsdruk e.d. (het zijn tenslotte af en toe net mensen... :) )

Dat is wel over heel dun ijs gaan.
Stellen dat de fouten statistisch er in moeten zitten... Gemiddeld 5000 fouten...

En dan zeggen dat dat in Windows ook het geval is?
Gedurfd!

Zijn het wel bugs? Spreek liever over "features" !

ik weet niet of het 100% klopt maar wat ik tot nu toe al heel wat keren gehoord heb is dat een goede (en dan bedoel ik echt goede) programeur ongeveer 1 fout per 1000 regels code maakt.
en aangezien 5000 fouten keer 1000 regels code nog steeds 5.000.000 is zou dit best eens een redelijke aanname kunnen zijn

Wat ik mij afvraag is hoeveel fouten er in de software zat met welke ze deze check hebben gedaan.
Bovendien worden alleen programmatuur in C* gecontroleerd. Ik weet niet hoeveel van linux/unix nog in andere talen is geprogrammeerd, maar het kan nooit geheel volledig zijn. Bij een vergelijking met andere OS'en moet je dus wel critisch blijven bekijken!

@ beezzthing:
Kijk, als ze in alleen de linux kernel al bijna 1000 fouten gevonden hebben is het natuurlijk wel een beetje flauw om het dan te vergelijken met windows of freebsd, aangezien die niet allleen uit een kernel bestaan.
Uit het verhaal is inderdaad niet duidelijk te halen wat ze nu precies hebben onderzocht, maar het lijkt me toch wel redelijk om dan een heel OS te onderzoeken. Als ze dat niet gedaan hebben is het wel degelijk een incompleet onderzoek.
Het feit dat dit niet echt duiddelijk is geeft alleen maar aan dat mijn waarschuwing "critisch blijven kijken" op zijn plaats is!

*edit*
Ook wat typfoutjes weggehaald

Linux is de kernel. De kernel wordt geprogrammeerd in C aangevuld met Assembly als het om snelheidsredenen nodig is.
Nee, inderdaad niet compleet, maar niet zo incompleet als jij suggereert.

Ze kunnen het natuurlijk ook over enkel de windows-kernel hebben...
"stelt de CEO Seth Hallem dat er genoeg over de fouten in Windows gezegd is om te kunnen besluiten Linux dat minstens even goed is als het besturingssysteem uit Redmond, ook zonder de broncode zelf te analyseren."
Ik weet dat uitspraken zoals deze nogal uit de lucht gegrepen zijn.

Echter, het simpele feit alleen al dat er een deel van IIS 6 (bij windows 2003) in de kernel zelf zit (om het sneller te maken) doet mij toch wel vermoeden dat die kernel meer fouten per regel zal bevatten...

Hoe je het ook draait of keert, een webserver (gedeeltelijk) in de kernel programmeren is wegens vele redenen enkel maar paniekvoetbal te noemen.

Bij linux heb je de 'tux' een http accelerator die ook in de kernel zit indien gewenst. Deze dient bij een request van static bestanden, zoals plaatjes of html bestanden het zelf af te handelen, komt er een request naar een dynamisch bestand, asp of php of iets dergelijks, stuurt ie de request door naar de eigenlijke webserver zoals apache, die een static request langzamer kan afhandelen dan 'tux'.

Natuurlijk heb je bij linux weer de keus of je er gebruik van wil maken of niet, zover ik weet hebben alle distro's 'tux' neit standaard in de kernels zitten.

'Tux' zit trouwens standaard bij een vanilla kernel.

En dan nog wordt het per zoveel regels code vergeleken, en niet per alles. Ik weet niet precies hoeveel regels code de Linux kernel heeft en ook niet hoeveel regels daarvan commentaar zijn(in ieder geval een paar flinke boeken vol commentaar ;)) maar het is echt wel op een eerlijke manier vergeleken.

Ook vraag ik me af hoe ze dat programma hebben geschreven. D'r zijn limieten aan wat je met een programma kan detecteren: terminatie is zo'n geval dat niet met een machine te bepalen is.

En ja, een correctheidsbewijs van het controlerende programma zou wel op zijn plek zijn. :Y)

Volgens een onderzoek van de Carnegie Mellon University zouden besturingssystemen gemiddeld 5000 fouten
Ik vraag me af welk besturingssysteem ze hier als referentie genomen hebben

Simpele ervaringsfeiten waarschijnlijk. Neem een stuk software en kijk hoeveel fouten er gemiddeld in een kleine maar representatieve sample zitten (code inspectie ofzo).
Je kan ook naar bugreports kijken en hoe die zich gedragen over een periode van meerdere jaren. Op basis daarvan kan je extrapoleren naar het totaal aantal fouten.
Met dit soort technieken kan men het percentage fouten schatten in een bepaald type software (business software, embedded software, operating system software, enz.). Als je de grootte van Linux vermenigvuldigt met het fouten percentage krijg je vanzelf het aantal fouten.
Merk op dat dit echte fouten zijn en niet de programmeer schoonheidsfoutjes zoals die door Coverity geraporteerd worden.
«  1  2  3  »

Op dit item kan niet meer gereageerd worden.

Volgende 12:02 Sony HDPS-M1 voor foto-opslag gearriveerd in Nederland
Vorige 11:24 Intel en HP beëindigen Itanium-alliantie
VNU Media logo Hosted by True

© 1998 - 2012 Tweakers.net B.V. - Alle rechten voorbehouden - Contact - Jouw privacy - Algemene Voorwaarden

Uitgever van:

Website van het jaar 2011