Konkrete Kritik an CVSS4
Marc Ruef
Gemeinhin wird unter einem Exploit ein Stück Software verstanden, das für die automatisierte oder semi-automatisierte Ausnutzung einer Sicherheitslücke genutzt werden kann. Im einfachsten Fall wird beispielsweise die IP-Adresse des Zielsystems angegeben und auf diesem durch die angegangene Sicherheitslücke erweiterte Rechte erlangt.
Durch eine statistische Auswertung aktueller Standalone-Exploits sollten Rückschlüsse auf bevorzugte Programmiersprachen gezogen werden. Hierzu wurden die ersten 9’500 Exploits, welche auf der populären Webseite milw0rm.com veröffentlicht wurden (der vermeintliche Tod von str0ke war zum Glück nur ein Hoax), untersucht.
Obenstehende Grafik zeigt die Verteilung der Popularität der einzelnen Programmiersprachen auf. Hierbei ist zu sehen, dass in ANSI C geschriebene Exploits mit 33.66% den ersten Platz belegen. Dicht gefolgt mit 30.01% von in Perl umgesetzten Exploits. Die Popularität dieser klassischen Sprachen ist noch immer – gerade im Security-Bereich – anhaltend. Viele klassische Exploits wurden damit umgesetzt und damit das Verständnis für diese Sprache fest verankert.
Auf Platz drei folgt mit 14.23% – also schon ein bisschen abgeschlagen – die eigentlich eher unerwartete Sprache PHP. Sie wird vorzugsweise im Webbereich eingesetzt und geniesst keinen sonderlich guten Ruf. Immerwieder wird ihr von vermeintlichen “Experten” angedichtet, per se zu Sicherheitslücken zu neigen. Die dann doch überdurchschnittlich hohe Popularität im Exploiting-Bereich dürfte mitunter auf die Einfachheit der Sprache dank der Vielzahl bereitgestellter Funktionen zurückzuführen sein.
Pos | Sprache | Auftreten | Grösse Ø | LOC Total |
---|---|---|---|---|
1. | ANSI C | 33.66% | 7’009 Bytes | 206’449 |
2. | Perl | 30.01% | 4’324 Bytes | 97’485 |
3. | PHP | 14.23% | 7’576 Bytes | 80’053 |
4. | C++ | 7.55% | 3’067 Bytes | 20’051 |
5. | Phyton | 5.35% | 3’691 Bytes | 10’215 |
6. | HTML | 4.24% | 3’825 Bytes | 11’386 |
7. | Shell | 1.75% | 2’221 Bytes | 2’929 |
8. | Java | 1.56% | 2’276 Bytes | 3’208 |
9. | Ruby | 0.88% | 4’403 Bytes | 2’649 |
10. | Pascal | 0.52% | 4’525 Bytes | 226 |
11. | Assembler | 0.20% | 1’834 Bytes | 464 |
12. | Lisp | 0.05% | 1’130 Bytes | 57 |
Abgesehen von HTML als Seitenbeschreibungssprache scheint die restliche Wahl der Programmiersprachen effektiv den Vorlieben der jeweiligen Entwickler zu unterliegen. So ist absehbar, dass Ruby auf Grund seiner Eleganz mittelfristig in die Top 5 kommen wird. Ruby ist sowieso ein Sonderfall, da seit MetaSploit 3.0 sowohl der Core als auch die Exploit-Module in dieser Sprache geschrieben werden und damit einem breiten Publikum die Vorteile im Exploiting-Bereich nähergebracht wurde. In einem Blog-Beitrag des Projekts wird es gar als die bis dato umfassendste Ruby-Entwicklung bezeichnet:
After all, msf is far and away the biggest ruby project on the planet. HD has done an excellent job with the new module format to reduce that initial overhead (…)
Sprachen wie Java, LISP und Pascal scheinen sich hingegen wegen ihrer Schwerfälligkeit oder den veralteten Konzepten nicht für Entwicklungen auf diesem Gebiet anzubieten. Die Seitenbeschreibungssprache HTML ist dann auch ein Sonderfall, denn ihr Auftreten ist wohl einzig und allein auf die in Webbrowsern gefundenen Schwachstellen zurückzuführen. Das Umsetzen anderweitiger Exploits in HTML ist dann eben doch eine eher unpopuläre Ausnahme.
Unsere Spezialisten kontaktieren Sie gern!
Marc Ruef
Marc Ruef
Marc Ruef
Marc Ruef
Unsere Spezialisten kontaktieren Sie gern!