This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

File permission is broken

The software "Beyond Compare" hacks it!
Added by bronzeboyvn over 2 years ago  »  Votes: 1/1

Anh chàng đồng nghiệp nói tôi câu thế này:

"Em thích dùng Beyond Compare để merge code nhất! Chẳng phải lo file permission gì hết, file quyền root em merge cũng được."

Hết hồn chưa? Thằng này nói nhảm à ?
Thế là mình tạo 1 file abc.root quyền root, abc.me quyền của một user bình thường. Dùng Beyond Compare để merge abc.me vô abc.root. Thay đổi nội dung abc.root rồi lưu lại, chạy ra terminal xem, đúng nội dung đã được thay đổi. Hơn nữa, lúc này abc.root thuộc quyền của user khi nãy chạy chương trình Beyond Compare để merge code.
???
Xanh mặt!


Comments

Added by over 2 years ago

Cái chương trình gì đó chạy với SUID được bật thì có thể can thiệp các tập tin của root mà.

Added by bronzeboyvn over 2 years ago

vậy là em không biết vụ này. Thấy dùng các chương trình khác merge code là báo permission, dùng Beyond Compare thấy im ru. Anh cho biết thêm cái vụ SUID với. Sao thấy cái này nguy hiểm quá!
Còn muốn tắt chế độ SUID với Beyond Compare thì làm cách nào anh ?

Added by over 2 years ago

Một chương trình bật bit SUID thì khi thi hành nó có quyền của file's owner. Ví dụ, trên hệ thống Linux có chương trình passwd để thay đổi mật khẩu của người dùng bất kỳ. Thuộc tính của nó như sau:

1 [[email protected] ~]$ ls -la /usr/bin/passwd 
2 -rwsr-xr-x 1 root root 19720 May 28 08:22 /usr/bin/passwd
3    ^
4    |
5    \__ SUID bit

Để ý tới nhóm rwsr đầu tiên. Chữ s cho biết /usr/bin/passwd có bật SUID, và do đó, khi thi hành nó quyền của file's ownerroot. Điều này là cần thiết, bởi vì để một người dùng thay đổi chìa khóa của chính họ, họ cần có quyền cơ bản để truy cập vào cơ sở dữ liệu chìa khóa chung của hệ thống (/etc/passwd chẳng hạn.)

Để đặt quyền cho tập tin /usr/bin/passwd như trên, thì dùng chmod 4755. Muốn bỏ đi thì chỉ việc xài chmod 0755 (hoặc dùng nhiều cách khác nữa.)

Về Beyound Compare: mình chưa thử nó (nên CT coi thử xem nhé): việc nó cài vào hệ thống mà không cảnh báo về SUID là sai các nguyên tắc cơ bản về bảo mật. Em thử tìm các tập tin binary của nó, xác định thông tin về SUID và tắt hết đi là xong :D (Nếu chẳng phải là SUID thì phải có cách khác, anh chưa nghĩ ra :O)

PS: trên blog của HT mình nhớ có bài khá hay về file permission, CT lục tìm đọc nhé.

Added by bronzeboyvn over 2 years ago

blog anh HT có bài về umask, file permission được biểu diễn qua số 3 chữ số [0..7][0..7][0..7], chứ chưa đề cập tới 4 chữ số. Em từng đọc về vấn đề này (chữ số thứ 4 này thể hiện special permission, SUID=4, SGID=2, Sticky bit=1) , nhưng hồi đó không hiểu lắm. Để em lục lại đọc.

Added by bronzeboyvn over 2 years ago

@HT: thanks anh!
@all: file chạy Beyond Compare của root, mà ai cũng được quyền chạy hết.

ls -l /usr/bin/bcompare 
-rwxr-xr-x 1 root root 884 2009-09-18 13:47 /usr/bin/bcompare

Chính hắn!

Added by over 2 years ago

Ổ, vậy là không phải. Mình thấy bcompare vẫn không có bật cờ SUID lên, nghĩa là khi được gọi bởi người dùng, chương trình sẽ không vượt quá giới hạn của người dùng đó.

Vậy, vấn đề trở nên thú vị hơn: tìm ra thủ phạm có cờ SUID

  1. CT xem còn các chương trình nào khác đi kèm với Beyound Compare không? (liệt kê mọi tập tin và cấu hình của nó)
  2. Git/Subversion/... có bật cờ SUID lên không?
  3. Có chương trình merge nào Beyound Compare sử dụng, và nó có cờ SUID không?