題:
認為可觸發的服務器軟件崩潰是DOS攻擊有意義嗎?
Matías
2019-01-30 04:28:54 UTC
view on stackexchange narkive permalink

我在Node.js服務器上運行的Web應用程序中發現了一個小漏洞。

它通過向應用程序服務器發送一些精心設計的有效負載來工作,這會使應用程序服務器代碼拋出錯誤並且由於缺乏錯誤處理-崩潰(直到有人再次運行它)。

我不確定這種攻擊的合適名稱是什麼。我假設它是DOS(拒絕服務)攻擊,因為它使服務器拒絕服務成為其客戶端。另一方面,到目前為止,我只聽說過 flooding 某種程度上是服務器(此處不是這種情況)。

因此,將其視為DOS攻擊是否正確?如果回答為“否”,那麼應如何調用它? ?

如果應用程序編寫良好,則不會有任何崩潰類型的DOS錯誤,並且攻擊者將不得不訴諸完整的DDOS(如果攻擊者的火喉比目標大,它將始終起作用)。但是,如果目標應用程序具有易於觸發的崩潰,那麼我相信任何攻擊者都寧願發送單個精心製作的數據包,並節省運行DDOS網絡的費用。
只要它阻止用戶使用該服務,它就是DOS。我曾經在一個網站上遭受過Google和Bing的DOS攻擊,原因僅僅是Drupal無法處理負載(我想說“不能”,但我相信它仍然不能)。
這將是一次DoS攻擊,特別是我以前見過這種稱為“毒丸”攻擊的攻擊,但是現在我無法找到相關參考。
我會將標題更改為“觸發的”軟件崩潰。隨機崩潰並不是真正的DoS,但關鍵在於您可以在命令中導致它。
@zero298我會稍有不同意:標題不需要包含問題的整個上下文和細微差別,這就是問題正文的目的。我可以使用更短的標題,例如“軟件崩潰是DoS攻擊嗎?”* title *的答案有時是“有時”,但是如果有人張貼,顯然他們太懶了,無法閱讀實際的問題。
我認為關於這一點的更多細節很重要:“它崩潰了(直到有人再次運行它)。”將來的請求究竟發生了什麼?如果服務器崩潰了,但是其他用戶仍然可以正常運行,那麼我想說的是您有更多的bug,而不是DOS攻擊,因為其他人仍然可以使用該服務。從技術上講,您是DOS使用者,因此他們需要修復一個錯誤,但是如果唯一受影響的用戶是您自己,那麼您通常就不會受到太大的攻擊。
您會聽到基於洪災的DoS攻擊,因為它們非常簡單:攻擊者只需要比目標更多的帶寬即可。這使它們成為最常見的攻擊形式。
@ConorManconeI讀取到該服務崩潰直到重新啟動,例如例如,“再次運行(在服務器上)”,在“ screen”會話中啟動“ node”進程:如果有未捕獲的異常,NodeJS服務器進程將死亡,直到重新啟動。顯然,這裡的緩解措施是,關鍵服務將在出現故障時通過系統化或監視軟件之類的東西自動重新啟動,但並不能減輕大量藥丸攻擊的危害。
@Josh感謝Josh。最後,隨著技術的發展,我還是添加了一個答案來討論這種區別。我從未進行過節點託管(僅PHP和Python),並且從他的術語中還不清楚他到底在描述什麼。但是,這對我來說似乎有點瘋狂,這可能就是為什麼我一開始就感到困惑的原因。我習慣於將應用程序和服務器分開,在這種情況下,未處理的異常數量不會導致服務本身出現問題-僅針對一個生成應用程序錯誤的請求。
這與Ping of Death沒有太大的區別,這些被認為是DoS攻擊。
七 答案:
DarkMatter
2019-01-30 04:32:48 UTC
view on stackexchange narkive permalink

是的。任何旨在拒絕合法用戶正常使用服務的攻擊,就其定義而言就是DoS(拒絕服務)。

schroeder
2019-01-30 04:58:46 UTC
view on stackexchange narkive permalink

DDoS(分佈式DoS)的特徵是洪災創建了DoS(在所有可用的定義中)。單個節點成功導致洪災的情況很少見。

但是DoS可能由多種觸發因素引起。

CVSS甚至為您提供了一個分類為DoS的軟件崩潰示例:

由於RPC命令的處理程序功能存在缺陷,則可以在虛擬機可執行(VMX)流程中操作數據指針。此漏洞可能允許來賓虛擬機中的用戶崩潰 VMX進程,從而導致主機上的拒絕服務(DoS)或潛在地在主機上執行代碼。 [empasis mine]

並且來自Wiki

拒絕服務攻擊的特徵是攻擊者明確嘗試防止合法使用服務。 DoS攻擊有兩種一般形式:崩潰服務和泛洪服務。最嚴重的攻擊是分佈式的。

因此,是的,一個簡單的崩潰就是DoS。

DDoS的特徵是“分佈式”攻擊,但不一定是洪水。每當服務器重新聯機時您發送單個崩潰有效負載並且始終使用其他殭屍網絡殭屍來執行此操作以避免IP黑名單時,這也將是DDoS攻擊的一種形式。
@Philipp我不確定。好像是串行DoS。我能找到的描述DDoS的每篇參考文獻都將事件描述為來自創建DoS的多個來源的洪水,而不是來自多個來源的DoS。您可以提供任何證據來支持您的示例嗎?
@schroeder我懷疑是因為許多DoS攻擊(或至少是最容易實現的)都涉及泛洪,而來自多個來源的泛洪更有可能淹沒目標。因此,大多數DDoS攻擊都涉及多源泛洪,但是-我認為-“泛洪”不是DDoS攻擊的“定義”,而“多源”則是。如OP所要求的,來自多個來源(以阻止IP黑名單)的精心設計的攻擊將被視為DDoS。
@TripeHound可以肯定的是,如果我有任何證據支持這一假設,那麼我會猜想,並且我可能會同意。我找不到任何支持。
僅從邏輯角度講,對我而言,DDOS的定義特徵是攻擊的分佈會阻止防御者減輕攻擊。辯護者確實需要為此進行指定。我不會考慮在服務器應用程序上線DDoS時向服務器應用程序發送單個崩潰有效負載,但是從較低層防御者(也許是防火牆)的角度來看,它可能被視為DDoS。之所以阻止此攻擊,是因為它每次都來自不同的IP。
是的,每個人,我完全同意DDoS ***從邏輯上講可以意味著任何形式的分佈式攻擊。但是,我發現***沒有在實踐中使用這種含義,甚至在我看來,甚至所提出的示例都像是一連串攻擊,而不是一次攻擊(儘管是分佈式的)。如果任何人都可以幫助舉一個具體的例子,我將不勝感激。[實際上出去算一下馬的牙齒](https://bedejournal.blogspot.com/2008/02/francis-bacon-and-horses-teeth.html)。
DDoS絕對可以包括除泛洪外還使用其他機制的攻擊。我是作為最近在一家全球知名公司的反DDoS團隊中擔任軟件開發人員的人說的。
https://www.paloaltonetworks.com/cyberpedia/what-is-a-denial-of-service-attack-dos-但您最好堅持一下,直到有人真正提供了引用!太多的互聯網討論以暴民法令結束。
sarnold
2019-01-30 10:17:35 UTC
view on stackexchange narkive permalink

通常將安全性視為提供三個屬性:

  • 可用性
  • 完整性
  • 機密

經常會失敗的服務會自動重新啟動。這些可以減輕偶發的崩潰,但是重新啟動服務通常比處理連接的通常開銷高得多。在這種情況下,每秒執行“崩潰服務器”請求五到六次可能不會佔用太多帶寬,但在普通服務器上可能仍然很困難。

同樣,優秀的服務經理也不會無限制地重啟服務。很有可能使服務崩潰的東西也可能以其他方式被利用,盲目地重新啟動服務會給攻擊者帶來新的打擊。
Conor Mancone
2019-01-30 20:00:10 UTC
view on stackexchange narkive permalink

我想添加一個在其他答案中未明確說明的重要細節。您是這樣說的:

它通過向服務器發送一些精心設計的有效負載來工作,這使得服務器代碼拋出錯誤,並且由於缺少錯誤處理而導致崩潰-(直到有人運行)。

(強調我)。該警告很重要,因為此類服務對崩潰的響應方式在不同的技術集之間可能千差萬別。

不是DoS

例如在PHP或大多數情況下在cgi實現中,單個崩潰的請求絕對不會影響其他請求。服務器無法為崩潰的請求發送適當的響應,但是來自合法用戶的其他請求將繼續由服務器正確處理。在這種情況下,崩潰只會影響您自己,而不會影響他人,因此很難將其視為DoS攻擊。當然,這裡有一個錯誤,您在拒絕自己的服務,但是如果服務器繼續對其他所有人正常運行,那麼實際上就沒有拒絕服務的發生。

拒絕服務(DoS)

但是,如果您的有效負載導致實際服務中斷,並且服務器在採取某些措施來還原服務之前(無論是管理員還原還是自動還原)都無法再接收到更多請求一小段時間後),您肯定會拒絕服務,因為造成的崩潰使服務無法響應合法用戶(如其他答案所述)。

在某些情況下,如果您可以“誘騙”合法用戶訪問帶有惡意有效負載的URL,則可能導致沒有關閉服務器的“非DoS”攻擊升級為實際的DoS攻擊。儘管在大多數情況下,此類攻擊並沒有太大的實際影響,因為當它們以後正常使用該服務時,該服務將繼續正常運行。但是,在極少數情況下,有效負載會保留在會話中,從而永久鎖定用戶(我之前見過人們在現實生活中不小心觸發了這種情況)。

根據您的描述,這很難告訴您特定的有效載荷屬於哪些類別,但是有一個重要的區別。

如果您誘騙有效用戶運行有效負載,DoS也可以應用。DoS已本地化,但仍算作DoS。
@schroeder是的,是的,儘管很難使此類攻擊產生實質性的影響,這就是為什麼我將其遺漏了(不過我會對此進行評論)。通常,這種攻擊會使受影響的用戶無法成功加載頁面,但是如果他們以正常使用方式返回頁面,則所有操作都將像正常情況一樣進行。有可能情況是不良的負載會以某種方式保留到會話中,這可能最終導致單個用戶進行DoS攻擊-這可能是非常有效的DoS攻擊。
在節點中,您有少量的單線程服務器。因此,服務器崩潰會影響所有活動用戶(當然,自動重啟是個好主意,但是不斷使進程崩潰將嚴重損害服務)。但是,更值得關注的是哪種崩潰是可以利用的(邏輯處理中止不會終止節點二進製文件)。
PHP FastCGI或FPM每個請求使用一個PHP工作進程,而致命錯誤只會殺死您的工作進程,而FastCGI守護程序將跨越另一個進程。但是,如果您的錯誤非常嚴重以至於殺死_apache_(或您正在使用的任何網絡服務器),會發生什麼情況_then_這是DOS攻擊。我之前已經看過(錯誤是在Apache模塊中),結果是不再監聽80端口,並且完全失去了服務
感謝@eckes,,我不是節點專家,所以我對它如何處理未處理的異常了解不多。
@Josh是和否。確實,如果您設法殺死了Apache,那麼您將回到DoS。但是,這通常需要Apache中的錯誤。但是,在PHP應用程序中觸發致命錯誤不會導致基礎工作進程死亡。要使工作人員死亡,您需要在PHP *自身*中找到一個錯誤,這比在PHP應用程序中查找一個錯誤要困難得多。與apache相同-要殺死apache,您需要在apache中觸發一個bug(請注意,trognanders答案中包括此類事件的示例)。這些構成了DoS攻擊,但難度更大。
相比之下,@ConorMancone, ...在PHP應用程序上發現任意代碼執行攻擊往往是經常發生的事情,並且利用*那*來對整個Apache產生影響的拒絕服務很簡單。
@CharlesDuffy除非我誤解了您,否則我覺得這有點草率。遠程執行代碼攻擊是最危險的攻擊。當然那裡有易受攻擊的站點(它們出現在這裡,詢問在服務器上找到的隨機文件),但這並不意味著它很頻繁,也很容易在隨機站點上發現這種漏洞。另外,如果您已經在服務器上獲得了執行特權,那麼我就不知道為什麼要去站點DoS了-可能會有更加多汁的攻擊,而DoS聲音很大。
trognanders
2019-01-30 23:25:18 UTC
view on stackexchange narkive permalink

