CVE-2015-7547: glibc getaddrinfo stack-based buffer overflowFebruary 1 dịch - CVE-2015-7547: glibc getaddrinfo stack-based buffer overflowFebruary 1 Việt làm thế nào để nói

CVE-2015-7547: glibc getaddrinfo st

CVE-2015-7547: glibc getaddrinfo stack-based buffer overflow
February 16, 2016
Posted by Fermin J. Serna, Staff Security Engineer and Kevin Stadmeyer, Technical Program Manager
Have you ever been deep in the mines of debugging and suddenly realized that you were staring at something far more interesting than you were expecting? You are not alone! Recently a Google engineer noticed that their SSH client segfaulted every time they tried to connect to a specific host. That engineer filed a ticket to investigate the behavior and after an intense investigation we discovered the issue lay in glibc and not in SSH as we were expecting.
Thanks to this engineer’s keen observation, we were able determine that the issue could result in remote code execution. We immediately began an in-depth analysis of the issue to determine whether it could be exploited, and possible fixes. We saw this as a challenge, and after some intense hacking sessions, we were able to craft a full working exploit!
In the course of our investigation, and to our surprise, we learned that the glibc maintainers had previously been alerted of the issue via their bug tracker in July, 2015. (bug). We couldn't immediately tell whether the bug fix was underway, so we worked hard to make sure we understood the issue and then reached out to the glibc maintainers. To our delight, Florian Weimer and Carlos O’Donell of Red Hat had also been studying the bug’s impact, albeit completely independently! Due to the sensitive nature of the issue, the investigation, patch creation, and regression tests performed primarily by Florian and Carlos had continued “off-bug.”
This was an amazing coincidence, and thanks to their hard work and cooperation, we were able to translate both teams’ knowledge into a comprehensive patch and regression test to protect glibc users.
That patch is available here.
Issue Summary:
Our initial investigations showed that the issue affected all the versions of glibc since 2.9. You should definitely update if you are on an older version though. If the vulnerability is detected, machine owners may wish to take steps to mitigate the risk of an attack.
The glibc DNS client side resolver is vulnerable to a stack-based buffer overflow when the getaddrinfo() library function is used. Software using this function may be exploited with attacker-controlled domain names, attacker-controlled DNS servers, or through a man-in-the-middle attack.
Google has found some mitigations that may help prevent exploitation if you are not able to immediately patch your instance of glibc. The vulnerability relies on an oversized (2048+ bytes) UDP or TCP response, which is followed by another response that will overwrite the stack. Our suggested mitigation is to limit the response (i.e., via DNSMasq or similar programs) sizes accepted by the DNS resolver locally as well as to ensure that DNS queries are sent only to DNS servers which limit the response size for UDP responses with the truncation bit set.
Technical information:
glibc reserves 2048 bytes in the stack through alloca() for the DNS answer at _nss_dns_gethostbyname4_r() for hosting responses to a DNS query.
Later on, at send_dg() and send_vc(), if the response is larger than 2048 bytes, a new buffer is allocated from the heap and all the information (buffer pointer, new buffer size and response size) is updated.
Under certain conditions a mismatch between the stack buffer and the new heap allocation will happen. The final effect is that the stack buffer will be used to store the DNS response, even though the response is larger than the stack buffer and a heap buffer was allocated. This behavior leads to the stack buffer overflow.
The vectors to trigger this buffer overflow are very common and can include ssh, sudo, and curl. We are confident that the exploitation vectors are diverse and widespread; we have not attempted to enumerate these vectors further.
Exploitation:
Remote code execution is possible, but not straightforward. It requires bypassing the security mitigations present on the system, such as ASLR. We will not release our exploit code, but a non-weaponized Proof of Concept has been made available simultaneously with this blog post. With this Proof of Concept, you can verify if you are affected by this issue, and verify any mitigations you may wish to enact.
As you can see in the below debugging session we are able to reliably control EIP/RIP.
(gdb) x/i $rip
=> 0x7fe156f0ccce : req
(gdb) x/a $rsp
0x7fff56fd8a48: 0x4242424242424242 0x4242424242420042
When code crashes unexpectedly, it can be a sign of something much more significant than it appears; ignore crashes at your peril!
Failed exploit indicators, due to ASLR, can range from:
Crash on free(ptr) where ptr is controlled by the attacker.
Crash on free(ptr) where ptr is semi-controlled by the attacker since ptr has to be a valid readable address.
Crash reading from memory pointed by a local overwritten variable.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
CVE-2015-7547: glibc getaddrinfo lỗi tràn bộ đệm dựa trên ngăn xếp16 tháng 2 năm 2016Đăng bởi Fermin J. Serna, nhân viên an ninh kỹ sư và Kevin Stadmeyer, giám đốc chương trình kỹ thuậtBạn đã bao giờ sâu ở các mỏ của gỡ lỗi và bỗng nhận ra rằng bạn đã nhìn chằm chằm vào cái gì thú vị hơn nhiều hơn bạn đã mong đợi? Bạn đang không một mình! Gần đây, một kỹ sư Google nhận thấy rằng segfaulted máy khách SSH của họ mỗi khi họ đã cố gắng để kết nối với một máy chủ cụ thể. Kỹ sư đó nộp một vé để điều tra hành vi và sau khi một cuộc điều tra căng thẳng chúng tôi đã phát hiện ra vấn đề nằm ở glibc và không phải trong SSH như chúng tôi đã hy vọng.Nhờ kỹ sư này quan tâm quan sát, chúng tôi đã có thể xác định các vấn đề có thể kết quả trong thực thi mã từ xa. Chúng tôi ngay lập tức bắt đầu phân tích chuyên sâu của vấn đề để xác định xem nó có thể là khai thác, và có thể sửa chữa. Chúng tôi đã thấy điều này như là một thách thức, và sau khi một số dữ dội hacking buổi, chúng tôi đã có thể thủ công một đầy đủ làm việc khai thác!Trong quá trình điều tra của chúng tôi, và để ngạc nhiên của chúng tôi, chúng tôi đã học được rằng glibc maintainers đã trước đó đã được cảnh báo của các vấn đề thông qua theo dõi lỗi của họ vào tháng 7, năm 2015. (lỗi). Chúng tôi không thể ngay lập tức nói liệu sửa chữa lỗi đã tiến hành, do đó, chúng tôi làm việc chăm chỉ để đảm bảo rằng chúng tôi hiểu rõ vấn đề và sau đó tới glibc maintainers. Để thỏa thích của chúng tôi, Florian Weimer và Carlos O'Donell của Red Hat đã có cũng nghiên cứu tác động của lỗi, mặc dù hoàn toàn độc lập! Do tính chất nhạy cảm của vấn đề, điều tra, tạo ra bản vá lỗi và hồi qui kiểm tra thực hiện chủ yếu bởi Florian và Carlos tiếp tục "off-bug."Đây là một sự trùng hợp tuyệt vời, và nhờ công việc khó khăn và hợp tác của họ, chúng tôi đã có thể dịch kiến thức cả hai đội vào một bài kiểm tra bản vá lỗi và hồi qui toàn diện để bảo vệ người dùng glibc.Vá lỗi mà có sẵn ở đây.Tóm tắt vấn đề:Chúng tôi điều tra ban đầu cho thấy rằng các vấn đề ảnh hưởng đến tất cả các phiên bản của glibc kể từ 2,9. Bạn nên chắc chắn Cập Nhật nếu bạn đang trên một phiên bản cũ hơn mặc dù. Nếu lỗ hổng bảo mật được phát hiện, máy chủ có thể thực hiện các bước để giảm thiểu nguy cơ của một cuộc tấn công.Glibc DNS client side resolver là dễ bị một lỗi tràn bộ đệm ngăn xếp dựa trên khi sử dụng chức năng thư viện getaddrinfo(). Phần mềm sử dụng chức năng này có thể được khai thác với tên kẻ tấn công kiểm soát miền, kẻ tấn công kiểm soát máy chủ DNS, hoặc thông qua một người đàn ông ở giữa cuộc tấn công.Google đã tìm thấy một số mitigations có thể giúp ngăn ngừa khai thác nếu bạn không thể ngay lập tức vá của bạn thể hiện của glibc. Các lỗ hổng dựa trên một quá lứa (2048 + byte) UDP hoặc TCP phản ứng, mà theo sau một phản ứng sẽ ghi đè lên các ngăn xếp. Giảm nhẹ đề xuất của chúng tôi là để giới hạn kích thước đáp ứng (tức là, thông qua DNSMasq hoặc chương trình tương tự) được chấp nhận bởi bộ giải quyết DNS địa phương cũng như đảm bảo truy vấn DNS được gửi chỉ đến các máy chủ DNS mà giới hạn kích thước đáp ứng cho UDP phản ứng cùng với truncation bit.Thông tin kỹ thuật:glibc trữ 2048 byte trong ngăn xếp qua alloca() câu trả lời DNS tại _nss_dns_gethostbyname4_r() để lưu trữ các phản ứng với một truy vấn DNS.Về sau, tại send_dg() và send_vc(), nếu các phản ứng lớn hơn 2048 byte, một bộ đệm mới được cấp phát từ đống và tất cả các thông tin (bộ đệm con trỏ, kích thước bộ đệm mới và phản ứng kích thước) được Cập Nhật.Dưới điều kiện nhất định không phù hợp giữa các bộ đệm ngăn xếp và phân bổ đống mới sẽ xảy ra. Hiệu quả cuối cùng là chồng đệm sẽ được sử dụng để lưu trữ các phản ứng DNS, mặc dù các phản ứng lớn hơn vùng đệm ngăn xếp và một bộ đệm heap được cấp phát. Hành vi này dẫn đến lỗi tràn bộ đệm ngăn xếp.Các vectơ để kích hoạt này lỗi tràn bộ đệm là rất phổ biến và có thể bao gồm ssh, sudo và curl. Chúng tôi rất tự tin rằng các vectơ khai thác là đa dạng và phổ biến rộng rãi; chúng tôi đã không cố gắng liệt kê các vectơ hơn nữa.Khai thác:Thực thi mã từ xa có thể, nhưng không đơn giản. Nó đòi hỏi phải bỏ qua an ninh mitigations hiện có trên hệ thống, chẳng hạn như ASLR. Chúng tôi sẽ không phát hành mã khai thác của chúng tôi, nhưng một bằng chứng không hỗ khái niệm đã được làm sẵn đồng thời với các bài đăng blog. Với này bằng chứng của khái niệm, bạn có thể kiểm tra nếu bạn đang bị ảnh hưởng bởi vấn đề này, và xác minh bất kỳ mitigations có thể ban hành.Như bạn có thể nhìn thấy trong các bên dưới gỡ lỗi phiên chúng ta có thể tin cậy kiểm soát EIP/RIP.(gdb) x / tôi $rip= > 0x7fe156f0ccce < _nss_dns_gethostbyname4_r + 398 >: req(gdb) x/a $rsp0x7fff56fd8a48: 0x4242424242424242 0x4242424242420042Khi mã tai nạn bất ngờ, nó có thể là một dấu hiệu của một cái gì đó nhiều hơn nữa quan trọng hơn nó xuất hiện; bỏ qua các tai nạn tại peril của bạn!Không khai thác các chỉ số, do ASLR, có thể dao động từ:Vụ tai nạn trên free(ptr) nơi ptr được điều khiển bởi những kẻ tấn công. Vụ tai nạn trên free(ptr) ptr đâu bán điều khiển bởi những kẻ tấn công kể từ ptr có được một địa chỉ hợp lệ có thể đọc được. Lỗi đọc từ bộ nhớ chỉ của một biến địa phương bị ghi đè.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
CVE-2015-7547: glibc getaddrinfo ngăn xếp dựa trên tràn bộ đệm
16 Tháng hai 2016
đăng bởi Fermin J. Serna, Nhân viên an ninh kỹ sư và Kevin Stadmeyer, Giám đốc chương trình kỹ thuật
Đã bao giờ bạn được sâu trong mỏ gỡ lỗi và chợt nhận ra rằng mình đã nhìn chằm chằm vào một cái gì đó thú vị hơn nhiều hơn bạn mong đợi? Bạn không đơn độc! Gần đây, một kỹ sư của Google nhận thấy rằng khách hàng của họ SSH segfaulted mỗi khi họ cố gắng để kết nối đến một máy chủ cụ thể. Kỹ sư đó nộp một vé để điều tra hành vi và sau khi một cuộc điều tra cường độ cao, chúng tôi phát hiện ra vấn đề nằm ở glibc và không có trong SSH như chúng tôi mong đợi.
Nhờ sự quan sát sắc sảo của kỹ sư này, chúng tôi đã có thể xác định rằng vấn đề này có thể dẫn đến thực thi mã từ xa . Chúng tôi ngay lập tức bắt đầu một phân tích sâu về vấn đề này để xác định xem nó có thể được khai thác, và có thể sửa chữa. Chúng tôi nhận thấy đây là một thách thức, và sau một vài phiên hacking cường độ cao, chúng tôi có thể đưa ra một công việc đầy đủ khai thác!
Trong quá trình điều tra của chúng tôi, và thật ngạc nhiên, chúng tôi được biết các nhà bảo trì glibc trước đây đã được cảnh báo về vấn đề này thông qua tracker của họ lỗi trong Tháng Bảy, 2015. (bug). Chúng ta có thể không ngay lập tức nói cho dù sửa chữa lỗi được tiến hành, vì vậy chúng tôi đã làm việc chăm chỉ để đảm bảo rằng chúng tôi hiểu vấn đề và sau đó đã tìm đến các nhà bảo trì glibc. Để thỏa thích của chúng tôi, Florian Weimer và Carlos O'Donell của Red Hat cũng đã nghiên cứu ảnh hưởng của lỗi, mặc dù hoàn toàn độc lập! Do tính chất nhạy cảm của vấn đề, ​​điều tra, tạo ra bản vá, và kiểm tra hồi quy thực hiện chủ yếu bởi Florian và Carlos đã tiếp tục "off-lỗi."
Đây là một trùng hợp ngẫu nhiên, và nhờ vào công việc khó khăn của họ và hợp tác, chúng tôi có thể . dịch kiến thức cả hai đội 'vào một thử nghiệm bản vá và suy thoái toàn diện để bảo vệ người dùng glibc
vá đó có sẵn ở đây.
Issue Tóm tắt:
điều tra ban đầu của chúng tôi cho thấy rằng vấn đề này ảnh hưởng đến tất cả các phiên bản của glibc kể từ 2.9. Bạn chắc chắn nên cập nhật nếu bạn đang ở trên một phiên bản cũ mặc dù. Nếu lỗ hổng được phát hiện, các chủ sở hữu máy có thể muốn thực hiện các bước để giảm thiểu nguy cơ bị tấn công.
Các glibc DNS phía khách hàng giải quyết là dễ bị lỗi tràn bộ đệm dựa trên stack khi getaddrinfo () chức năng thư viện được sử dụng. Phần mềm sử dụng chức năng này có thể được khai thác với các tên miền kẻ tấn công kiểm soát, các máy chủ DNS kẻ tấn công kiểm soát, hoặc thông qua một cuộc tấn công man-in-the-middle.
Google đã tìm thấy một số giải pháp giảm thiểu có thể giúp ngăn chặn khai thác nếu bạn không thể ngay lập tức vá bạn thể hiện của glibc. Lỗ hổng này dựa trên một quá khổ (2048+ byte) UDP hoặc TCP phản ứng, được theo sau bởi một phản ứng đó sẽ ghi đè lên stack. Giảm nhẹ đề nghị của chúng tôi là để hạn chế các phản ứng (ví dụ, thông qua dnsmasq hoặc các chương trình tương tự) có kích thước chấp nhận bởi bộ giải quyết DNS tại địa phương cũng như để đảm bảo rằng các truy vấn DNS được chỉ gửi đến các máy chủ DNS mà giới hạn kích thước đáp ứng cho phản ứng UDP với bit cắt ngắn bộ.
thông tin kỹ thuật:
. dự trữ glibc 2048 byte trong ngăn xếp qua alloca () cho câu trả lời DNS tại _nss_dns_gethostbyname4_r () để lưu trữ các phản ứng với một truy vấn DNS
Sau đó, tại send_dg () và send_vc (), nếu các phản ứng lớn hơn 2048 byte, một bộ đệm mới được phân bổ từ đống và tất cả các thông tin (đệm trỏ, kích thước bộ đệm mới và kích thước phản ứng) được cập nhật.
trong điều kiện nhất định không phù hợp giữa đống đệm và giao heap mới sẽ xảy ra. Hiệu quả cuối cùng là ngăn xếp bộ đệm sẽ được sử dụng để lưu trữ các phản ứng DNS, mặc dù phản ứng lớn hơn chồng đệm và một bộ đệm heap đã được phân bổ. Hành vi này dẫn đến tràn ngăn xếp đệm.
Các vectơ để kích hoạt lỗi tràn bộ đệm này là rất phổ biến và có thể bao gồm ssh, sudo, và cong. Chúng tôi tin tưởng rằng các vectơ khai thác rất đa dạng và phổ biến; chúng tôi đã không cố gắng để liệt kê các vectơ thêm.
Khai thác:
thực thi mã từ xa là có thể, nhưng không phải đơn giản. Nó đòi hỏi phải bỏ qua các giải pháp giảm thiểu bảo mật trên hệ thống, chẳng hạn như ASLR. Chúng tôi sẽ không phát hành khai thác của chúng tôi mã, nhưng một Proof phi vũ khí của Concept đã được làm sẵn có đồng thời với bài blog này. Với bằng chứng này của khái niệm, bạn có thể xác minh nếu bạn bị ảnh hưởng bởi vấn đề này, và xác minh bất kỳ giải pháp giảm thiểu bạn có thể muốn để ban hành.
Như bạn có thể thấy trong các phiên gỡ lỗi dưới đây chúng ta có thể tin cậy kiểm soát EIP / RIP.
(Gdb) x / i $ rip
=> 0x7fe156f0ccce <_nss_dns_gethostbyname4_r + 398>: req
(gdb) x / a $ RSP
0x7fff56fd8a48: 0x4242424242424242 0x4242424242420042
Khi mã lỗi bất thường, nó có thể là một dấu hiệu của một cái gì đó nhiều hơn đáng kể hơn nó xuất hiện; ! bỏ qua tai nạn nguy hiểm của bạn
không thành công khai thác các chỉ số, do ASLR, có thể dao động từ:
Sụp đổ về miễn phí (ptr) nơi ptr được điều khiển bởi những kẻ tấn công.
Sụp đổ về miễn phí (ptr) nơi ptr là bán điều khiển bởi những kẻ tấn công từ ptr có là một địa chỉ có thể đọc được hợp lệ.
sụp đổ đọc từ bộ nhớ trỏ bởi một biến ghi đè địa phương.
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: