[Java] Whiteboxtesting: Tools, Methoden etc. gesucht

Hallo,


ich suche Tools, Methoden etc zum Thema Whiteboxtesting. Ich will dabei nicht testen, wie gut das Programm funktioniert, sondern ob und was für Angriffspunkte existieren. Das Programm soll später in einem sicherheitskritischen Bereich arbeiten und darf daher keine auffindbare Schwachpunte aufweißen. Das Programm existiert bereist daher eignen sich Tools und Methoden die während der Entwicklung normalerweiße eingesetzt (JUnit, coveragetests etc) werden eher schlecht.

Ich suche eher Tools, die auf einem Sourcecode basierend Schwachpunkte bzw. Angriffpunkte suchen/testen. Als Ausgangsszenario könnte man es sich so vorstellen: Ein Hacker bekommt Zugang zum SourceCode und versucht nun Schwachpunte zu finden. Was würde dieser für Methoden, Tools etc verwenden? Ich bräuchte für meine Arbeit genau diese Tools bzw. Methoden.


Habe mir schon folgende Angriffspunkte überlegt, die Überprüft werden müssten:
- Fehler durch Pufferüberläufe
- Überprüfung der Eingabeparameter auf Gültigkeit
o Länge (Fehler durch Pufferüberlauf)
o Typ (Fehler durch falscher Typ)
o Inhalt (Einschleusung von Fremdcode, Umgehung von Programmcode)
- Fehlerhandling
o Abfang alle möglichen Fehler
o Wirkung von Fehlern auf Programmablauf
- Auslesen von Einstellungen
o Pfad fest vorgegeben (Auslesen der Properties möglich)


Die Frage ist nun, wie? Womit? Und gibt es noch weiteres was zu Testen wäre? Das Programm muss nämlich so sicher wie nur möglich sein.


Danke schon mal
tipehana
 
Original von tipehana
- Fehler durch Pufferüberläufe

Da bei Java alles in der virtuellen Maschine geregelt wird gibt es dort meines Wissens keine BufferOveflows, wie beispielsweise bei C.
 
Ja ein OutOMemoryError wird da geworfen. Aber mir ist nicht ganz klar was du da testen willst. Der Error kommt und gut ist. Was dann passiert hängt von deinem Error-Handling ab. Der Computer wird jedenfalls nicht abstürzen.
 
das was passiert will ich ja rausfinden... bzw ich will rausfinden, ob das handling des fehlers (falls es das geben sollte) als angriffspunkt dienen kann oder ob es sicher ist
 
wenn du die VM nicht knackst, was bedeuten wuerde das du schon ein Freak in sachen java bist.
Ansonsten muesstest du den Exceptionhandler im der in einem try-catchblcok deklariert wird, umschreiben um das ausnutzen zu koennen, was vorraussetzt das du zugang zum code hast.
btw:
es wird dann eien StackOverflow-Exception geworfen.
mfg

sw33t

//edit:
Gefunden:
zum Debuggen unter Java gibt es 2 professionelle Tools:
JUnit oder der Debugger der in Eclips eingebaut ist.
Kenne sie beide nicht, mache soetwas normalerweise mit Assertions wenn ueberhaupt.
 
solch ein freak bin ich definitiv nicht... leider?!?

will ich ja auch nicht. ich möchte lediglich herausfinden, ob es angriffspunkte am programm gibt und dafür habe ich den sourcecode vorliegen. dafür suche ich tools, methoden etc...
 
Grundsaetzlich gibt es mehrere Moeglichkeiten ein Programm anzugreifen:
1.
Irgendetwas ist schlecht implementiert und du hast dadurch die Moeglichkeit dir einen
Vorteil zu verschaffen.
2.
Du manipulierst die Kommunikation zwischen Programmen legst z.b. die die Pipes anders(also pipes nach DD manier nicht nach Hardwarenmanier;) )
3.
du wechselst das Programm einfach aus nachdem du es veraendert hast.
bei Java koennstest du meinetwegen auch die VM auswechseln welche dann das
Programm ausfuehrt und dir zuspielt aber wie gesagt nur was fuer absolute GURUS.
ansonsten, keine Ahnung,um was fuer ein Programm geht es denn und was wuerdest du ganz gerne machen?
mfg

sw33t
 
das programm ist für das sichere übermitteln von daten verantwortlich.
generell interessiert es mich aber für jedmögliche art von programmen, die mit sicherheit zu tun haben.

was will ich?
ich will testen, ob angriffsmöglichkeiten existieren, mit denen ich egal was erreichen kann. zb. abstürze, beeinflussung des ablaufes oder gar manipulation von daten.


zum guru... meine kenntnisse im programmieren sind nicht sooo umfangreich... daher ists nix mit Vm austauschen etc ;)
 
Das was du machen willst, kannst du schwerlich generalisieren, du kannst hoechstens ein Schemaerstellen nach dem du nach Moeglichkeiten des Angriffes suchst aber mehr auch nciht, der Rest ist von Fall zu Fall unterschiedlich.
mfg

sw33t
 
hm.... okay....


gibt es dennoch tools oder methoden die wenigstens teilaspekte abdecken? auch wenns net alles is, wäre es scho ma ne hilfe...
 
hmmm... :rolleyes:
HMMMM... :rolleyes:
HMMMMMM..... :rolleyes:

ich referiere mal ganz einfach zu dem edit von mir ein paar posts hoeher.
;)
mfg

sw33t
 
der debugger braucht man eh beim entwickeln, ohne den wäre ich scho verzweifelt ;)

JUnit testet nur methoden und werden eigentlich bei der implementierung ebenfalls entwickelt...

alle java - test - tools diesbezüglich sind nicht für meinen einsatz geeignet... leider
 
Ich glaube, Du suchst nach automatisierter Codeanalyse.
Z.B
http://palisade.plynt.com/issues/2005Mar/code-analyzers/
also
http://www.ouncelabs.com/resources/technical-analysis-faq.asp
bzw (Trial verfügbar)
http://www.klocwork.com/products/developerJava.asp
ich musste sowas noch nie nutzen, von daher kann ich leider nicht sagen, ob es frei Verfügbare Analyser für Java gibt.

Dann sollte es noch ein Framework geben, mit dem man Userinput&Co automatisiert testen kann - aber der Name will mir einfach nicht einfallen.
 
ja das ist genau das was ich suche :)


gibt es da vllt. noch ne open source lösung? würde mich jednefalls vollends glücklich machen^^
 
Zurück
Oben