banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận bảo mật Bảo mật cho trang web thực thi file exe người dùng gửi lên  XML
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 24/07/2009 05:23:50 (+0700) | #1 | 187357
vduck
Member

[Minus]    0    [Plus]
Joined: 03/07/2009 18:05:07
Messages: 13
Offline
[Profile] [PM]
Em đang làm một website học lập trình trực tuyến, cho phép người dùng gửi bài lên và website sẽ biên dịch, thực thi để test.
Tuy nhiên em lo rằng sẽ nguy hiểm cho server vì người dùng có thể thực thi tự do file exe. Vì thế có thể chứa mã độc, virus, trojan,...
Có cách nào để chạy một file exe nhưng giới hạn: chỉ cho truy xuất file trong một thư mục xác định, không cho kết nối mạng, không cho sửa registry,...

+ Mọi người thử tìm xem cần phải chặn những gì để file exe đó không phá phách được.
+ Có cách nào để chặn không ?

Kính mong các pro giúp cho smilie
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 29/07/2009 03:41:30 (+0700) | #2 | 187897
vduck
Member

[Minus]    0    [Plus]
Joined: 03/07/2009 18:05:07
Messages: 13
Offline
[Profile] [PM]
1. Website của em chỉ cho người dùng gửi file mã nguồn, em nghĩ sẽ dễ dàng hơn trong việc kiểm tra xem "nó" có phá phách gì không.
2. Em biên dịch mã nguồn bằng FreePascal và GCC, liệu có cách nào kiểm tra chương trình của người dùng ngay từ mã nguồn không ?!
3. Sao lâu thế, chẳng có ai trả lời vậy smilie
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 29/07/2009 05:13:47 (+0700) | #3 | 187901
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
dịch trên môi trường nào ? Windows hay Linux ?
Nguyên tắc là 1 khi đã cho thực thi một mã nhị phân trên bất kì một hệ thống máy tính nào thì đồng nghĩa với việc phá vỡ mọi lớp bảo mật ( binh pháp hay gọi là đánh từ trong đánh ra ).
Việc giới hạn các tác vụ mà một mã lập trình đã được biên dịch có thể thực hiện nằm trong tầm kểm soát của "người viết" và "người dịch" ( Compiler ). Người viết thì bạn cứ việc van xin họ đừng có mà chạy "mã độc" lên hệ thống của bạn rồi cầu trời cho họ ko làm gì bạn smilie
Còn compiler ? Bạn cần can thiệp vào compiler để ngăn compiler dịch ra mã nhị phân các phần mã lệnh mà bạn cho là gây nguy hiểm cho hệ thống. Nghiên cứu thêm về "Trình biên dịch" đây là một môn học các trg ĐH có ngành CNTT đều có dạy qua.
Thân,
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 29/07/2009 07:49:59 (+0700) | #4 | 187921
[Avatar]
H3x4
Member

[Minus]    0    [Plus]
Joined: 02/04/2009 00:03:16
Messages: 242
Offline
[Profile] [PM]
Theo tớ nghĩ đơn giản là nhận file nguồn đó ở website của bạn, rồi gửi nó đến một cái host nào đó, trên đó chạy một cái vmware để cho nó test, tất nhiên là không cho cái máy ảo đó kết nối ra network, cô lập hoàn toàn nó. hà cớ chi phải chạy cái code đó trên cái host chứa website rồi lại mắc công suy nghĩ security cho nó nhỉ smilie
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 29/07/2009 14:24:58 (+0700) | #5 | 187960
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]

xnohat wrote:

Nguyên tắc là 1 khi đã cho thực thi một mã nhị phân trên bất kì một hệ thống máy tính nào thì đồng nghĩa với việc phá vỡ mọi lớp bảo mật ( binh pháp hay gọi là đánh từ trong đánh ra ).
 


Cái nguyên tắc này ở đâu ra vậy bạn?

