• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Programm als anderer Benutzer, Drag & Drop funktioniert nicht

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Ich habe News für Dich: Das ist ein Kernkonzept von Unix: Usertrennung. Unix ist so konzeptioniert.

Ich habe eine News für dich: Es ist kein Konzept der Prozessteuerung. Wenn das nämlich ein Kernkonzept wäre, dann müsste es nicht explizit abgefragt werden, nicht wahr? Ich würde von vorne herein nur meine Prozesse sehen.

Können eigentlich Prozesse verschiedener User dieselbe PID haben? Denke mal über die Antwort nach.

Dein Edit:

Du meinst, es macht Viren so verdammt schwer, wenn Zugriffe auf Prozesse nur beim demselben User funktionieren, jedoch nicht bei Prozessen eines anderen Users? Interessant …
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.522
Ich weiß ja nicht, wo ihr alle wohnt.
Für mich als Nicht-IT-Crack sieht es so aus, als ob es vielleicht sinnvoll wäre, wenn ihr euch mal auf ein Bier zsuammensetzt und klärt, was wirklich Sache ist und uns dann ein gemeinsames Communiqué gebt. Auch wenn da mit drinsteht, worin sich eure Meinungen unterscheiden.
Oder könnt ihr wenigsten mal was verlinken, wo man sich als Laie grundlegende Infos holen kann, worüber ihr überhaupt streitet?
Nicht daß ich euch von eurer wichtigen Diskussion ablenken wollte - aber mehr nd mehr interessiert mich das Thema. Scheint ja nichts so ganz Nebensächliches zu sein.
Wäre schön, wenn wir Laien etwas mitbekämen.
Schließlich habe ich bisher alle drei für mich als hochrelevante und zuverlässige Quellen eingestuft.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Apple beschreibt es ganz gut hier:
The login session acts like a set of walls around a user’s processes, limiting port requests to those in the current login session or root session. Doing so prevents accidental or intentional attempts by processes in a different session to obtain access to the ports in the current login session. In a sense, login sessions are a lightweight firewall around the processes they represent.
Die Ports sind hier keine Netzports, sondern Mach-Ports.
User processes in one login session do not have any inherent access to processes in other login sessions, though. Figure 1 illustrates this relationship.

Alle Prozesse von User A gehören zu seiner Login-Session A.
context_hierarchy_2.gif


Drag & Drop benutzt den Pasteboard-Server des Benutzers. Prozeß A.1 des Users schreibt in den PBS-Prozeß (kann Prozeß A.2 sein hier im Bild) und Prozeß A.3 (bitte hinzudenken) liest aus dem PBS-Prozeß. Auf unterster Ebene passiert diese Kommunikation innerhalb des Rechners auf Mach-IPC. Diese Mach-IPC erfordert bestimmte Mach-Port-Rechte, um Daten (inline oder out of line) zum anderen Prozeß zu senden. Diese Rechte kann der Prozeß jedoch überhaupt nur anfordern, wenn er unter dem gleichen User läuft.

Prozesse sind auf unterster Ebene Mach Tasks. Um einer Mach Task etwas zu schicken, braucht man die entsprechenden Mach Port Rechte. Die werden jedoch abhängig von den Usern, denen die beteiligten Prozesse (Mach Tasks) gehören, gewährt oder eben verneint.

Drag & Drop zwischen Prozessen unterschiedlicher User wird durch das NO im gezeigten Bild verhindert auf allerunterster Systemebene: Prozesse von User A können keine Senderechte zum Datenverschicken an Prozesse von User B beantragen, weil der Kernel auf unterster Ebene (Mach) sagt: NO. User A kann keine Senderechte zum Pasteboard-Server von User B (Prozeß B.2 entspricht dem im Bild) beantragen. Und daher auch nichts zu User B drag_n_droppen.

Die Prozesse der verschiedenen User sind im System auf allerunterster Ebene voneinander getrennt. Sämtliche Copy & Paste oder Drag & Drop-Funktionen zwischen Programmen in Cocoa oder woanders mit sind letztendlich Wrapper um Mach-IPC. Und Mach-IPC trennt die User-Prozesse voneinander.

Und, Amin:

Du siehst auch nur Deine Prozesse. Allerdings haben die Programme zur Prozeßguckerei das S-UID Bit gesetzt und laufen unter root und nicht unter Deinem User, wenn Du sie aufrufst:

-r-sr-xr-x 1 root wheel 134816 May 18 2009 /bin/ps
-r-sr-xr-x 1 root wheel 268144 Jun 26 07:59 /usr/bin/top

Und root sieht alles und erzählt es Dir weiter.

Auch der Activity Monitor benutzt ein kleines Hilfsprogramm, das unter root läuft, um alle Prozesse sehen zu können.

Natürlich ist es für Viren, die sich ja verbreiten möchten, doof, wenn sie sich aus dem Bereich des infizierten Users nicht so einfach auf die anderen User verbreiten können.

Und bezüglich der PIDs habe ich noch eine Überraschung für Dich in Planung.
 
Zuletzt bearbeitet:

Jamsven

London Pepping
Registriert
21.11.07
Beiträge
2.046
Code:
	int pid = [COLOR="Red"]atoi[/COLOR](argv[1]);
Nanana, hier wird nicht mit faulen Lebensmitteln geworfen. :p

Zu dem Thema: Man ist das spezialisiert, selbst der Tanenbaum behandelt IPC nicht so in diesem Detail. Super Thread...
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Und, MacMark, das wird immer noch explizit gefiltert, weil die Prozessliste nicht an der User-Liste hängt. Das ist immer noch keine Aggregation. Übrigens würde ein systemweiter PBS natürlich als root laufen. Als was denn sonst?

Und, MacMark, der PBS trennt das explizit aus Gründen der Funktionalität, weil ein gemeinsames Pasteboard funktional Schwachsinn wäre. Mit Sicherheit hat das immer noch nichts zu tun.

Natürlich ist es für Viren kein auch nur im Entferntesten annehmbares "Sicherheitskonzept", welches nur über User-Grenzen funktioniert.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
… das wird immer noch explizit gefiltert …
Und das ist gut so.

… weil die Prozessliste nicht an der User-Liste hängt.…
User-Prozesse leben in einer Login-Session. Die Login-Session wiederum gehört zu einem authentifizierten User.
Oder andersrum ausgedrückt: UserA meldet sich an und erhält dadurch eine Login-Session. Jeder Prozeß, der von oder für UserA gestartet wird, lebt in dieser Login-Session dieses Users.

… Übrigens würde ein systemweiter PBS natürlich als root laufen. …
Und jeder normale User müßte in diesen Root-Prozeß reinschreiben können dürfen, damit das funktioniert. Ein Traum für Angreifer.

… ist es für Viren kein auch nur im Entferntesten annehmbares "Sicherheitskonzept", welches nur über User-Grenzen funktioniert.

Die User-Trennung auf Prozeß- und Dateiebene ist der Hauptgrund, warum Viren Probleme mit UNIX haben. Wenn ein User sich was holt, können die anderen so gut wie nicht angesteckt werden.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Du hast da einen wichtigen Satz gelöscht, mutmaßlich mit Absicht:

Das ist immer noch keine Aggregation.

Kannst du mir erläutern, warum er dir so unangenehm war, dass du ihn löschen musstest?

Übrigens muss man immer noch nicht in einen Prozess schreiben, um Daten austauschen. Ich kann immer noch deine Beiträge hier lesen, obwohl der Apfeltalk-Server nirgendwo bei mir reinschreibt.

Komische Sache, nicht wahr?

Und die "User-Trennung auf Prozessebene" (eine neue Erfindung von dir), würde gar nicht daran hindern, in Prozesse desselben Users zu schreiben. Das ist mal ein ganz tolles Sicherheitskonzept. Es können nur die eigenen Prozesse angesteckt werden. Na toll!
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Netzwerk-Kommunikation (zwischen Rechnern) benutzt ja auch kein Mach-IPC. Aber Kommunikation zwischen Prozessen (innerhalb des Rechners) benutzt Mach-IPC und schreibt in die Prozesse.

Die Prozesse leben in der Login-Session und die hängt am User. Nenn es aggregiert.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Ne>gm entdeckt riesiges sicherheitsloch in os x

Du weist offensichtlich nicht was Aggregation ist.

Egal, dann mal eben programmiert, ohne jegliche Checks, Fehlerüberprüfungen usw. Einfach mal schnell quick & dirty:

1. Lade den Server herunter
2. Lade den Client herunter
3. Starte den Server auf einem Account. Starte den Client auf dem Account.
4. Gebe etwas in das Textfeld ein und drücke Copy.
5. Wechsele zu einem anderen User und starte den Client noch einmal.
6. Klicke auf Paste.

Boah, was für ein Sicherheitsloch. Ach ja, Root-Rechte braucht man auch nicht.

Was mit IT heute so alles kann, ist schon beeindruckend, nicht wahr, MacMark?
 
  • Like
Reaktionen: below

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Client-Server-Kommunikation läuft nicht über Mach-IPC, auch wenn man die Buttons Copy & Paste nennt. Drag & Drop und Copy & Paste hingegen laufen über Mach-IPC.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Client-Server-Kommunikation läuft nicht über Mach-IPC, auch wenn Du die Buttons Copy & Paste nennst. Drag & Drop und Copy & Paste hingegen laufen über Mach-IPC.
1. Lade den Server herunter. Nenne ihn PBS.
2. Lade den Client herunter. Nenne ihn Mail.App
3. Starte den PBS auf einem Account. Starte Mail.App auf dem Account.
4. Gebe etwas in das Textfeld ein und drücke Copy.
5. Wechsele zu einem anderen User und starte Mail.App noch einmal.
6. Klicke auf Paste.

Ist schon traurig, wenn man drei (?) Tage lang erzählt hat, dass das ein Sicherheitsloch ist und es dann funktioniert. Ich hätte das ja schon am Anfang schreiben können. Dann hätte ich aber nicht so viel Spaß mit dir gehabt.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Du machst kein Drag & Drop und auch kein Copy & Paste, sondern Netzwerk-Kommunikation auf dem gleichen Rechner. Drag & Drop und Copy & Paste hingegen läuft über den PBS und Mach-IPC, die direkt in Prozesse schreibt.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Du machst kein Drag & Drop und auch kein Copy & Paste, sondern Netzwerk-Kommunikation auf dem gleichen Rechner.

Wieso ist das C&P? Man kann Texte kopieren und wieder einfügen.

Drag & Drop kommt übrigens noch, weil ich das wie gesagt für den Unterricht brauche.
 

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Egal, dann mal eben programmiert, ohne jegliche Checks, Fehlerüberprüfungen usw. Einfach mal schnell quick & dirty:

Könntest du bitte den Quellcode zu den Programmen mit ins Zip-Archiv packen? Wie soll man sonst darüber diskutieren können?

Du könntest du Daten ja auch zwischenzeitlich auf deinem Webserver speichern oder so! :)

Und so wie macmark andeutet, hast du überhaupt nicht das implementiert, um das es hier eigentlich geht...
Nen Netzwerk-Port aufzumachen, und dann darüber was zu senden, ist nun wirklich nicht dem Thema hilfreich.
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Könntest du bitte den Quellcode zu den Programmen mit ins Zip-Archiv packen? Wie soll man sonst darüber diskutieren können?

Du könntest du Daten ja auch zwischenzeitlich auf deinem Webserver speichern oder so! :)
Klar könnt ich das. Deshalb hatte ich bereits vor Tagen geschrieben, dass der Datenaustausch nicht über den Speicher funktionieren muss. Schau mal ein paar Seiten zurück. Da steht das schon alles.

Es läuft übrigens nicht über einen Webserver. Du kannst ja deine Verbindung kappen.

