題:
熟練的專業pentester在滲透測試過程中無意間刪除或修改生產中的敏感數據是否可以接受?
kinunt
2013-07-18 00:08:20 UTC
view on stackexchange narkive permalink

今天,我遇到了這樣一種情況,負責公司安全的人員要求滲透測試公司撤消合同中的條款:

”在滲透測試中存在由於執行某些工具,漏洞利用,技術等,有可能在生產環境中無意中刪除或修改敏感數據。“

客戶表示他不會接受該條款並且他認為沒有公司會接受該條款。他認為,在滲透測試期間,可以訪問信息,但永遠不能刪除或修改信息。

我們知道,如果對Web應用程序進行了非常錯誤的編程,則執行某些工具(如Web爬網程序或Spider即可刪除數據),因此如果要使用這些類型的工具,可能性總是存在。

我知道這些是客戶的條件,應該接受,但是:

可以熟練且專業的pentester始終確保在滲透測試期間不會刪除或修改生產中的任何數據?

如果滲透測試小組存在數據限制,可以真正進行滲透測試嗎?無法創建或修​​改?

滲透測試公司是否應始終包含免責條款,以防萬一?

這讓我想起了wtf的故事,其中Google索引了一個頁面,該頁面具有一個鏈接,該鏈接在單擊時會重置整個數據庫。 Google只是盲目地去索引頁面,跟隨鏈接,然後擦除數據庫。沒有任何方法可以保證戊酯可能不會偶然做同樣的事情。
誰知道您可能會偶然發現哪種邏輯炸彈。抵制惡意陷阱和可怕的錯誤配置的CYA是隱藏的災難,它在有人首次觸發多米諾骨牌字符串時等待取出數據。基本上是“對不起,您沒有有效的備份,但是該問題早於我對您的系統的呼吸”。
-1
@woliveirajr-http://thedailywtf.com/Articles/The_Spider_of_Doom.aspx和http://thedailywtf.com/Articles/WellIntented-Destruction.aspx-我的記憶力不強,但足夠接近
當然,堅持要刪除此子句的客戶並不是沒有道理的,而是“不理解為什麼有此子句” **。他們認為* you *在測試過程中會做一些破壞系統的事情。只是向他們解釋,如果*他們的*代碼中有一些可怕的錯誤,當您單擊“保存”時,該錯誤會刪除數據庫,顯然您將不承擔責任。通常,這聽起來像是人際溝通失敗,而不是技術問題。
如果客戶端有一個有效的(經過測試的)備份/還原過程(具有文件完整性檢查機制),那麼他們就不用擔心了,對嗎?
@tom-oconnor更重要的是,與在某些黑客大刀闊斧地進行隨機訪問的情況下,在隨機備份的情況下,以一種有控制的,準備好的方法來保存最新備份相比,丟失數據更好。如果在入網測試期間丟失數據甚至是一個問題,那麼這大概是該公司的後顧之憂。因此,我贊同這樣的觀點,那就是通信問題多於技術問題。
這是另一種查看方式。滲透測試的“前提”是,如果攻擊者成功,那麼系統將“崩潰”;如果*正確*,則攻擊不會成功。如果攻擊成功,則係統*損壞*;如果系統損壞了,那麼*在給定任何輸入時其行為不一定是其規範所預測的*,並且如果它的行為不是其規範所預測的,那麼*誰知道會發生什麼*?
您的公司沒有克隆您打算進行筆測試的系統是否專業—不僅因為它們可能會影響您的系統,而且還因為您打算在哪裡進行開發更改?
將您的客戶定向到此頁面
@RyanMcDonough只有小目標才真正可行。如果要對XYZ Co的基礎架構進行足夠大的測試以使其擁有足夠多的服務器機架,那麼對它們進行常規測試時,克隆起來不僅成本高得令人望而卻步。但是副本中所有內容配置都不相同的可能性將增加,從而降低結果的有效性。
@DanNeely即使您克隆了系統,克隆的內容也無法通過您與其他人一起克隆的硬編碼網絡地址跨網絡到達原始系統上的盒子嗎?是的,您可以隔離系統,但是到那時,您已經徹底改變了環境,以至於您的測試無法測試您要測試的對象。
八 答案:
Rory McCune
2013-07-18 00:20:53 UTC
view on stackexchange narkive permalink