Một ví dụ đơn giản thôi, mình cho thực thi mã nhị phân bằng quyền của một user bình thường trên một máy tính chạy Linux, thì mã nhị phân đó có tài ba đến đâu cũng không thể phá vỡ mọi lớp bảo mật, chẳng hạn như đọc được nội dung của file /etc/shadow (không kể trường hợp hệ thống máy tính đó có lỗ hổng).

@vduck: bạn thử tham khảo các giải pháp sandboxing, bắt đầu từ đây http://en.wikipedia.org/wiki/Sandbox_(computer_security). Mình nghĩ nếu chạy trên Linux, thì sử dụng Systrace http://en.wikipedia.org/wiki/Systrace là một giải pháp đơn giản và dễ làm nhất.

Dẫu vậy, cái khó nhất khi đụng đến sandboxing là làm sao biết được application được quyền làm gì. Bạn liệt kê được danh sách này thì coi như đã giải quyết được gần xong vấn đề của bạn rồi đó.

Nếu bạn có mã nguồn, thì có một cách đơn giản hơn (và ít an toàn hơn) là lập ra danh sách những keyword nguy hiểm, rồi mã nguồn nào có các keyword này thì cứ từ chối.

-m
http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 30/07/2009 06:51:53 (+0700) | #6 | 188026
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]

mrro wrote:
Cái nguyên tắc này ở đâu ra vậy bạn?

Một ví dụ đơn giản thôi, mình cho thực thi mã nhị phân bằng quyền của một user bình thường trên một máy tính chạy Linux, thì mã nhị phân đó có tài ba đến đâu cũng không thể phá vỡ mọi lớp bảo mật, chẳng hạn như đọc được nội dung của file /etc/shadow (không kể trường hợp hệ thống máy tính đó có lỗ hổng).
 


Nếu bồ bỏ qua vấn đề "trường hợp hệ thống máy tính đó có lỗ hổng" thì bỏ qua reply này cũng được.
Thực tế là không có một hệ thống nào là "không có lỗ hổng". Nguyên tắc xuất phát từ thực tế.
Các mã "Local Exploit" khai thác các lỗi ví dụ như Buffer Overflow chẳng hạn. Có gọi là mã nhị phân có thể "phá vỡ mọi lớp bảo mật" được hay không khi mục đích "get root" hay "gì gì đó" được thỏa mãn thông qua đó ? Bản thân "Linux" cũng là một tập hợp mã nhị phân.
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 30/07/2009 07:17:52 (+0700) | #7 | 188029
Doorkeeper
Member

[Minus]    0    [Plus]
Joined: 20/05/2008 11:37:48
Messages: 74
Offline
[Profile] [PM] [WWW]

xnohat wrote:

mrro wrote:
Cái nguyên tắc này ở đâu ra vậy bạn?

Một ví dụ đơn giản thôi, mình cho thực thi mã nhị phân bằng quyền của một user bình thường trên một máy tính chạy Linux, thì mã nhị phân đó có tài ba đến đâu cũng không thể phá vỡ mọi lớp bảo mật, chẳng hạn như đọc được nội dung của file /etc/shadow (không kể trường hợp hệ thống máy tính đó có lỗ hổng).
 


Nếu bồ bỏ qua vấn đề "trường hợp hệ thống máy tính đó có lỗ hổng" thì bỏ qua reply này cũng được.
Thực tế là không có một hệ thống nào là "không có lỗ hổng". Nguyên tắc xuất phát từ thực tế.
Các mã "Local Exploit" khai thác các lỗi ví dụ như Buffer Overflow chẳng hạn. Có gọi là mã nhị phân có thể "phá vỡ mọi lớp bảo mật" được hay không khi mục đích "get root" hay "gì gì đó" được thỏa mãn thông qua đó ? Bản thân "Linux" cũng là một tập hợp mã nhị phân. 


Chuẩn, theo nguyên tắc thì mọi phần mềm đều do con người code mà ra, mà đã là con người code thì không thể có chuyện không có bug nào cả, code càng nhiều thì càng có bug (câu nói này được chuyển thể một tí từ câu nói của anh LeVuHoang vì mình không nhớ câu nói chính xác).
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 30/07/2009 13:39:14 (+0700) | #8 | 188077
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]