Und so wie macmark andeutet, hast du überhaupt nicht das implementiert, um das es hier eigentlich geht...
Es geht genau darum. Bitte informieren! Danke!

Nen Netzwerk-Port aufzumachen, und dann darüber was zu senden, ist nun wirklich nicht dem Thema hilfreich.
Doch, es belegt, dass ein C&P zwischen Prozessen verschiedener User nicht im geringsten gefährlich ist. Jetzt suchst du noch einmal nach meinem ersten Beitrag.

Danke!
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
Noch einmal zur Erinnerung:

Das war die Anforderung:
Bei den verschiedenen Benutzern geht es schon um verschiedene User im System. In Mail von user1 sind meine privaten Mailaccounts eingerichtet und bei user2 die anderen. Damit ich nicht dauernd den Benutzer wechseln muss, wechsle ich im Terminal dann zu user2 und starte als dieser Benutzer Mail ein zweites mal. Mail lädt dann die Mailaccounts und die Einstellungen des user2. Funktioniert sehr gut bis eben auf Drag & Drop und das Clipboard. Aber da müsste es ja irgend eine Lösung geben, oder?
(Aber darum geht es ja gar nicht.)

Das war der Blödsinn als Antwort:
Nein. Die strikte Trennung von Prozessen aus verschiedenem Benutzerkontext ist kein Fehler, sondern eine zwingende Notwendigkeit. Es wäre nicht nur ein schwerer, sondern ein katastrophaler Fehler, wenn das was du da tust tatsächlich so einfach funktionieren würde.
Mal davon abgesehen, dass das was du da machst *absolut* nicht empfehlenswert ist...
...brauchst du für solche Vorhaben zwingend einen unter erhöhten Privilegien laufenden Prozess, der zwischen den verschiedenen Konten makelt. Das kann zB ein selbst aufgesetzter Mailserver mit automatischer Weiterleitungsfunktion sein.

Darauf hatte ich geantwortet, dass es Blödsinn sei. Ich hatte dann auch recht schnell sogar das Beispiel des Webservers genannt.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Client-Server-Kommunikation funktioniert ja auch nicht per Mach-IPC. Drag & Drop schon. Ich hatte Dir schon vor Tagen gesagt, daß Du am Thema vorbeiredest damit.
 

naich

Pomme d'or
Registriert
22.11.08
Beiträge
3.082
Es läuft übrigens nicht über einen Webserver. Du kannst ja deine Verbindung kappen.
Das habe ich auch nicht erwartet :) Ich will aber trotzdem den Quellcode dazu sehen, sonst erübrigt es sich, irgendwas dazu zu diskutieren.

Doch, es belegt, dass ein C&P zwischen Prozessen verschiedener User nicht im geringsten gefährlich ist. Jetzt suchst du noch einmal nach meinem ersten Beitrag.

Darum geht es überhaupt nicht, sondern um IPC zwischen 2 Benutzern, und zwar NICHT über Netzwerkschnittstellen.

Das Copy und Paste zwischen 2 Usern nicht unbedingt gefährlich ist, ist mir schon die ganze Zeit über klar.

Edit:
Darauf hatte ich geantwortet, dass es Blödsinn sei. Ich hatte dann auch recht schnell sogar das Beispiel des Webservers genannt.
Nur darum geht es IMHO überhaupt nicht. Es geht um IPC und nicht um Netzwerk / Webserver-Client-Kommunikation.

Und wie macmark hier erklärt:
Alle Prozesse von User A gehören zu seiner Login-Session A. ...

ist es wohl durchaus korrekt, dass ein Programm unter User B nicht so einfach den Pasteboard-Server des User a benutzen kann.

Dass man den Pasteboard auch als Netzwerk-Server implementieren könnte, und die Programme per http mit ihm kommunizieren, könnte ja man sicher mal so programmieren, aber das wäre mir sicherheitstechnisch ein wenig zu heikel. Und so ist es glücklicherweise auch nicht.
 
Zuletzt bearbeitet: