symlink.ch
Wissen Vernetzt - deutsche News für die Welt
 
symlink.ch
FAQ
Mission
Über uns
Richtlinien

Moderation
Einstellungen
Story einsenden

Suchen & Index
Ruhmeshalle
Statistiken
Umfragen

Redaktion
Themen
Partner
Planet

XML | RDF | RSS
PDA | WAP | IRC
Symbar für Opera
Symbar für Mozilla

Freunde
Benutzergruppen
LUG Switzerland
LUG Vorarlberg
LUGen in DE
SIUG
CCCZH
Organisationen
Wilhelm Tux
FSF Europe
Events
LinuxDay Dornbirn
BBA Schweiz
CoSin in Bremgarten AG
VCFe in München
Menschen
maol
Flupp
Ventilator
dawn
gumbo
krümelmonster
XTaran
maradong
tuxedo

 
OpenBSD mit vier neuen Security-Technologien
Veröffentlicht durch maol am Freitag 31. Januar, 09:18
Aus der POSIX Abteilung
Security Rafael Obelheiro schreibt auf OpenBSD Journal "Theo has posted on tech@ an interesting report on the security improvements recently committed to OpenBSD-current. [...] Theo's post is archived at the MARC archives" Es handelt sich um POSIX Page Protection Schemes, WorX, Readonly Segments, und Propolice, man will damit Buffer Overflows verunmöglichen indem man alle schreibbaren Speicherbereiche non-executable macht.

Leider ist das auf der jetzigen x86er-Architektur (PPC dto.) nur beschränkt möglich - mit dem Hammer sollte es dann aber funktionieren.

Big Blue verliert Festplatte mit 180.000 Kundendaten | Druckausgabe | Linux User Group Aargau (lug-ag) Treffen  >

 

 
symlink.ch Login
Login:

Passwort:

extrahierte Links
  • OpenBSD
  • auf OpenBSD Journal
  • the MARC archives
  • Mehr zu Security
  • Auch von maol
  • Diese Diskussion wurde archiviert. Es können keine neuen Kommentare abgegeben werden.
    Unterscheiden von Daten und Prozessen ! (Score:3, Interessant)
    Von maNic am Friday 31. January, 10:39 MEW (#1)
    (User #341 Info)

    Endlich wird diese eigentlich einfache Regel von jemandem implementiert. Kontrollieren, was vom Kernel als ausführbar gilt.

    Die von-Neumann Architektur mit Daten und Programmen im gleichen Speicher ist genial simpel, aber hat halt eben unter dem Gesichtspunkt der IT-Security entscheidende Schwächen.

    Diese Idee sollte IMHO auch für das Design der 'next generation' Benutzer-Oberfläche/OS benutzt werden: Der Benutzer weiss bei jedem Click, ob er nun etwas ausführt oder nur Daten in ein bereits laufendes Programm überträgt.

    Solange eine Datei nur auf der Disk liegt, kann sie keinen Schaden anrichten, auch wenn es der Code zu Melissa ist. Ein .EXE kann auf einem Linux-Rechner kein Problem sein, weil es keinen 'Interpreter' oder 'Loader' dafür gibt (oh - wie war das mit DOSEMU und WINE ?)

    Es ist also nicht die Datei, die gefährlich ist, sondern erst die Umgebung ('der Wirt') kann eine Datei in etwas gefährliches umwandeln (d.h. von einer Datei zu einem Prozess machen).

    Ich glaube, einen Fortschritt in der IT-Sicherheit erreichen wir erst, wenn auf einer Plattform nur Formate verwendet werden, die entweder Daten oder ausführbaren Code enthalten und dem Benutzer dieses Konzept klar ist.

    Keine aktiven Inhalte in Daten!

    Gebt dem User die volle Kontrolle!

    maNic

    PS: Ich weiss, das Konzept ist noch nicht ganz durchdacht, aber wäre das nicht wenigstens die richtige Richtung?


    Re:Unterscheiden von Daten und Prozessen ! (Score:3, Interessant)
    Von alba7 (alexander.bartolich@gmx.at) am Friday 31. January, 14:25 MEW (#2)
    (User #237 Info) http://fortune-mod-fvl.sourceforge.net/
    > Ich glaube, einen Fortschritt in der IT-Sicherheit erreichen wir erst,
    > wenn auf einer Plattform nur Formate verwendet werden, die entweder Daten
    > oder ausführbaren Code enthalten und dem Benutzer dieses Konzept klar ist.

    Vermutlich spielst du damit auf die Microsoftschen OLE-Container und andere Compound-Formate an. Du hast natürlich recht, dass das Problem der Macro-Viren eigentlich nur mit undurchsichtigen Monstern wie .doc oder .xls ein wirkliches Problem wird.

    Aber das Problem dabei ist die Intransparenz, nicht die Dualität von Daten und Code. Zum Beispiel bietet das Speicherkonzept von OpenOffice den selben Komfort wie MS-Office, aber in einer zugänglichen Form, nämlich getrennte XML-Dateien in einer umhüllenden ZIP-Datei.

    > [...] Keine aktiven Inhalte in Daten!

    $ cat /etc/sysconfig/mouse
    MOUSETYPE="ps/2"
    XMOUSETYPE="PS/2"
    FULLNAME="Generic Mouse (PS/2)"
    XEMU3=yes
    DEVICE=/dev/mouse

    Frage: Sind das jetzt Daten oder ist das Code? Zur weiteren Verwirrung noch etwas Information:

    $ ls -l /etc/sysconfig/mouse
    -rw-r--r-- 1 root root 95 Dec 13 13:24 /etc/sysconfig/mouse

    Antwort: Sowohl als auch.

    Die Init-Scripts von Red Hat lesen die Daten mit ". /etc/sysconfig/mouse" ein (und brauchen deswegen kein Executable-Bit). Für GUI-Konfigurationstools wie mouseconfig ist das Format aber trivial zu lesen und zu schreiben. Und dabei ist dieser Fall noch harmlos gegen /etc/crontab oder /etc/inittab.

    IMHO liegt in der Fähigkeit der iterativen Generierung und Interpretation von Code und Daten die Stärke der Von-Neumann-Architektur. Und IMHO was das auch nie ein Problem, solange die Vorgänge kontrollierbar und nachvollziehbar waren. In der Geschichte von Unix ist mir nur ein Beispiel bekannt, wo dem Anwender diese Kontrolle mutwillig entzogen wurde: shar
    --
    Ich bin ein Teletubby. Und das ist auch gut so.

    Re:Unterscheiden von Daten und Prozessen ! (Score:2, Interessant)
    Von apple am Friday 31. January, 14:35 MEW (#3)
    (User #817 Info)
    # enable wine as .exe interpreter
    modprobe -q -k binfmt_misc
    if [ ! -e /proc/sys/fs/binfmt_misc/register ] ; then
       mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc # for 2.4.11+ Kernels
    fi
    if [ -e /proc/sys/fs/binfmt_misc/register ] ; then
       echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register
    fi

    Wenn dergleichen in deinen init Skripten steht, so kann es dir auch passieren, daß du mit einem Doppelklick auf eine .exe ausversehen einen Windows-virus/wurm startest (welcher nichtmal "unsicher" Daten enthält).

    Desweiteren ist die Schwierigkeit ja, daß Programme ohne Daten und Daten ohne Programme keinen Sinn machen. Wenn man sie in einem Zip zusammenlegt, ist es umständlich. Und überhaupt, ist es gar nicht so einfach, Grenzen zu ziehen... so kann zu "Daten" ja auch ein loop-counter gehören, der bestimmt, wie oft eine Schleife durchlaufen wird oder gar Text, welcher in perl mit eval ausgewertet wird... hat beides seine Gefahren.

    Bernhard M.

    Re:Unterscheiden von Daten und Prozessen ! (Score:2, Interessant)
    Von tL (dave bei control strich alt strich del punkt ze ha) am Friday 31. January, 15:42 MEW (#4)
    (User #981 Info) http://www.control-alt-del.ch
    Vielleicht sollte man ein System einführen wie bei Ruby: Objekte, die von einer unsicheren (tainted) Quelle stammen, sind selber auch als tainted markiert. Strings, die z.B. per gets eingelesen werden, dürfen dann nicht "eval"uated werden. Naja, klar, das ganze in einem kompletten System aufzurüsten ist aufwandmässig kaum zu vertreten.

    Das Problem ist, wie du gesagt hast, dass die Grenze zwischen Code und Daten kaum definiert werden kann. Und ich denke nicht, dass die Separation im RAM etwas bringt, wenn sie dann doch auf der selben Festplatte liegen. Vielleicht würde es etwas brinen, Dateien als Daten oder Programme zu deklarieren (einfach) und vom Betriebssystem aus zu entscheiden, wohin im RAM die Teile gehören. Aber das würde AFAIK die ganze bestehende Struktur umkrempeln, da man so ziemlich jedes Programm ändern müsste.


    tL

    --
    Keine Angst vor M$-Saftware! Ungeladen ist sie völlig harmlos.
    Re: Unterscheiden von Daten und Prozessen ! (Score:3, Interessant)
    Von XTaran (symlink at deuxchevaux dot org) am Friday 31. January, 17:40 MEW (#5)
    (User #129 Info) http://abe.home.pages.de/

    Objekte, die von einer unsicheren (tainted) Quelle stammen, sind selber auch als tainted markiert. Strings, die z.B. per gets eingelesen werden, dürfen dann nicht "eval"uated werden.

    Gibt's in PERL auch: Einfach "perl -T" statt "perl" verwendet. Und schon dürfen "verseuchte" Variablen nicht mehr für system, exec, open, etc. verwendet werden. Dekontaminieren kann man IIRC nur mit m// + $<n> oder s///, da das tainted-Flag am Wert und nicht der Variablen hängt. Sollte man eigentlich in jedem suid- oder CGI-PERL-Skript machen, genauso wie "-w"...


    -- 
    Einer der Gnutella-Klone heißt Gnutoka, und ich frag mich, wann Gnusspli rauskommt...

    Linux User Group Schweiz
    Durchsuche symlink.ch:  

    Never be led astray onto the path of virtue.
    trash.net

    Anfang | Story einsenden | ältere Features | alte Umfragen | FAQ | Autoren | Einstellungen