xnohat wrote:

Nếu bồ bỏ qua vấn đề "trường hợp hệ thống máy tính đó có lỗ hổng" thì bỏ qua reply này cũng được.
Thực tế là không có một hệ thống nào là "không có lỗ hổng". Nguyên tắc xuất phát từ thực tế.
Các mã "Local Exploit" khai thác các lỗi ví dụ như Buffer Overflow chẳng hạn. Có gọi là mã nhị phân có thể "phá vỡ mọi lớp bảo mật" được hay không khi mục đích "get root" hay "gì gì đó" được thỏa mãn thông qua đó ? Bản thân "Linux" cũng là một tập hợp mã nhị phân.
 


Hmm, kinh nghiệm cho thấy không nên dây dưa với những topic thế này, nhưng mà lần nào mình cũng cãi lại kinh nghiệm hết trơn :-P.

Mình đồng ý là không có hệ thống nào "không có lỗ hổng", nhưng vấn đề là nếu muốn khai thác lỗ hổng đó thì attacker phải tốn bao nhiêu resource và xác xuất thành công là bao nhiêu.

Còn cứ khăng khăng "hệ thống nào cũng có lỗ hổng có thể bị khai thác để phá vỡ mọi lớp bảo mật" thì cái đó là hoàn toàn rặt lý thuyết, chứ chẳng phải thực tế gì đâu bạn ơi. bởi nếu thực tế nó như thế, thì chắc là thế giới này đã đại loạn, khi mà mọi hệ thống đa người dùng, như các máy chủ Win2K, Linux, Solaris...đều đã bị get root từ lâu.

Giờ mình ví dụ nha, mình có một cái máy. Mình cho bạn xnohat tài khoản root trên đó luôn. Trên máy đó mình có một file dữ liệu, mình sử dụng *một lớp bảo mật* là mã hóa, cho đơn giản, mình chỉ mã hóa file đó bằng AES-256, mode là CTR, sử dụng một cái passphrase và PBKDF2 để tạo key.

Giờ mình cho bạn xnohat chạy mọi loại mã nhị phân mà bạn xnohat có thể chạy được, mình nhờ bạn "phá vỡ lớp bảo mật" này cho mình với. Một cái phá vỡ đơn giản là: bạn học được một thông tin gì đó từ nội dung trước khi mã hóa của file dữ liệu.

-m
http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 30/07/2009 19:53:46 (+0700) | #9 | 188084
pdah
Member

[Minus]    0    [Plus]
Joined: 26/06/2006 20:44:03
Messages: 47
Offline
[Profile] [PM]
Thực ra việc thực thi một đoạn mã do người dùng upload lên không phải là chuyện quá mới nữa rồi, nếu bạn nào đã từng thi ACM hoặc mài dũa trên UVA,SPOJ ... thì sẽ thấy nó chẳng xa lạ chút nào. Nếu theo nguyên tắc "hệ thống nào cũng có lỗi" thì chắc chẳng bao giờ mình có cơ hội được luyện công như thế đâu.

Sử dụng Sandbox là giải pháp và Virtual Machine chỉ là một ví dụ của Sandbox mà thôi. Lúc trước cũng từng thắc mắc như thế này vậy và có tìm đc một cái paper viết ở mức Overview về việc xây dựng một Contest Systems :
http://people.ksp.sk/~misof/publications/attacks.pdf

Một cách khác an toàn và đỡ nhức đầu hơn cho cái system của bạn : thay vì yêu cầu người dùng upload mã nguồn lên, bạn có thể cung cấp một bộ test và yêu cầu họ upload output cho bộ test đó. Đây là cách làm của một số cuộc thi lập trình trực tuyến trong vài năm trở lại đây như IPSC hoặc CodeJam của Google...
Tui tư duy nên tui tồn tại
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 30/07/2009 22:23:32 (+0700) | #10 | 188093
vduck
Member

