すぐに出発予定この問題、LinuxでSQL Server 2017を起動するためにカーネルをパッチしました。今は進んでいますが、閉鎖しました。
strstr("TracerPid:\t0\n", "TracerPid:") = "TracerPid:\t0\n"
strtol(0x7fe0cf01840b, 0x7ffd380d5eb0, 10, 0) = 0
free(0x7fe0cf018400) = <void>
fclose(0x7fe0cf011980) = 0
getpid() = 3474
getpid() = 3474
getauxval(31, 9, 5, 0x7fe0d034ea67) = 0x7ffd380dcfe0
strncpy(0x7ffd380d5f00, "/opt/mssql/bin/sqlservr", 4095) = 0x7ffd380d5f00
realpath(0x7ffd380d5f00, 0x7ffd380d6f00, 0, 0x7fe0d0323720) = 0x7ffd380d6f00
getpid() = 3474
abort( <no return ...>
--- SIGABRT (Aborted) ---
proc
私は、SQL Serverがフォールバックと同じことを行うために別の魔法を実行することを確認した後、誰もソフトウェアを動作させようとしない「追加のセキュリティ」を信じています。
getauxval(3)
これで、プロセスが追跡されていることを確認するために使用できるかどうか疑問に思います。そうだCAPABILITIES
CAP_SYS_ADMIN
これが可能であることを示してください。CAP_SYS_PTRACE
答え1
私は最初の主張が何かを言っていると信じていますGETAUXVAL()
。
getauxval(31, 9, 5, 0x7fe0d034ea67)
開いている/usr/include/x86_64-linux-gnu/bits/auxv.h
、わかります
#define AT_EXECFN 31 /* Filename of executable. */
だから彼らは実行可能ファイルのファイル名を取得しようとします。実際には、ドキュメントのパス名と以下の例です。この場合、これはターゲットではなくトラッカーのパス名です。それから彼らはrealpath
ルートが同じであることを確認するために電話しました。何が見えますかgetauxval()
、
$ LD_SHOW_AUXV=1 strace sleep 1
AT_SYSINFO_EHDR: 0x7ffd6d96f000
AT_HWCAP: bfebfbff
AT_PAGESZ: 4096
AT_CLKTCK: 100
AT_PHDR: 0x5640b6cad040
AT_PHENT: 56
AT_PHNUM: 9
AT_BASE: 0x7fc9ce4fc000
AT_FLAGS: 0x0
AT_ENTRY: 0x5640b6d09440
AT_UID: 1000
AT_EUID: 1000
AT_GID: 1000
AT_EGID: 1000
AT_SECURE: 0
AT_RANDOM: 0x7ffd6d909669
AT_HWCAP2: 0x0
AT_EXECFN: /usr/bin/strace
AT_PLATFORM: x86_64