it-swarm-vi.com

Tại sao bạn phải là quản trị viên để tạo liên kết tượng trưng trong Windows?

Trong linux mọi người dùng đều có thể tạo symlink, nhưng trong Windows tôi cần một dòng lệnh quản trị, hoặc mklink không thành công. Tại sao vậy?

71
ripper234

Theo mặc định, chỉ quản trị viên mới có thể tạo liên kết tượng trưng, ​​vì họ là những người duy nhất có đặc quyền SeCreateSymbolicLinkPrivilege được tìm thấy trong Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\ được cấp.

Từ Microsoft TechNet: Cài đặt chính sách bảo mật mới cho Windows Vista :

Liên kết tượng trưng (symlink) có thể làm lộ các lỗ hổng bảo mật trong các ứng dụng không được thiết kế để xử lý các liên kết tượng trưng.

23
ordag

Nó không hoàn toàn (xem bên dưới) trường hợp nữa kể từ Windows 10 Insiders build 14972 (cập nhật Windows 10 người tạo ~ 1703).

Tuy nhiên, từ các bình luận bên dưới bài đăng trên blog, mối quan tâm về các vấn đề được đề cập trong các câu trả lời khác vẫn còn đó, và để sử dụng hành vi mới này, bạn cần phải:

  • bật chế độ nhà phát triển trên máy của bạn
  • vượt qua một SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE gắn cờ cho CreateSymbolicLink API
8
MayeulC

Linux có cấu trúc tập tin/người dùng ngăn cách. Điều đó có nghĩa là "chương trình A" không thể thực hiện "nhiệm vụ B" trừ khi nó liên quan đến "không gian đĩa C". Vì vậy, các liên kết tượng trưng không thực sự ảnh hưởng đến bất kỳ điều gì về mặt thâm nhập rủi ro vì toàn bộ HĐH được xác định dựa trên giả định hành động-> cho phép.

Hoặc nói cách khác, việc tạo ra một liên kết tượng trưng không giúp ích gì cho bạn nếu bạn là một hacker không có gì ngoài các quyền cấp thấp. Vì vậy, trên Linux hoặc MacOS, nó không giúp bạn.

Tuy nhiên, trên Windows, bạn không có "chương trình A" chạy chương trình khác ngoài người đã đăng nhập ... vì vậy người đăng nhập có thể thực hiện "tác vụ B" đến bất cứ nơi nào họ thích. Vì vậy, nó DEFINITELY giúp bạn thâm nhập vào cấp độ của các liên kết tượng trưng vì bạn có thể ghi đè các tệp thực thường được tìm thấy với tải trọng lan truyền và ẩn rằng bạn đã làm điều đó.

Vì vậy, nếu không có mức bảo vệ symlink, một vi-rút có thể lây nhiễm cho bạn, chạy khi tải trọng của nó rất nhiều liên kết tượng trưng để chuyển hướng "Explorer.exe "thành giả" exactly-as-windows-made-it-except-with-a-payload Explorer.exe ".

Tại sao bạn lại làm vậy? Thành thật mà nói đó là chìa khóa của vương quốc. Bạn có thể tuyển dụng máy tính đó một cách đáng tin cậy vào một bot về mặt lý thuyết kích hoạt nó trong tương lai, v.v. Có hàng triệu cách tại sao điều này tốt hơn là chỉ "bị nhiễm trùng" bởi vì hầu hết mọi người loại bỏ chúng khi họ nhìn thấy, và điều này có thể bị ẩn đi.

5
Mr Heelis

Tôi tìm thấy lý do khi Vista được ra mắt. Lý do đưa ra cho quản trị viên chỉ là rất đơn giản. Đó không phải là vấn đề bảo mật không xác định, hàng ngàn phần mềm phải được nâng cấp để sử dụng các lệnh gọi API không tồn tại trước khi chúng được thêm vào để tránh lỗ hổng bảo mật khi đi qua các liên kết tượng trưng.

Windows rất dễ bị tổn thương khủng khiếp đối với đua xe liên kết tượng trưng; có nhiều cách để tránh điều này, nhưng hầu như không có ứng dụng nào sử dụng API theo cách như vậy cả. Ngay cả Microsoft cũng không chấp nhận các lỗi bảo mật liên quan đến đua xe liên kết tượng trưng. Tôi chỉ cố gắng báo cáo một ba tháng trước.

4
Joshua

Liên kết cứng và các mối nối thư mục chỉ nằm trong một phân vùng (không thể có một liên kết cứng từ ổ đĩa này sang ổ đĩa khác hoặc thậm chí đến một vị trí mạng).

Mặt khác, SymLinks cũng có thể liên kết từ một nơi trên hệ thống có vẻ "an toàn" đến một vị trí mạng.

1
StefanA