[Minus]    0    [Plus]
Joined: 03/07/2009 18:05:07
Messages: 13
Offline
[Profile] [PM]
Em cảm ơn các anh nhiều lắm smilie
Cho em hỏi thêm một tí:
1. Nếu dùng máy ảo để chạy file do người dùng upload lên thì phải cài một hệ điều hành riêng phải không ? Nếu thế thì tốn nhiều RAM và CPU lắm phải không ạ ?
2. Em nghe nói KIS 2010 có chức năng tạo máy ảo chạy thử chương trình đúng không ạ. Ai đã dùng thử chưa ạ. Nó có tốn RAM hay CPU không? có bắt mình phải cài HĐH riêng không? ??? Có cách nào dùng tận dụng chức năng này bằng mã lệnh C++ không ?!?!

Thông tin máy chủ: WinServer 2003. IIS, ASP.NET, SQL Server 2000

Hỏi thêm: nếu em dùng một máy khác không phải máy chủ để chạy file exe thì an toàn hơn đúng không ạ ?
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 30/07/2009 22:39:55 (+0700) | #11 | 188095
[Avatar]
H3x4
Member

[Minus]    0    [Plus]
Joined: 02/04/2009 00:03:16
Messages: 242
Offline
[Profile] [PM]

vduck wrote:
Em cảm ơn các anh nhiều lắm smilie
Cho em hỏi thêm một tí:
1. Nếu dùng máy ảo để chạy file do người dùng upload lên thì phải cài một hệ điều hành riêng phải không ? Nếu thế thì tốn nhiều RAM và CPU lắm phải không ạ ? 

Hệ điều hành mà bạn dùng để test nó cần bao nhiêu ram thì tốn nhiêu đó thôi smilie, cũng không nhiều lắm đâu, nhất là Linux, cài một distro nào đó rồi chạy với chế độ command line là tiết kiếm nhất (128 vẫn good)

vduck wrote:

2. Em nghe nói KIS 2010 có chức năng tạo máy ảo chạy thử chương trình đúng không ạ. Ai đã dùng thử chưa ạ. Nó có tốn RAM hay CPU không? có bắt mình phải cài HĐH riêng không? ??? Có cách nào dùng tận dụng chức năng này bằng mã lệnh C++ không ?!?!
 

Mình thấy chức năng này chỉ mới áp dụng thử nghiệm thôi, tốt nhất không nên xài mắc công chức năng này lại sinh ra vấn đề khác

vduck wrote:

Hỏi thêm: nếu em dùng một máy khác không phải máy chủ để chạy file exe thì an toàn hơn đúng không ạ ? 

Tất nhiên rồi smilie
PS:muốn tìm hiểu kĩ hơn về sandbox thì đọc cuốn này:
Virtualization for Security: Including Sandboxing, Disaster Recovery, High Availability, Forensic Analysis, and Honeypotting .
[url]
http://ifile.it/eg27vr0/1597493058.rar
[/url]
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 30/07/2009 22:44:56 (+0700) | #12 | 188096
vduck
Member

[Minus]    0    [Plus]
Joined: 03/07/2009 18:05:07
Messages: 13
Offline
[Profile] [PM]
Quả là khó.
Ai có thể giảng cho em về Sandbox không, em chẳng hiểu nó là cái gì.
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 30/07/2009 22:46:14 (+0700) | #13 | 188097
[Avatar]
H3x4
Member

[Minus]    0    [Plus]
Joined: 02/04/2009 00:03:16
Messages: 242
Offline
[Profile] [PM]
Đọc cái này nè :

http://www.virtualization.info/2006/07/security-by-virtualization.html
[Up] [Print Copy]
  [Discussion]   Bảo mật cho trang web thực thi file exe người dùng gửi lên 30/07/2009 23:00:10 (+0700) | #14 | 188098
pdah
Member

[Minus]    0    [Plus]
Joined: 26/06/2006 20:44:03
Messages: 47
Offline
[Profile] [PM]

vduck wrote:
Quả là khó.
Ai có thể giảng cho em về Sandbox không, em chẳng hiểu nó là cái gì. 


Trong bài đầu tiên bác mrro đã cho bạn cái link về sandbox rồi đấy.
Tui tư duy nên tui tồn tại
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|