沒有辦法讓pentester能夠100%確保不會修改或刪除數據,就像他們無法確保不會影響系統可用性一樣(我已經用端口將系統撞倒了)掃描或單個'字符)。就像您說的那樣,如果網絡抓取工具設置不正確,它就可以從系統中刪除數據。

我要說的是,諸如“將竭盡所能確保測試不會對正在檢查的系統產生負面影響,也不會刻意嘗試修改或刪除生產數據或對范圍內系統的可用性產生負面影響,但是,在進行所有安全性測試時,都有可能會影響系統和客戶應該確保在審查開始之前就已經對所有數據和系統進行了備份。

我通過將Unicode字符放入客戶的Web應用程序的字段中來關閉服務器。您永遠不能百分百確定自己的行為不會影響正常運行時間-到處都是意外的故障向量。
我有團隊成員測試客戶提供的帳戶,因為“測試”帳戶意外支付了國際款項:-)發生了。保留該條款!
我對安全性不了解很多,但是遇到了很多混亂的代碼庫,因此我批准了此消息。
這和@MGOwen的評論一樣,嘗試向客戶解釋其原因。如果他們仍然不接受它,那麼最好是不接受這份工作。並不是我對滲透測試了解很多,但是您可能會嘗試進行一些SQL注入以訪問系統,並且如果不夠仔細的話,這種mig破壞會破壞數據。
作為滲透測試人員,您實際上並最終將花費大量時間來研究系統的各個部分,並提出以下問題:“當我輸入*此*意外數據*這裡*?會發生什麼?”,除非您允許同時分析代碼本身,無法*絕對保證*答案*不會*是“系統在崩潰自己,擦除其後端數據庫並破壞了備份,然後越過邊界”蒂華納的公司預算”。
Tom Leek
2013-07-18 00:46:26 UTC
view on stackexchange narkive permalink

一個聲稱自己將永遠不會改變生產數據的戊二酯要么是一個,要么認為自己勝任於自己的能力,或者打算什麼都不做(這是永不打破任何事情的唯一保證方法)。無論如何,您都不想與那個人一起工作。

一個潛在客戶認為,熟練的測試人員永遠不會損壞經過測試的系統,並且除非他們確切地承諾,否則他們拒絕與測試人員合作,是一位客戶,1.生活在童話獨角獸的夢幻世界中,2.幾乎可以保證只與骯髒的騙子做生意。在某些時候,他可能會幻想破滅。

對於道德而言,這是一種當務之急,對於滲透測試者在合同中加入有關可能破壞的條款。即使pentester擅長於他所做的事情,附帶損壞的風險也是真實的(因為損壞不是來自 pentester的優勢,而是來自測試系統設計的糟糕程度)並實施)。可能因為未警告客戶的 起訴而被起訴。

拒絕具有此類條款的合同的客戶有另一個名稱:“麻煩”。通常最好完全跳過此類客戶。

+1個客戶聞起來很有趣,退後一步。這是所有pentest活動中包含的100%標準語言。
在我看來,他讀它的意思是“我們可以對您的系統做我們想做的事,並在發生問題時要求'事故'”,而不是“由於不可預見的情況我們不想被起訴”。但是,是的,要避免。
@deworde對條件的任何澄清,例如“我們將採取所有合理的步驟以避免破壞系統”,以後可能會因其步驟不夠合理而被起訴。根據他們造成的損害的影響,很可能會超出他們的帳單,並需要大幅增加其費用(即:“為什麼筆測試要花費100萬美元?”“因為那是我們期望的結果可以起訴我們,如果您同意不起訴,可以享受900k的折扣”)。
@Matt我同意。這是無法理解的,不是無法傳達的。如果這是標準語言,那麼合同實際上不會*說*沒有任何其他內容,而沒有巨大的風險且上漲空間為零。在最壞的情況下,您最終會發送一條消息,表示您願意協商罪魁禍首。
user2213
2013-07-18 00:34:22 UTC
view on stackexchange narkive permalink

注意:我不是專業的pentester。而我使用的是備份軟件。

熟練且專業的pentester可以始終確保在滲透測試期間不會刪除或修改生產中的任何數據嗎?

我會說不,沒有絕對的保證,當您嘗試破壞事物時不會意外刪除某些內容。但是,話雖如此,一個pentester通常應該嘗試以不涉及刪除數據的方式來利用系統。例如,儘管每個人都喜歡的SQL語句是:

 從userid ='dave'的用戶中選擇*;刪除所有表;  

一種更負責任的方法只是列出所有數據:

 從userid ='2'或1 = 1;  

通常,我想大多數筆測試人員都會開發出一系列無損檢測工具,例如後者。

各種形式的Javascript注入可以使用簡單的概念證明代碼,例如 alert(“ exploited you”); ,而不是真正的利用代碼。

如果Pentest團隊擁有不能創建或修改數據的局限性?

我會拒絕。在無法將XSS存儲在數據庫中的情況下,如何顯示已存儲XSS的概念證明?總是會創建新數據。

有很多示例,即使是暫時的,利用程序也需要寫入數據。

請耐心等待的公司是否總是包含免責條款,以防萬一?

我還是在這裡擴展我的個人知識,但我要說的是是的。

但是,這首先要回到聘請筆測試公司的全部要點。筆測試的目的是識別可能需要評估的風險,並在壞人發現它們之前將其修復。

我也希望任何優秀的彭特(pester)會問,並且任何好的企業都會想到,一定程度的災難恢復。當然,您應該在系統上擁有某種形式的備份,以便可以根據需要進行還原。您不僅需要通過滲透測試來破壞您的數據,而且還可以確保確實受到壞人的破壞,這時您可能需要不污染的備份回滾。

我在這裡的唯一想法是,如果有一些“有用的”腳本使用警報系統並作用於以開頭的字符串,那麼即使是“ alert(“被您利用了”);`也可能降低性能。 ''e'`
@medivh可能是的。您希望有問題的公司為滲透測試人員提供有關其係統的一些文檔,以便他們知道如何執行不會破壞系統的工作...
@medivh甚至不必這麼複雜。如果大多數自動UI測試工具無法處理意外警報,它們將失敗。
Relaxing In Cyprus
2013-07-18 12:36:19 UTC
view on stackexchange narkive permalink

我在自己的網站上定期進行滲透測試。

我第一次運行該網站時,我將網站停頓了下來,並用垃圾郵件淹沒了他們的郵件服務器。

然後,刪除了一些表格,以消除垃圾郵件,並且可以識別並修復所有其他已知漏洞,而無需將服務器停頓下來。

坦率地說,剝削者的狡猾使我驚訝,我不得不塞進我沒有考慮過的漏洞。

但是事情是,在運行測試之前,我認為我的網站是安全的。我一直遵循最佳實踐來進行網站設計,但是仍然存在問題。

現在,借助事後的見解,我很欣賞測試可能會影響我的生產站點。

所以我要提前計劃。

我確保首先備份所有內容。

如果該站點確實非常重要,那麼我將創建一個完整的克隆,然後首先測試該克隆。

我從經驗中學到,如果創建克隆,請在其他服務器上創建它。否則,當克隆副本停止運行時,服務器仍會影響您的生產環境。

但是我仍然進行測試。您認為黑客如何訪問網站?他們大概以未經授權的方式運行這些測試。因此,在您的網站受到保護之前,它始終將很容易受到攻擊。最好是先進行測試,並採取適當的預防措施(備份等),比您最不期望的檢查結果要好得多。

所以,是的,這是可以接受的,但是也是可以預測的,應該進行相應的管理。

如果硬件很緊,您可以將測試克隆放入受限制的VM中。這樣,當它停止運行時,它僅使用25%的CPU進行研磨,而prod仍然可以使用75
絕對不要在生產服務器上(虛擬化與否)測試(虛擬化)vm應用程序可能存在的錯誤(例如:內核空間中的洩漏內存)
如果使用所備份來在另一台服務器上創建克隆,則還將測試災難恢復技能。
jmoreno
2013-07-21 07:30:00 UTC
view on stackexchange narkive permalink

標題的答案是“是”,客戶需要知道這一點!

此免責聲明不是CYA的情況,而是客戶準備所需的重要信息滲透測試。我不是筆測試員,但IMO不應將其埋在精美印刷的最後一頁上,而應在合同的第一頁,正面和中間以及大膽的字體中。客戶公司需要為出錯做好準備-需要進行備份,創建恢復計劃並實施備份等。讓客戶認為筆測試沒有風險是不負責任的。按照定義,您是在嘗試觸發錯誤的行為,而無法控制該壞行為的擴展範圍或行為。

您在帖子正文中對三個問題的回答是:(1)不,您無法保證對其他代碼(2)的有限形式的筆測試可能要在沒有故意修改或創建數據的情況下進行(如果您排除該應用程序可能執行的任何日誌記錄),但結果將不完整,最後( 3)您應該始終包含此免責聲明-為客戶帶來與您一樣多的利益。

測試人員基本上是在尋找可以利用的缺陷,並且絕不能保證他們不會發現缺陷。確實會損壞。考慮一個典型的軟件免責聲明,該聲明不旨在遇到或造成缺陷,然後考慮您可能沒有編寫要測試的代碼...

因此,答案應該是“是”,不是嗎?因為在滲透測試期間修改生產數據是可以接受的(並且可以預期的)。
如果您不打算以非標準的方式故意修改生產數據,則簽訂合同是不尋常但並非不負責任的。從技術上講,不可能保證未知的代碼庫不會在正常使用時造成損害,更不用說筆測試中涉及的異常使用了。我看到我應該擴大我的答案。
Francesco Manzoni
2013-07-19 14:40:35 UTC
view on stackexchange narkive permalink

也許您可以確保僅在某些條件下才能做到。顯然,Pentest是許多因素之間的折衷,某些因素直接阻礙了系統可用性,其中之一就是分析的深度。有人可能會辯稱,未經開發的滲透測試不是滲透測試。

過去,我不得不滲透一些以脆弱性而聞名的SCADA系統,我可以向您保證,有可能進行最大程度的調整工具要足夠溫和。例如,禁用NMAP指紋和增加數據包之間的延遲很有幫助。

不過,就我個人而言,我將從不回答您的問題,以保證向我的客戶提供此條款。我會告訴他我的話,但是從商業角度來講,如果在您的筆試期間他們的應用程序本身中斷了,您將不承擔任何責任。

+1表示沒有利用的滲透測試不是滲透測試
管理層只是將滲透測試視為“昂貴”,將漏洞評估視為“廉價”。如果他們付給您足夠的錢,那將永遠是筆試。
user29367
2013-08-11 01:16:33 UTC
view on stackexchange narkive permalink

“熟練而專業的pentester能否始終確保在滲透測試期間不會刪除或修改生產中的任何數據?”

否。

“如果Pentest團隊存在無法創建或修​​改數據的限制,那麼真的可以進行Pentest嗎?”

不要這樣認為。 。

“為了以防萬一,最嚴格的公司應該始終包括免責聲明嗎?”協議。我不知道有沒有責任保險限制以及其他保護措施的筆測試公司...

atdre
2015-04-19 12:20:23 UTC
view on stackexchange narkive permalink

滲透測試應遵循一種方法,即僅在非生產場景(例如分期或實驗室環境)中進行可能造成損壞的測試。

真正的問題不是刪除或修改數據,因為測試人員可以將那些測試用例留給非生產系統使用。真正的問題是留下了新數據,例如錯誤日誌或洩露機密信息的多餘錯誤文件,甚至是滲透測試程序本身的存在,包括滲透測試人員的客戶端數據材料。

另一問題滲透測試中普遍存在的是在​​演示或截屏期間顯示的其他客戶數據,工作電子郵件或瀏覽器書籤。

滲透測試在生產中已經進行了很多次,例如,由於網絡的行為,您不能保證似乎無害的測試會刪除某些內容。
我可以;也許你不能
我認為您沒有閱讀其餘答案,也沒有有效答案。如果程序員已經編程了該功能並且您無權訪問源代碼,那麼如何預測“搜索”按鈕會刪除數據庫中的信息?
這個論壇上某些遵循法律原則的人與我遵循法律精神的人之間的區別是,我可以從問題中重新解釋含義,並“質疑問題”。可以辯論。可以有不同的觀點。這就是我想要生活的世界。我所有的筆測試都是全面的知識。我總是總是首先獲得源代碼。
程序員在提出使他們的程序脆弱的方法方面具有無窮的創造力。例如,我使用的一個軟件(一個數據庫系統)可能會因為一個簡單的半開端口掃描桶而崩潰,並伴有數據丟失的風險。
我真的不認為任何對我的帖子發表評論或對我投反對票的人都根本不了解這裡的問題。他們沒有經驗。測試必須進行。測試推動了事情的發展。測試產品中的某些東西以及在開發人員或測試中的某些東西是必須的。不論是哪種安全測試和筆式測試,了解這兩種情況都有什麼弊端。


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