您的攻擊基本上是DOS的定義,它實際上是拒絕服務的,您使用的是正確的術語。

使用帶寬是一種幼稚的方法,不需要服務器具有特定的漏洞,但是當然不是唯一的。

這是一個關於Apache的真實CVE,它使用該術語描述了類似的DOS攻擊(帶有segfault的崩潰):

http:// cve .mitre.org / cgi-bin / cvename.cgi?name = CVE-2018-8011

甚至更複雜的攻擊有時也屬於普通的DOS攻擊,並且也帶有該標籤。沒有shellkit的堆棧可粉碎遠程代碼執行程序錯誤,仍然會用不正確的值來粉碎堆棧,從而導致段錯誤。

DarcyThomas
2019-02-01 04:45:16 UTC
view on stackexchange narkive permalink

是的,這可以稱為DOS漏洞。我聽說這被稱為“應用程序DOS攻擊”。 。使用所有可用內存打開和掃描的超小型zip文件。

如果您拒絕合法用戶使用資源[CPU,Ram,磁盤,網絡帶寬(密碼重置?),您可以將其稱為DOS攻擊。

如果該攻擊只是破壞了應用程序的狀態(例如,讓未經授權的用戶將應用程序設置為只讀模式),那麼我可能會傾向於只調用該應用程序(或安全)漏洞。

virolino
2019-01-30 18:38:05 UTC
view on stackexchange narkive permalink

將服務器軟件崩潰視為DOS攻擊是否有意義?

任何行為者在任何活動方面的行為都至少在兩個方面:能力權限

能力有兩種可能性: able unable

權限也有兩種可能性: allowed denied

因此,一個好的參與者僅在 able allowed

從我的角度來看,軟件崩潰 = 不可用 DOS = 拒絕。由於這兩個是不同維度上的“值”,因此即使對最終用戶的影響可能相似,也不能將它們視為相似。但是,網絡管理員看到的效果可能完全不同-解決方案通常是不同的。

此外,DOS攻擊可能導致軟件崩潰,但是它們仍然不相似-它們是

示例:即使沒有任何攻擊,任何軟件也可能因數不清的原因而崩潰。

注意:軟件崩潰通常意味著該過程是由於操作錯誤而被操作系統停止。 DOS通常是可能的,因為該軟件只是行為不當,但不會崩潰。

DoS不是權限問題。術語的基本定義與您的前提相矛盾。
即使這樣,這些術語也不相似。因此,即使“隱喻”並不完美,我也認為我的答案是正確的。因此,反對票不應提及整個答案。而且,DOS中的D是“ Denial”(正好是我寫的那樣)-因此我也不是很了解。
實際上,您在語言和邏輯上都是錯誤的。您試圖在上下文之外應用術語部分的定義來設計含義,而結果卻毫無意義。我可以解決邏輯上的錯誤,但事實是,“ DoS”一詞是由有意向合法用戶提供服務而“定義”的,而崩潰是這種攻擊分類的一個核心示例。
如果我使用您的條款,則惡意行為者“可以”和“允許”(即根據您的定義,不會被拒絕)發送精心製作的數據包以停止服務。因此,您的結論從一開始就是錯誤的。在給定要使用的術語的上下文的情況下,下一點毫無意義,因此您的論據基於定義的變化。結果是您的邏輯沒有流程。
只是好奇:誰“允許”任何惡意內容?如何允許惡意行為者?是的,他們有能力,是的,他們有行動,不,他們是不允許的。他們只是行動。我認為您的定義也不是很合理。我的答案是唯一解決標題中問題的答案,即使其他答案在技術上更正確。您能否解釋一下-也許是在回答中-`軟件崩潰與DoS攻擊類似嗎?請。
問題是* entire *帖子,而不僅僅是標題。整個文章提供了上下文。當我說“允許”惡意行為者,因為它們未被“拒絕”時,我使用的是“您的***”定義。這就是您的二分法。而且,如果您尋找自己,就會發現我已經提供了答案。也就是說,我提供的是問題的答案,而不是您對它的重新解釋。
軟件崩潰算作“拒絕服務”,因為它會阻止合法用戶使用該服務(即拒絕他們的服務),因為在進程未運行時無法使用該服務。有人可能會問,DDoS如何降低合法用戶的特權?


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...