Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Schutz vor BufferOverflows (https://www.delphipraxis.net/22157-schutz-vor-bufferoverflows.html)

Luckie 13. Mai 2004 10:35


Schutz vor BufferOverflows
 
Ich habe mich jetzt mal etwas schlau gemacht über BufferOverflows und wie sie funktionieren. Jetzt wollte ich mal fragen, wie es in Zukunft mit einem Schutz dagegen aussieht. Und zwar Software mäßig vom OS als auch hardwaremäßig. Ich habe mal gehört, dass die Prozessorhersteller da was amchen wollen. Was ist das und wie soll es funktionieren. Desweiteren, sind BufferOverflows auch in .NET möglich?

sakura 13. Mai 2004 10:43

Re: Schutz vor BufferOverflows
 
Zitat:

Zitat von Luckie
Jetzt wollte ich mal fragen, wie es in Zukunft mit einem Schutz dagegen aussieht. Und zwar Software mäßig vom OS als auch hardwaremäßig.

In .NET geht es Softwaremäßig recht gut. Buffer-Overflows kommen ja i.A. durch das unkontrollierte Einlesen von Daten aus einer Quelle, so daß nach dem Buffer für die Daten automatisch der Programmcode überschrieben wird.

.NET schützt den Programmierer dadurch, daß Datenbuffen und Executable Codes strikt in verschiedenen Bereichen mit verschiedenen Rechten liegen. So kann, wenn zu viele Daten eingelesen werden keine Programmcode überschrieben werden, da dieser eh woanders liegt (gilt nur für Managed Code).

Ähnliches will auch Intel machen, wie genau, daß habe ich noch nicht gelesen - keine Zeit :mrgreen:

...:cat:...

Luckie 13. Mai 2004 13:53

Re: Schutz vor BufferOverflows
 
Ich meine ja auch gehört zu haben, dass Intel da was in die CPU integrieren will, bin mir aber nicht mehr sich. Auch wüßte ich gerne, wie dass dann aussehen soll.

dizzy 13. Mai 2004 13:57

Re: Schutz vor BufferOverflows
 
So wie ich das verstanden hatte, geht es um ein Tag für Speicherseiten "NX" (No eXecute). Das soll dann bewirken, dass die Ausfürhung von Code in so getaggten Seiten verweigert wird. Somit lassen sich Code- und Datensegment schon auf niedriger Ebene unterscheiden und behandeln. Stack bekommt nen NX-Tag, und egal wie weit der überläuft, Code kann von dort nicht ausgeführt werden.

Berichtigt mich bitte, wenn ich hier Quatsch erzähle ;)

gruss,
dizzy

Meflin 13. Mai 2004 14:08

Re: Schutz vor BufferOverflows
 
ich häng meine frage einfach hier dran: ich hab zwar gechecked, wie buffer overflows entstehen, aber nicht so ganz, wo die gefahr darin liegt. gehe ich recht in der annahme, dass der überschriebene programmcode dann anstatt dessen ausgeführt wird?

Robert Marquardt 13. Mai 2004 14:15

Re: Schutz vor BufferOverflows
 
.net sichert auf mehreren Ebenen.
In den Sprachen werden sichere und unsichere Operationen unterschieden.
Unsichere Operationen sind erst mal verboten.
Zweitens lauft alles auf einer interpretierten Zwischensprache wie bei Java.
Dort lassen sich natuerlich alle Arten von Checks einbringen.

Das NX-Bit bei CPUs bedeutet das zusatzlich zu den heute vorhandenen Bits read und write ein
execute Bit eingerichtet wird. Code in einer Speicherseite ohne dieses Bit kann nicht ausgefuehrt werden.
Entsprechend richtet das Betriebssystem dann den Stack entsprechend ein.
Da Buffer-Overflows bei Puffern auf dem Stack ansetzen, sind dann die gewoehnlichen
Angriffsmethoden mattgesetzt.

sakura 13. Mai 2004 14:16

Re: Schutz vor BufferOverflows
 
Zitat:

Zitat von Meflin
gehe ich recht in der annahme, dass der überschriebene programmcode dann anstatt dessen ausgeführt wird?

Ja und zwar in dem Sicherheitslevel in dem das Programm läuft. Diese Programm (WebServer, RPC, ...) laufen meist im System-Context. Also volle Rechte. Und das ist nicht so schön, damit lassen sich z.B. Trojaner recht einfach injizieren :shock:

Weitere Details zur Ausnutzung des Bufferoverflows möchte ich an dieser Stelle aufgrund meiner Liebe zur Existenz der DP nicht weiter nennen oder von anderen genannt lesen.

...:cat:...

Meflin 13. Mai 2004 14:19

Re: Schutz vor BufferOverflows
 
ok, dann hab ichs ja doch gechecked...

S - tefano 13. Mai 2004 15:46

Re: Schutz vor BufferOverflows
 
Wegen diesem NX-Bit ne Frage:
Also Code wird nur noch ausgeführt wenn er so ein Bit hat, so weit hab ich das wohl richtig verstanden.
Aber irgendwas fehlt mir da noch, sonst käme mir nämlich nicht der Gedanke warum jemand der einen Wurm schreibt diesem nicht einfach solche Bits verpasst. Oder braucht man dafür spezielle Rechte um solche Bits in seine Programme einzufügen? Oder geht das automatisch? Oder über Zertifikate und Blacklists? Das ist doch dann bestimmt mit Lizensierungsgebühren verbunden oder?

Bis dann,

S - tefano

sakura 13. Mai 2004 15:51

Re: Schutz vor BufferOverflows
 
Zitat:

Zitat von S - tefano
Oder braucht man dafür spezielle Rechte um solche Bits in seine Programme einzufügen? Oder geht das automatisch?

Das geht automatisch. Wenn das OS eine Anwendung lädt, wird diese als eXecutable gekennzeichnet und der Datenbereich halt einfach nicht. Daten können nur in den Datenbereich gelegt werden und bekommen so nie das eXecutable Flag ;)

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz