[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[RFR] man://manpages-de/man2/ptrace.2 (Teil 8)



Hallo Mitübersetzer,
und angehängt Teil 8 mit der Bitte um konstruktive Kritik.

Vielen Dank & Grüße

      Helge

-- 
      Dr. Helge Kreutzmann                     debian@helgefjell.de
           Dipl.-Phys.                   http://www.helgefjell.de/debian.php
        64bit GNU powered                     gpg signed mail preferred
           Help keep free software "libre": http://www.ffii.de/
#. type: IP
#, no-wrap
msgid "6."
msgstr "6."

#
#. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
#. type: Plain text
msgid ""
"If access has not been denied by any of the preceding steps, then access is "
"allowed."
msgstr ""
"Falls der Zugriff in den vorhergehenden Schritten nicht verweigert wurde, "
"dann wird er erlaubt."

#. type: SS
#, no-wrap
msgid "/proc/sys/kernel/yama/ptrace_scope"
msgstr "/proc/sys/kernel/yama/ptrace_scope"

#.  commit 2d514487faf188938a4ee4fb3464eeecfbdcf8eb
#. type: Plain text
msgid ""
"On systems with the Yama Linux Security Module (LSM) installed (i.e., the "
"kernel was configured with B<CONFIG_SECURITY_YAMA>), the I</proc/sys/kernel/"
"yama/ptrace_scope> file (available since Linux 3.4)  can be used to restrict "
"the ability to trace a process with B<ptrace>()  (and thus also the ability "
"to use tools such as B<strace>(1)  and B<gdb>(1)).  The goal of such "
"restrictions is to prevent attack escalation whereby a compromised process "
"can ptrace-attach to other sensitive processes (e.g., a GPG agent or an SSH "
"session) owned by the user in order to gain additional credentials that may "
"exist in memory and thus expand the scope of the attack."
msgstr ""
"Auf Systemen, auf denen das Yama Linux Security Module (LSM) installiert (d."
"h. der Kernel mit B<CONFIG_SECURITY_YAMA> konfiguriert worden) ist kann die "
"Datei I</proc/sys/kernel/yama/ptrace_scope> (verfügbar seit Linux 3.4) zum "
"Einschränken der Nachverfolgung von Prozesse mit B<ptrace>() verwandt werden "
"(und damit auch die Möglichkeit, Werkzeuge wie B<strace>(1) und B<gdb>(1) zu "
"verwenden). Das Ziel einer solchen Einschränkung besteht darin, "
"Angriffseskalationen zu vermeiden, bei denen ein kompromitierter Prozess "
"sich mittels Ptrace an andere sensitive Prozesse (z.B. einem GPG-Agenten "
"oder einer SSH-Sitzung), die dem Benutzer gehören, anhängen könnte, um "
"zusätzliche Berechtigungsnachweise zu erlangen, die im Speicher existieren, "
"und damit den Umfang des Angriffs zu erhöhen."

#. type: Plain text
msgid "More precisely, the Yama LSM limits two types of operations:"
msgstr "Genauer gesagt begrenzt die Yama LSM zwei Arten von Aktionen:"

#. type: Plain text
msgid ""
"Any operation that performs a ptrace access mode B<PTRACE_MODE_ATTACH> check"
"\\(emfor example, B<ptrace>()  B<PTRACE_ATTACH>.  (See the \"Ptrace access "
"mode checking\" discussion above.)"
msgstr ""
"Jede Aktion, die eine Ptrace-Zugriffsbeschränkungsüberprüfung "
"B<PTRACE_MODE_ATTACH> durchführt – beispielsweise B<ptrace>() "
"B<PTRACE_ATTACH>. (Siehe die obige Diskussion »Ptrace-"
"Zugriffsmodusüberprüfung«)."

#. type: Plain text
msgid "B<ptrace>()  B<PTRACE_TRACEME>."
msgstr "B<ptrace>() B<PTRACE_TRACEME>."

#. type: Plain text
msgid ""
"A process that has the B<CAP_SYS_PTRACE> capability can update the I</proc/"
"sys/kernel/yama/ptrace_scope> file with one of the following values:"
msgstr ""
"Ein Prozess, der über die Capability B<CAP_SYS_PTRACE> verfügt, kann die "
"Datei I</proc/sys/kernel/yama/ptrace_scope> mit einem der folgenden Werte "
"aktualisieren:"

#. type: TP
#, no-wrap
msgid "0 (\"classic ptrace permissions\")"
msgstr "0 (»klassische Ptrace-Berechtigungen«)"

#. type: Plain text
msgid ""
"No additional restrictions on operations that perform B<PTRACE_MODE_ATTACH> "
"checks (beyond those imposed by the commoncap and other LSMs)."
msgstr ""
"Keine zusätzlichen Beschränkungen bei Aktionen, die B<PTRACE_MODE_ATTACH>-"
"Überprüfungen durchführen (die über die von Commoncap und anderen LSMs "
"hinausgehen)."

#. type: Plain text
msgid "The use of B<PTRACE_TRACEME> is unchanged."
msgstr "B<PTRACE_TRACEME> wird unverändert verwandt."

#. type: TP
#, no-wrap
msgid "1 (\"restricted ptrace\") [default value]"
msgstr "1 (»eingeschränkter Ptrace«) [Vorgabewert]"

#. type: Plain text
msgid ""
"When performing an operation that requires a B<PTRACE_MODE_ATTACH> check, "
"the calling process must either have the B<CAP_SYS_PTRACE> capability in the "
"user namespace of the target process or it must have a predefined "
"relationship with the target process.  By default, the predefined "
"relationship is that the target process must be a descendant of the caller."
msgstr ""
"Wenn eine Aktion durchgeführt wird, die eine B<PTRACE_MODE_ATTACH>-"
"Überprüfung benötigt, muss der aufrufende Prozess entweder über die "
"Capability B<CAP_SYS_PTRACE> in dem Benutzernamensraum des Zielprozesses "
"verfügen oder er muss eine vorbestimmte Beziehung zum Zielprozess haben. "
"Standardmäßig ist die vorbestimmte Beziehung, dass der Zielprozess ein "
"Nachkomme des Aufrufenden sein muss."

#. type: Plain text
msgid ""
"A target process can employ the B<prctl>(2)  B<PR_SET_PTRACER> operation to "
"declare an additional PID that is allowed to perform B<PTRACE_MODE_ATTACH> "
"operations on the target.  See the kernel source file I<Documentation/"
"security/Yama.txt> for further details."
msgstr ""
"Ein Zielprozess kann die B<prctl>(2)-Aktion B<PR_SET_PTRACER> einsetzen, um "
"eine zusätzliche PID zu erklären, der es erlaubt ist, B<PTRACE_MODE_ATTACH>-"
"Aktionen auf dem Ziel durchzuführen. Siehe die Kernelquelldatei "
"I<Documentation/security/Yama.txt> für weitere Details."

#. type: TP
#, no-wrap
msgid "2 (\"admin-only attach\")"
msgstr "2 (»nur Admin-Anhängung«)"

#. type: Plain text
msgid ""
"Only processes with the B<CAP_SYS_PTRACE> capability in the user namespace "
"of the target process may perform B<PTRACE_MODE_ATTACH> operations or trace "
"children that employ B<PTRACE_TRACEME>."
msgstr ""
"Nur Prozesse mit der Capability B<CAP_SYS_PTRACE> im Benutzernamensraum des "
"Zielprozesses dürfen B<PTRACE_MODE_ATTACH>-Aktionen durchführen oder Kinder, "
"die B<PTRACE_TRACEME> einsetzen, verfolgen."

#. type: TP
#, no-wrap
msgid "3 (\"no attach\")"
msgstr "3 (»keine Anhängung«)"

#. type: Plain text
msgid ""
"No process may perform B<PTRACE_MODE_ATTACH> operations or trace children "
"that employ B<PTRACE_TRACEME>."
msgstr ""
"Kein Prozess darf B<PTRACE_MODE_ATTACH>-Aktionen durchführen oder Kinder "
"verfolgen, die B<PTRACE_TRACEME> einsetzen."

#. type: Plain text
msgid "Once this value has been written to the file, it cannot be changed."
msgstr ""
"Sobald dieser Wert in die Datei geschrieben wurde, kann er nicht mehr "
"geändert werden."

#
#. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
#. type: Plain text
msgid ""
"With respect to values 1 and 2, note that creating a new user namespace "
"effectively removes the protection offered by Yama.  This is because a "
"process in the parent user namespace whose effective UID matches the UID of "
"the creator of a child namespace has all capabilities (including "
"B<CAP_SYS_PTRACE>)  when performing operations within the child user "
"namespace (and further-removed descendants of that namespace).  "
"Consequently, when a process tries to use user namespaces to sandbox itself, "
"it inadvertently weakens the protections offered by the Yama LSM."
msgstr ""
"Beachten Sie im Hinblick auf die Werte 1 und 2, dass die Erstellung eines "
"neuen Benutzernamensraums effektiv den durch Yama bereitgestellte Schutz "
"entfernt. Dies rührt daher, dass der Prozess in dem Elternbenutzerraum, "
"dessen effektive UID auf die UID des Erstellers des Kindnamensraums passt, "
"über alle Capabilities (einschließlich B<CAP_SYS_PTRACE>) verfügt, wenn der "
"Aktionen innerhalb des Kindnamensraums (und weiter entfernter Nachkommen "
"dieses Namensraums) durchführt. Wenn ein Prozess versucht, einen "
"Benutzernamensraum zu verwenden, um sich in eine Sandbox zu bringen, wird er "
"konsequenterweise den durch das Yama LSM bereitgestellten Schutz schwächen."

#. type: SS
#, no-wrap
msgid "C library/kernel differences"
msgstr "Unterschiede C-Bibliothek/Kernel"

#. type: Plain text
msgid ""
"At the system call level, the B<PTRACE_PEEKTEXT>, B<PTRACE_PEEKDATA>, and "
"B<PTRACE_PEEKUSER> requests have a different API: they store the result at "
"the address specified by the I<data> parameter, and the return value is the "
"error flag.  The glibc wrapper function provides the API given in "
"DESCRIPTION above, with the result being returned via the function return "
"value."
msgstr ""
"Auf der Systemaufrufebene haben die Anfragen B<PTRACE_PEEKTEXT>, "
"B<PTRACE_PEEKDATA> und B<PTRACE_PEEKUSER> eine unterschiedliche "
"Programmierschnittstelle: Sie speichern das Ergebnis an der durch den "
"Parameter I<Daten> angegebenen Adresse und der Rückgabewert ist ein "
"Fehlercode. Die Glibc-Wrapper-Funktion stellt die oben in BESCHREIBUNG "
"angegebene Programmierschnittstelle bereit. Ihr Ergebnis wird über den "
"Rückgabewert der Funktion zurückgegeben."

#. type: SH
#, no-wrap
msgid "BUGS"
msgstr "FEHLER"

#. type: Plain text
msgid ""
"On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
"different value than the one for 2.4.  This leads to applications compiled "
"with 2.6 kernel headers failing when run on 2.4 kernels.  This can be worked "
"around by redefining B<PTRACE_SETOPTIONS> to B<PTRACE_OLDSETOPTIONS>, if "
"that is defined."
msgstr ""
"Auf Rechnern mit 2.6 Kernel-Headern ist B<PTRACE_SETOPTIONS> mit einem "
"anderen Wert deklariert, als auf einem für 2.4. Dies führt dazu, dass "
"Anwendungen, die mit 2.6-Kernel-Headern kompiliert wurden, bei der "
"Ausführung auf 2.4er Kerneln scheitern. Dies kann durch Neudefinieren von "
"B<PTRACE_SETOPTIONS> zu B<PTRACE_OLDSETOPTIONS> umgangen werden, wenn dies "
"definiert ist."

#. type: Plain text
msgid ""
"Group-stop notifications are sent to the tracer, but not to real parent.  "
"Last confirmed on 2.6.38.6."
msgstr ""
"Gruppenstoppbenachrichtigungen werden an der Verfolger gesandt, aber nicht "
"an den echten Elternprozess. Zuletzt auf 2.6.38.6 bestätigt."

#.  Note from Denys Vlasenko:
#.      Here "exits" means any kind of death - _exit, exit_group,
#.      signal death. Signal death and exit_group cases are trivial,
#.      though: since signal death and exit_group kill all other threads
#.      too, "until all other threads exit" thing happens rather soon
#.      in these cases. Therefore, only _exit presents observably
#.      puzzling behavior to ptrace users: thread leader _exit's,
#.      but WIFEXITED isn't reported! We are trying to explain here
#.      why it is so.
#.   FIXME . need to test/verify this scenario
#. type: Plain text
msgid ""
"If a thread group leader is traced and exits by calling B<_exit>(2), a "
"B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
"subsequent B<WIFEXITED> notification will not be delivered until all other "
"threads exit.  As explained above, if one of other threads calls "
"B<execve>(2), the death of the thread group leader will I<never> be "
"reported.  If the execed thread is not traced by this tracer, the tracer "
"will never know that B<execve>(2)  happened.  One possible workaround is to "
"B<PTRACE_DETACH> the thread group leader instead of restarting it in this "
"case.  Last confirmed on 2.6.38.6."
msgstr ""
"Falls ein führender Thread einer Gruppe verfolgt und durch den Aufruf von "
"B<_exit>(2) beendet wird, wird es für ihn zu einem B<PTRACE_EVENT_EXIT>-"
"Stopp kommen (falls angefordert), aber die nachfolgende B<WIFEXITED>-"
"Benachrichtigung wird nicht gesandt, bis alle anderen Threads beendet sind. "
"Wie oben erklärt, wird der Tod des führenden Prozesses der Gruppe gemeldet, "
"falls einer der anderen Threads B<execve>(2) aufruft. Falls der ausgeführte "
"Thread nicht durch den Verfolger verfolgt wird, wird der Verfolger niemals "
"erfahren, dass B<execve>(2) auftrat. Eine mögliche Notlösung ist ein "
"B<PTRACE_DETACH> für den führenden Thread der Gruppe, anstatt ihn in diesem "
"Fall neu zu starten. Zuletzt auf 2.6.38.6 bestätigt."

#. type: Plain text
msgid ""
"A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
"actual signal death.  This may be changed in the future; B<SIGKILL> is meant "
"to always immediately kill tasks even under ptrace.  Last confirmed on Linux "
"3.13."
msgstr ""
"Ein B<SIGKILL>-Signal kann immer noch einen B<PTRACE_EVENT_EXIT>-Stopp vor "
"dem tatsächlichen Signaltod verursachen. Dies könnte in Zukunft geändert "
"werden; B<SIGKILL> ist dazu gedacht, Aufgaben immer sofort zu killen, sogar "
"unter Ptrace. Zuletzt auf Linux 3.13 bestätigt."

#. type: Plain text
msgid ""
"Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
"delivery was suppressed by the tracer.  (This is very typical operation: it "
"is usually done by debuggers on every attach, in order to not introduce a "
"bogus B<SIGSTOP>).  As of Linux 3.2.9, the following system calls are "
"affected (this list is likely incomplete): B<epoll_wait>(2), and B<read>(2)  "
"from an B<inotify>(7)  file descriptor.  The usual symptom of this bug is "
"that when you attach to a quiescent process with the command"
msgstr ""
"Einige Systemaufrufe kehren mit B<EINTR> zurück, falls ein Signal an den "
"verfolgten Prozess gesandt, die Auslieferung aber durch den Verfolger "
"unterdrückt wurde. (Dies ist eine ganz typische Aktion: Sie wird "
"normalerweise von Fehlersuchprogrammen bei jedem Anhängen durchgeführt, um "
"kein fingiertes B<SIGSTOP> einzuleiten.) Ab Linux 3.2.9 werden die folgenden "
"Systemaufrufe beeinflusst (diese Liste ist wahrscheinlich nicht "
"vollständig): B<epoll_wait>(2) und B<read>(2) von einem B<inotify>(7)-"
"Dateideskriptor. Das übliche Anzeichen für diesen Fehler ist, falls Sie "
"einen ruhenden Prozess mit dem Befehl"

#. type: Plain text
#, no-wrap
msgid "    strace -p E<lt>process-IDE<gt>\n"
msgstr "    strace -p E<lt>Prozess-IDE<gt>\n"

#. type: Plain text
msgid "then, instead of the usual and expected one-line output such as"
msgstr "anhängen, dass Sie statt der erwarteten einzeilige Ausgabe, wie"

#. type: Plain text
#, no-wrap
msgid "    restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
msgstr "    restart_syscall(E<lt>… resuming interrupted call …E<gt>_\n"

#. type: Plain text
#, no-wrap
msgid "    select(6, [5], NULL, [5], NULL_\n"
msgstr "    select(6, [5], NULL, [5], NULL_\n"

#. type: Plain text
msgid ""
"('_' denotes the cursor position), you observe more than one line.  For "
"example:"
msgstr ""
"('_' kennzeichnet die Cursor-Position) mehr als eine Zeile beobachten "
"können, zum Beispiel:"

#. type: Plain text
#, no-wrap
msgid ""
"    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
"    epoll_wait(4,_\n"
msgstr ""
"    clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
"    epoll_wait(4,_\n"

# http://de.wikipedia.org/wiki/Mode-Setting#Mode-Setting_im_User-Space
#. type: Plain text
msgid ""
"What is not visible here is that the process was blocked in "
"B<epoll_wait>(2)  before B<strace>(1)  has attached to it.  Attaching caused "
"B<epoll_wait>(2)  to return to user space with the error B<EINTR>.  In this "
"particular case, the program reacted to B<EINTR> by checking the current "
"time, and then executing B<epoll_wait>(2)  again.  (Programs which do not "
"expect such \"stray\" B<EINTR> errors may behave in an unintended way upon "
"an B<strace>(1)  attach.)"
msgstr ""
"Was hier nicht sichtbar ist, ist, dass der Prozess in B<epoll_wait>(2) "
"blockiert wurde, bevor B<strace>(1) an ihn angehängt hat. Das Anhängen "
"verursachte ein B<epoll_wait>(2), um zum Anwendungsraum mit dem Fehler B<EINTR> "
"zurückzukehren. In diesem besonderen Fall reagiert das Programm auf "
"B<EINTR>, indem die aktuelle Zeit geprüft und dann B<epoll_wait>(2) erneut "
"ausgeführt wird. (Programme, die keine derartigen »verirrten« B<EINTR>-"
"Fehler erwarten, können sich bei einem B<strace>(1)-Anhängen in "
"unbeabsichtigter Weise verhalten.)"

#. type: SH
#, no-wrap
msgid "SEE ALSO"
msgstr "SIEHE AUCH"

#. type: Plain text
msgid ""
"B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), "
"B<gettid>(2), B<prctl>(2), B<seccomp>(2), B<sigaction>(2), B<tgkill>(2), "
"B<vfork>(2), B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"
msgstr ""
"B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), "
"B<gettid>(2), B<prctl>(2), B<seccomp>(2), B<sigaction>(2), B<tgkill>(2), "
"B<vfork>(2), B<waitpid>(2), B<exec>(3), B<capabilities>(7), B<signal>(7)"

#. type: SH
#, no-wrap
msgid "COLOPHON"
msgstr "KOLOPHON"

#. type: Plain text
msgid ""
"This page is part of release 4.09 of the Linux I<man-pages> project.  A "
"description of the project, information about reporting bugs, and the latest "
"version of this page, can be found at \\%https://www.kernel.org/doc/man-";
"pages/."
msgstr ""
"Diese Seite ist Teil der Veröffentlichung 4.09 des Projekts Linux-I<man-"
"pages>. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet "
"werden können sowie die aktuelle Version dieser Seite finden sich unter \\"
"%https://www.kernel.org/doc/man-pages/.";

Attachment: signature.asc
Description: Digital signature


Reply to: