Stack Clash là gì và tôi có thể làm gì với nó?


27

Tôi đã nghe nói về một lỗ hổng mới có tên Stack Clash, thứ dường như ảnh hưởng đến nhiều hệ thống giống Unix (không chỉ Linux, mà cả BSD, Solaris).

  • Nó là gì? Làm thế nào một lỗi đa hệ điều hành xảy ra?
  • Làm cách nào để bảo vệ hệ thống của tôi?

Câu trả lời:


29

Stack Clash là một khai thác dựa trên một kỹ thuật khá cũ. Bộ nhớ được sử dụng bởi một quá trình được chia thành hai vùng - ngăn xếp và đống . Người ta thường tưởng tượng ngăn xếp tăng dần xuống và đống khi tăng dần lên. Điều gì xảy ra khi một trong hai phát triển đủ để đụng độ với nhau? Tổng quát hơn, điều gì xảy ra khi ngăn xếp phát triển đủ để xâm lấn vào các không gian bộ nhớ không liên quan? Lỗ hổng ban đầu đã 12 tuổi và các nhà phát triển nhân Linux đã sửa nó tạm thời bằng cách sử dụng trang bảo vệ . Tuy nhiên, các nhà nghiên cứu tại Qualys đã tìm cách khai thác điều này mặc dù trang bảo vệ.

Báo cáo của Ars Technica :

Các lỗ hổng Stack Clash đã dần nhận được sự nhận thức rộng rãi, lần đầu tiên vào năm 2005 với phát hiện của nhà nghiên cứu bảo mật Gaël Delalleau và năm năm sau với việc phát hành lỗ hổng Linux của nhà nghiên cứu Rafal Wojtczuk. Các nhà phát triển Linux đã giới thiệu một biện pháp bảo vệ nhằm ngăn chặn các xung đột ngăn xếp, nhưng nghiên cứu ngày nay chứng minh rằng những kẻ tấn công có thể dễ dàng vượt qua biện pháp đó.

Cuộc tấn công bằng chứng khái niệm chính được phát triển bởi Qualys khai thác một lỗ hổng được lập chỉ mục là CVE-2017-1000364. Các nhà nghiên cứu của Qualys cũng đã phát triển các cuộc tấn công sử dụng Stack Clash để khai thác các lỗ hổng riêng biệt, bao gồm CVE-2017-1000365 và CVE-2017-1000367. Ví dụ: khi kết hợp với CVE-2017-1000367, một lỗ hổng cố định gần đây trong Sudo cũng được Qualys phát hiện, người dùng địa phương có thể khai thác Sudo để có được quyền root đầy đủ trên phạm vi rộng hơn nhiều hệ điều hành. Qualys cho đến nay không thể thực hiện mã khai thác từ xa. Ứng dụng từ xa duy nhất mà họ điều tra là máy chủ thư Exim, tình cờ hóa ra là không thể mở rộng. Qualys cho biết họ không thể loại trừ khả năng các khai thác thực thi mã từ xa như vậy tồn tại. Qualys cho biết họ sẽ phát hành các khai thác bằng chứng về khái niệm vào một ngày sau đó,

[...] Nhiều thông tin hơn có sẵn trong tư vấn kỹ thuật chi tiết này từ Qualysphân tích kỹ thuật này từ bảo mật .

Trích dẫn bài viết của LWN về bản sửa lỗi gốc từ năm 2010:

Vì Linux không tách rời các trang stack và heap, nên việc ghi đè trang stack vào một trang heap liền kề là có thể. Điều đó có nghĩa là một ngăn xếp đủ sâu (ví dụ từ một cuộc gọi đệ quy) có thể kết thúc bằng cách sử dụng bộ nhớ trong heap. Một chương trình có thể ghi vào trang heap đó (ví dụ: máy khách X) sau đó có thể thao tác địa chỉ trả về của một trong các cuộc gọi để chuyển đến địa điểm mà nó chọn. Điều đó có nghĩa là máy khách có thể khiến máy chủ chạy mã của việc lựa chọn mã thực thi mã tùy chọn của nó, có thể được tận dụng để giành quyền root.

Mô tả trên áp dụng cho các nhân giống như Unix.

Mặc dù Ars Technica lưu ý một cách giải quyết tạm thời được đề cập trong báo cáo Qualys ("đặt  RLIMIT STACK và RLIMIT_AS cứng  của  người dùng địa phương  và  các dịch vụ từ xa  thành giá trị thấp"), cần lưu ý rằng điều này không nhất thiết phải bảo vệ chống lại việc khai thác này . Cách duy nhất an toàn hiện nay là nâng cấp. Theo phân tích bảo mật:

Cần phải rõ ràng rằng các nỗ lực chỉ sử dụng kernel để giải quyết vấn đề này nhất thiết sẽ luôn luôn không đầy đủ, vì vấn đề thực sự nằm ở việc thiếu thăm dò ngăn xếp. Vì giải pháp thực tế thay thế phụ thuộc vào việc xây dựng lại tất cả vùng người dùng, đây có thể là giải pháp khả thi duy nhất cho tương lai gần.

Điều tốt nhất chúng ta có thể làm bây giờ là nâng cấp kernel lên phiên bản vá.

Khai thác năm 2010 đã sử dụng máy chủ X, cái này sử dụng sudo, cái tiếp theo có thể là bất kỳ chương trình vô số người dùng nào, tại một số điểm, chạy theo các đặc quyền nâng cao.

Qualys chưa công bố bất kỳ mã bằng chứng khái niệm nào cho việc khai thác (họ dự định sẽ làm như vậy vào một ngày sau đó).


Có nhiều Thông báo bảo mật Ubuntu được liên kết với CVE-2017-1000364:

Cũng lưu ý rằng trình theo dõi CVE liệt kê một số kết hợp phát hành / kernel là các bản sửa lỗi đang chờ xử lý.

Nói chung, cách khắc phục đơn giản nhất là cập nhật hệ thống của bạn lên gói kernel mới nhất càng sớm càng tốt.

Các phiên bản kernel có liên quan từ USNs (loại bỏ bằng cách sử dụng for i in {24..35}; curl -s https://www.ubuntu.com/usn/usn-33$i-1/ | pup 'dl:nth-last-of-type(1)'):

Ubuntu 17.04:
linux-image-4.10.0-24-lowflency 4.10.0-24.28
linux-image-generic-lpae 4.10.0.24.26
linux-image-generic 4.10.0.24.26
linux-image-4.10.0-24-generic-lpae 4.10.0-24.28
linux-image-4.10.0-24-generic 4.10.0-24.28
linux-image-lowlatency 4.10.0.24.26
Ubuntu 17.04:
linux-image-4.10.0-1008-raspi2 4.10.0-1008.11
linux-image-raspi2 4.10.0.1008.10
Ubuntu 16.10:
linux-image-powerpc-smp 4.8.0.56,69
linux-image-powerpc-e500mc 4.8.0.56,69
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61
linux-image-4.8.0-56-lowflency 4.8.0-56.61
linux-image-generic 4.8.0.56,69
linux-image-4.8.0-56-generic 4.8.0-56.61
linux-image-powerpc64-emb 4.8.0.56,69
linux-image-virtual 4.8.0.56,69
linux-image-powerpc64-smp 4.8.0.56,69
linux-image-4.8.0-56-generic-lpae 4.8.0-56.61
linux-image-generic-lpae 4.8.0.56,69
linux-image-lowlatency 4.8.0.56,69
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61
Ubuntu 16.10:
linux-image-4.8.0-1040-raspi2 4.8.0-1040.44
linux-image-raspi2 4.8.0.1040.44
Ubuntu 16.04 LTS:
linux-image-powerpc64-smp- lts -utopic 4.4.0.81.87
linux-image-generic- lts - wily 4.4.0.81.87
linux-image-generic- lts -utopic 4.4.0.81.87
linux-image-4.4.0-81-generic-lpae 4.4.0-81.104
linux-image-powerpc64-emb- lts -sinh động 4.4.0.81.87
linux-image-powerpc-e500mc 4.4.0.81.87
linux-image-generic-lpae-lts-xenial 4.4.0.81.87
linux-image-generic-lpae-lts-utopic 4.4.0.81.87
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104
linux-image-powerpc-e500mc-lts- wily 4.4.0.81.87
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104
linux-image-generic-lpae-lts- wily 4.4.0.81.87
linux-image-virtual- lts -sinh động 4.4.0.81.87
linux-image-virtual- lts -utopic 4.4.0.81.87
linux-image-virtual 4.4.0.81.87
linux-image-powerpc64-emb- lts - wily 4.4.0.81.87
linux-image-lowlatency-lts-sinh động 4.4.0.81.87
linux-image-powerpc-e500mc-lts-sinh động 4.4.0.81.87
linux-image-powerpc64-emb 4.4.0.81.87
linux-image-powerpc-smp-lts-xenial 4.4.0.81.87
linux-image-4.4.0-81-generic 4.4.0-81.104
linux-image-powerpc64-smp- lts -sinh động 4.4.0.81.87
linux-image-lowlatency-lts- wily 4.4.0.81.87
linux-image-4.4.0-81-lowflency 4.4.0-81.104
linux-image-generic 4.4.0.81.87
linux-image-lowlatency-lts-xenial 4.4.0.81.87
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.87
linux-image-powerpc64-emb- lts -utopic 4.4.0.81.87
linux-image-generic-lts-xenial 4.4.0.81.87
linux-image-generic- lts -sinh động 4.4.0.81.87
linux-image-powerpc-e500mc-lts-utopic 4.4.0.81.87
linux-image-powerpc-smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104
linux-image-generic-lpae-lts-sinh động 4.4.0.81.87
linux-image-generic-lpae 4.4.0.81.87
linux-image-powerpc64-smp- lts - wily 4.4.0.81.87
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.87
linux-image-powerpc-smp- lts - wily 4.4.0.81.87
linux-image-virtual- lts - wily 4.4.0.81.87
linux-image-powerpc64-smp 4.4.0.81.87
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104
linux-image-powerpc-smp- lts -utopic 4.4.0.81.87
linux-image-powerpc-smp- lts -sinh động 4.4.0.81.87
linux-image-lowlatency 4.4.0.81.87
linux-image-virtual-lts-xenial 4.4.0.81.87
linux-image-lowlatency-lts-utopic 4.4.0.81.87
Ubuntu 16.04 LTS:
linux-image-4.4.0-1016-gke 4.4.0-1016.16
Ubuntu 16.04 LTS:
linux-image-snapdragon 4.4.0.1061.54
linux-image-4.4.0-1061-snapdragon 4.4.0-1061.66
Ubuntu 16.04 LTS:
linux-image-4.4.0-1020- aws 4.4.0-1020,29
Ubuntu 16.04 LTS:
linux-image-raspi2 4.4.0.1059.60
linux-image-4.4.0-1059-raspi2 4.4.0-1059.67
Ubuntu 16.04 LTS:
linux-image-4.8.0-56-powerpc-smp 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-powerpc-e500mc 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-lowflency 4.8.0-56.61 ~ 16.04.1
linux-image-4.8.0-56-generic 4.8.0-56.61 ~ 16.04.1
linux-image-generic-hwe-16.04 4.8.0.56.27
linux-image-lowlatency-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-generic-lpae 4.8.0-56.61 ~ 16.04.1
linux-image-virtual-hwe-16.04 4.8.0.56.27
linux-image-generic-lpae-hwe-16.04 4.8.0.56.27
linux-image-4.8.0-56-powerpc64-emb 4.8.0-56.61 ~ 16.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-smp-lts-xenial 4.4.0.81.66
linux-image-lowlatency-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc-smp 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc-e500mc 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-lowflency 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-generic-lpae 4.4.0-81.104 ~ 14.04.1
linux-image-generic-lpae-lts-xenial 4.4.0.81.66
linux-image-powerpc64-smp-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-generic 4.4.0-81.104 ~ 14.04.1
linux-image-4.4.0-81-powerpc64-smp 4.4.0-81.104 ~ 14.04.1
linux-image-generic-lts-xenial 4.4.0.81.66
linux-image-powerpc64-emb-lts-xenial 4.4.0.81.66
linux-image-powerpc-e500mc-lts-xenial 4.4.0.81.66
linux-image-virtual-lts-xenial 4.4.0.81.66
linux-image-4.4.0-81-powerpc64-emb 4.4.0-81.104 ~ 14.04.1
Ubuntu 14.04 LTS:
linux-image-powerpc-e500mc 3.13.0.121.131
linux-image-lowlatency-pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-emb 3.13.0-121.170
linux-image-generic-pae 3.13.0.121.131
linux-image-3.13.0-121-powerpc-smp 3.13.0-121.170
linux-image-3.13.0-121-powerpc-e500mc 3.13.0-121.170
linux-image-3.13.0-121-powerpc- e500 3.13.0-121.170
linux-image-3.13.0-121-generic-lpae 3.13.0-121.170
linux-image-generic- lts - quantal 3.13.0.121.131
linux-image-virtual 3.13.0.121.131
linux-image-powerpc- e500 3.13.0.121.131
linux-image-generic- lts -trusty 3.13.0.121.131
linux-image-3.13.0-121-generic 3.13.0-121.170
linux-image-omap 3.13.0.121.131
linux-image-powerpc64-emb 3.13.0.121.131
linux-image-3.13.0-121-powerpc64-smp 3.13.0-121.170
linux-image-generic 3.13.0.121.131
linux-image-highbank 3.13.0.121.131
linux-image-generic- lts -saucy 3.13.0.121.131
linux-image-powerpc-smp 3.13.0.121.131
linux-image-3.13.0-121-lowflency 3.13.0-121.170
linux-image-generic-lpae-lts-saucy 3.13.0.121.131
linux-image-generic- lts -raring 3.13.0.121.131
linux-image-powerpc64-smp 3.13.0.121.131
linux-image-generic-lpae-lts-trusty 3.13.0.121.131
linux-image-generic-lpae 3.13.0.121.131
linux-image-lowlatency 3.13.0.121.131
Ubuntu 12.04 ESM:
linux-image-powerpc-smp 3.2.0.128.142
linux-image-3.2.0-128-ảo 3.2.0-128.173
linux-image-3.2.0-128-generic-pae 3.2.0-128.173
linux-image-generic 3.2.0.128.142
linux-image-generic-pae 3.2.0.128.142
linux-image-highbank 3.2.0.128.142
linux-image-3.2.0-128-highbank 3.2.0-128.173
linux-image-3.2.0-128-powerpc-smp 3.2.0-128.173
linux-image-virtual 3.2.0.128.142
linux-image-powerpc64-smp 3.2.0.128.142
linux-image-3.2.0-128-omap 3.2.0-128.173
linux-image-3.2.0-128-powerpc64-smp 3.2.0-128.173
linux-image-omap 3.2.0.128.142
linux-image-3.2.0-128-generic 3.2.0-128.173
Ubuntu 12.04 LTS:
linux-image-3.13.0-121-generic 3.13.0-121.170 ~ precision1
linux-image-generic-lpae-lts-trusty 3.13.0.121.112
linux-image-generic- lts -trusty 3.13.0.121.112
linux-image-3.13.0-121-generic-lpae 3.13.0-121.170 ~ precision1

Sudo

Lỗi sudo nói trên được bảo vệ bởi USN-3304-1 , từ ngày 30 tháng 5 năm 2017:

Ubuntu 17.04:
sudo-ldap 1.8.19p1-1ubfox1.1
sudo 1.8.19p1-1ubfox1.1
Ubuntu 16.10:
sudo-ldap 1.8.16-0ubfox3.2
sudo 1.8.16-0ubfox3.2
Ubuntu 16.04 LTS:
sudo-ldap 1.8.16-0ubfox1.4
sudo 1.8.16-0ubfox1.4
Ubuntu 14.04 LTS:
sudo-ldap 1.8.9p5-1ubfox1.4
sudo 1.8.9p5-1ubfox1.4

Vì vậy, tóm lại, nó đã được sửa trong hầu hết các phiên bản Ubuntu vẫn được hỗ trợ, bạn chỉ cần cập nhật?
CJCombrink

@TheBadger không, như được lưu ý bởi trình theo dõi CVE, một số kết hợp vẫn được liệt kê là bản phát hành đang chờ xử lý. Tôi cho rằng nhiều USN sẽ được xuất bản khi bản sửa lỗi được phát hành.
muru

4
Nhưng, vâng, cập nhật là đủ, không cần cấu hình bổ sung.
muru

Nếu nó đang ảnh hưởng, làm thế nào để xác minh?
hoa cúc

1
@immibis theo bài viết sau đây, nhưng triển khai hiện tại không hoạt động chính xác: Giải thích lỗi Stackguard của Qualys Research Labs
Igor B

1

Làm thế nào một lỗi đa hệ điều hành xảy ra?

Để giải quyết phần này của câu hỏi của bạn một cách cụ thể:

Vấn đề này phát sinh do việc sử dụng một không gian địa chỉ dùng chung cho heap (tăng dần lên) và stack (tăng dần xuống).

Thiết kế này là phổ biến trên nhiều hệ thống, do đó tại sao nhiều hệ thống dễ bị tổn thương với cùng một loại lỗ hổng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.