Tôi đã nhận thấy rằng một số người dùng của tôi đã không nhận được một coredump ở tất cả sau khi bị rơi, ngay cả khi mọi thứ khác trong cấu hình của họ có vẻ chính xác.Giảm quyền ưu tiên root và vẫn tạo ra coredumps
Sau khi đọc các trang core(5) người đàn ông một loạt các lần tôi nhận thấy điểm đặc biệt này:
[A tập tin dump lõi không được tạo ra nếu] Quá trình này được thực hiện một set-user-ID (set -group-ID) chương trình được sở hữu bởi một người dùng (nhóm) khác với ID người dùng thực (nhóm) ID của quá trình.
daemon của tôi không phải là setuid root, nhưng trong rất nhiều cấu hình nó bắt đầu như là người chủ, và nếu file conf xác định tên người dùng, nó giảm đặc quyền, với sự kết hợp thông thường:
setgid(gid);
setuid(uid);
Khi nó thực hiện điều này, coredumps không được tạo ra nữa. Mọi thứ khác trong môi trường dường như là chính xác, loại bỏ những cuộc gọi đó (và ở lại như là người chủ) khiến tôi coredumps như bình thường.
tôi đã cố gắng để thay đổi "thực" uid/gid như trang người đàn ông dường như đề nghị, bằng cách gọi setresgid ít di động/uid mà dường như được gợi ý thường xuyên để thả đặc quyền vĩnh viễn:
setresgid(gid, gid, gid);
setresuid(uid, uid, uid);
Tôi mong rằng để giải quyết vấn đề nhưng ... nó không cải thiện chút nào. Vẫn không có coredumps.
Sooo ... bây giờ cái gì?
mã kiểm tra:
#include <stdlib.h>
int main(int argc, char **argv) {
if (argc > 1) {
setgid(atoi(argv[2]));
setuid(atoi(argv[1]));
}
abort();
}
Cách sử dụng:
./a.out
như bất kỳ người sử dụng chỉ cần hủy bỏ mà không setgid/setuid./a.out 1000 100
(nơi 1000 là uid và 100 là gid) như là root để thả các đặc quyền và xem coredumps không xảy ra.- Tính năng vô ý thưởng: chuyển một tham số, không phải hai, để nhận SIGSEGV thay vì SIGABRT.
Tôi đã thử nghiệm điều này trong vòm linux, centos 6.5 và OpenBSD 5.3
Và người dùng/nhóm không có đặc quyền không vô hiệu hóa các vùng lõi ('ulimit -c' không báo cáo' 0')? –
Vâng, không giới hạn ở cả hai bên. Và chạy nó như một trong hai uid (0 và 1000) mà không có các cuộc gọi setuid/gid kết quả trong coredumps. – dequis
Bạn thực sự phải cụ thể hơn cho loại công cụ này, bản phân phối Linux làm những việc khác nhau ở đây. Đặc biệt, có các module PAM ở ngoài đó, hãy nhớ ubuntu, tương tác với việc tạo ra các bãi lõi. –