2016-09-16 17 views
5

R cung cấp các hàm serializeunserialize để chuyển đổi một đối tượng R tùy ý thành vectơ byte và ngược lại.Có phải unserializing vector nguyên không tin cậy được bảo mật trong R không?

Tôi đang xem xét việc unserializing các phần thông tin sẽ được truyền qua mạng, có thể (theo lý thuyết) bị giả mạo bởi người dùng độc hại.

Tôi hiểu rằng người dùng độc hại có thể tiêm một đối tượng R tùy ý có thể chứa đầy mã độc hại. Nhưng đây không phải là những gì tôi đang lo lắng, bởi vì tôi có thể (tôi nghĩ rằng tôi có thể) ngăn chặn mã như vậy từ bao giờ thực hiện bằng cách xử lý cẩn thận của các đối tượng nhận được.

Tôi lo lắng về một lỗi tràn bộ đệm hoặc cách tương tự thực hiện một tùy đang máy trên máy chủ R bởi chỉ thực tế của unserializing bytes bị thay đổi. Có ai nhìn thấy/thực hiện một thử nghiệm lông tơ trên đó?

Tôi không phải là chuyên gia bảo mật và tôi không có phương tiện dễ dàng nào để tự thực hiện phân tích. Nhưng có lẽ ai đó đã làm?

Trả lời

4

Theo hiểu biết của tôi, chưa có đánh giá mã bảo mật rộng rãi về mã nguồn R. Đối với những người ra có nghĩ rằng mối quan tâm của Adam không được bảo đảm Dưới đây là danh sách các Python vulnerabilities, một số trong đó (cho Python thậm chí thường xuyên với CPython) thực sự tràn bộ đệm. R's list là ít và tôi không nghĩ rằng nó là scant do mã R cơ bản là hoàn hảo. (Ngoài ra, thậm chí còn có a singular vulnerability report cho S-PLUS.) Tôi chỉ ra Python vì nó là một môi trường thông dịch được C sử dụng rộng rãi (nghe quen thuộc?).

Một cách nhanh chóng search on R Core's Bugzilla for `"overflow'" hiển thị một số vấn đề mà tất cả những vấn đề này dường như không phải là lỗ hổng/khai thác có liên quan.

Tôi nghi ngờ việc thiếu báo cáo thô tục hoặc nội bộ của R chủ yếu là do không có nhà nghiên cứu bảo mật nào có chu kỳ rảnh rỗi để tham gia và không tổ chức nào yêu cầu thương mại (ít nhất là với mục đích đưa ra các vấn đề công khai vs chỉ sửa chữa nó trong một bản sao riêng của cơ sở mã R là một khả năng nhất định).

Tôi sẽ thừa nhận rằng từ cơ sở trải nghiệm R của tôi có nhiều khả năng là ứng dụng DoS'd từ một tình huống như bạn mô tả hơn là không thành công đối với việc thực thi mã thành công hoặc quá trình leo thang đặc quyền quy trình. Base R có riêng của nó memory management layer/interface trên đầu trang của C thói quen cốt lõi và đội R Core là gần như tôn giáo trong đó sử dụng valgrind. Bây giờ, valgrind không phải là bắt tất cả mọi thứ (nếu nó đã có sẽ không có tràn bộ đệm trong bất kỳ phần mềm) nhưng việc sử dụng nó ở đây kết hợp với quản lý bộ nhớ nói cho tôi một số tiện nghi trong vấn đề này.

Tuy nhiên, việc tìm kiếm rất lướt qua một cái gì đó giống như strlen trong sản lượng cơ sở mã RC hơn 1.000 kết quả (nó cũng có đó là phi n người anh em họ trong các mã cơ sở R và những n phiên bản phi chức năng chuỗi cơ bản là nguồn gốc của nhiều lỗ hổng tràn bộ nhớ đệm). Vì vậy, có phải là có thể, vâng. Khả năng khả năngmức độ nghiêm trọng của bạn là gì? Thêm vào đó trong một chút.

Cơ sở R kết hợp và phụ thuộc vào các thư viện nguồn mở khác và những thư viện này có lỗ hổng có thể khai thác. R lõi (và các nhà cung cấp như AT & T, Microsoft, TIBCO, v.v.) sử dụng (từ kinh nghiệm của tôi) các phiên bản mới nhất (khi được liên kết tĩnh) của các thư viện mã nguồn mở trong bản phát hành nhị phân của chúng (không thường xuyên, nhưng xảy ra nhiều lần trong một năm).R lõi cũng sẽ phát hành các tập tin nhị phân mới bên ngoài cửa sổ khuyến mãi R-devel nếu tình hình được bảo hành (và các nhà cung cấp thường làm theo một cách nhanh chóng). Lưu ý rằng bạn hoàn toàn tự làm nếu bạn quyết định tự biên dịch R với những gì bạn có trên hệ thống của mình.

nhiều gói C/C++ - được hỗ trợ R kết hợp các bản sao của thư viện nguồn mở với chúng. Một trong những dự án "thời gian rảnh rỗi" của tôi (mà tôi không bao giờ có thời gian rảnh rỗi) là theo dõi chúng và chỉ xem các thư viện được bao gồm hết hạn như thế nào. httuv là một ví dụ trong đó thư viện nguồn bao gồm trong gói đó có lỗ hổng nhưng chúng không được tiếp xúc với R vì chức năng trong phần dễ bị tổn thương của mã không phải là thứ mà nó trực tiếp trưng ra thông qua API gói. Tuy nhiên, bạn cần phải quan tâm đến những gói này.

Ngay cả khi không phụ thuộc vào mã nguồn thư viện kết hợp, gói C được hỗ trợ C/C++ là một nguồn nhất định của các vấn đề bộ nhớ tiềm ẩn vì không có yêu cầu mã hóa an toàn cho chúng và chúng thao tác bộ nhớ. Nhóm R Core khuyên bạn nên sử dụng valgrind để kiểm tra gói (đó là một tùy chọn trong R CMD check là ++ gd) nhưng điều đó cũng dựa vào các tác giả viết các ví dụ và thử nghiệm mạnh mẽ, sẽ thực thi mã đủ để kiểm tra điều này. Hầu hết các tác giả gói (bao gồm, đáng buồn thay, tôi) hiếm khi làm điều đó trong kinh nghiệm của tôi.

Có một nguồn tiềm ẩn khác cho các lỗ hổng liên quan đến gói nếu bạn đang sử dụng Windows nhưng tôi không nghĩ rằng bạn đang sử dụng Windows và câu trả lời này đã nằm trong răng.

Vì vậy, hãy quay lại đánh giá rủi ro của bạn (vì đó thực sự là những gì bạn đang làm). Bạn cần phải đưa vào tài khoản một vài điều. Kẻ tấn công đang nhắm mục tiêu R ngay bây giờ. Tôi làm việc trong lĩnh vực an ninh mạng tại một trong những công ty tốt nhất trong biz và không thấy bất cứ điều gì trong cảnh quan diễn viên đe dọa khiến tôi tin rằng có một mục tiêu chung của R. Có thể công ty của bạn được nhắm mục tiêu cụ thể? Vâng. Tôi không biết công ty của bạn làm gì, nhưng tôi nghi ngờ bạn không đủ quan trọng để được nhắm mục tiêu bởi mức độ tấn công cần thiết để tạo ra cuộc tấn công mà bạn đang đặt ra. Bạn thực sự cần phải sử dụng một cái gì đó như OpenFAIR để mô hình hóa các tình huống để thực sự vật lộn với mức độ rủi ro thực sự là dành cho bạn.

Nếu bạn đang chạy trên một máy chủ như bạn nói, và cho biết máy chủ Linux/bsd dựa trên có rất nhiều điều bên ngoài R mà bạn có thể làm để giúp hạn chế tác động của một cuộc tấn công tràn bộ đệm. Những người quá dài để đi vào đây. Nhưng những điều khiển bù trừ sẽ là tốt để xem xét nếu bạn đang quan tâm về toàn bộ điều này như câu hỏi của bạn chỉ ra.

TLDR có vẻ như bạn đang ở trên hệ thống unix-ish và đang truyền các đối tượng R được tuần tự hóa qua dây trong một phân đoạn không bị cô lập trong mạng của bạn. Nếu không biết nhiều hơn về công ty của bạn, nói chung, bạn nói rằng bạn nên cảm thấy khá an toàn khi làm những gì bạn đang làm trừ khi bạn ở trong một ngành có các diễn viên quốc gia nhắm vào bạn. Tôi cũng nghĩ rằng các diễn viên mối đe dọa cho biết có hàng ngàn cách khác để có được sau bất cứ điều gì nó thực sự là họ sẽ được sau khi w/o tập trung vào khai thác quá trình cụ thể của bạn.

Tôi muốn có một số tiện nghi, mặc dù, trong đó Microsoft đã mua Phân tích Cách mạng và đang biến R trở thành công dân hạng nhất. Microsoft có một loạt các tiêu chuẩn và thực hành mã hóa an toàn và hàng đầu và tôi tin rằng nó sẽ được áp dụng cho nhóm R (họ đã tích hợp và xây dựng thương hiệu rất nhanh và tôi nghi ngờ rằng quy trình mã bảo mật đã được áp dụng đầy đủ nhưng chúng phụ thuộc vào R cho phân tích đám mây của họ và biết giá họ sẽ trả cho một sự tiếp xúc rộng rãi). Dù Microsoft kết thúc việc sửa chữa nào thì sẽ quay trở lại nền tảng R (miễn là các lỗ hổng mà họ tìm thấy không nằm trong các phần được tối ưu hóa độc quyền của Microsoft R).

Điều này kéo dài và tôi có thể không giải quyết đầy đủ các thắc mắc của bạn vì vậy hãy yêu cầu làm rõ trong các ý kiến ​​và tôi có thể làm hết sức mình để giải quyết chúng trước khi xem xét câu trả lời "xong". Tuy nhiên, các kudo lớn đối với bạn vì lo lắng về điều này. Bạn tự tin vào bản thân và công ty của bạn.

+0

Đó là tất cả những gì tôi muốn biết. Cảm ơn bạn rất nhiều vì câu trả lời tinh tế và có thẩm quyền. Sẽ nhanh hơn rất nhiều nếu giao thức tùy chỉnh của tôi không phải dịch các tin nhắn thành json! ... –

Các vấn đề liên quan