Slack ยอมรับว่ามีการรั่วไหลของรหัสผ่านที่แฮชเป็นเวลาสามเดือน PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

Slack ยอมรับ แฮชรหัสผ่านรั่วเป็นเวลา XNUMX เดือน

Slack เครื่องมือการทำงานร่วมกันยอดนิยม (เพื่อไม่ให้สับสนกับชื่อเล่นของ Slackware ซึ่งเป็น distro Linux ที่ทำงานมายาวนานที่สุดในโลก) เพิ่งเป็นเจ้าของ SNAFU ด้านความปลอดภัยทางไซเบอร์

ตามข่าวในหัวข้อ ประกาศเกี่ยวกับการรีเซ็ตรหัสผ่าน Slackทางบริษัทยอมรับว่าได้แชร์ข้อมูลส่วนตัวมากเกินไปโดยไม่ได้ตั้งใจ “เมื่อผู้ใช้สร้างหรือเพิกถอนลิงก์คำเชิญที่แชร์สำหรับพื้นที่ทำงานของพวกเขา”

จาก 2022-04-17 ถึง 2022-07-17 (เราถือว่าทั้งสองวันรวมอยู่ด้วย) Slack กล่าวว่าข้อมูลที่ส่งไปยังผู้รับคำเชิญดังกล่าวรวม...

…รอมันอยู่…

…ที่ รหัสผ่านที่แฮชของผู้ส่ง.

เกิดอะไรขึ้น

คำแนะนำด้านความปลอดภัยของ Slack ไม่ได้อธิบายการละเมิดอย่างชัดเจน โดยกล่าวเพียงว่า “ [t] รหัสผ่านที่แฮชของเขาไม่ปรากฏต่อไคลเอนต์ Slack ใด ๆ การค้นพบว่าจำเป็นต้องมีการตรวจสอบการรับส่งข้อมูลเครือข่ายที่เข้ารหัสที่มาจากเซิร์ฟเวอร์ของ Slack”

เราเดาว่ามันแปลดังนี้:

“ผู้รับส่วนใหญ่จะไม่ได้สังเกตว่าข้อมูลที่พวกเขาได้รับนั้นรวมถึงข้อมูลรหัสผ่านที่แฮชไว้ด้วย เพราะข้อมูลนั้นแม้จะรวมอยู่ในแพ็กเก็ตเครือข่ายที่ส่งไป แต่ก็ไม่เคยแสดงให้พวกเขาเห็นโดยเจตนา และเนื่องจากข้อมูลถูกส่งผ่านการเชื่อมต่อ TLS ผู้ดักฟังจึงไม่สามารถดมกลิ่นได้ตลอดทาง เพราะข้อมูลจะไม่ถูกถอดรหัสจนกว่าจะถึงปลายอีกด้านของการเชื่อมต่อ”

นั่นเป็นข่าวดี

แต่แพ็กเก็ตเครือข่ายมักมีข้อมูลที่ผู้รับไม่เคยใช้หรือเห็นตามปกติ

ส่วนหัว HTTP เป็นตัวอย่างที่ดี เนื่องจากเป็นคำแนะนำสำหรับเบราว์เซอร์ของคุณ ไม่ใช่ข้อมูลสำหรับแสดงในหน้าเว็บที่คุณกำลังดูอยู่

และข้อมูลที่ไม่เกี่ยวข้องหรือมองไม่เห็นต่อผู้ใช้มักจะจบลงในบันทึกโดยเฉพาะอย่างยิ่งในบันทึกของไฟร์วอลล์ ซึ่งสามารถเก็บรักษาไว้อย่างไม่มีกำหนด

นั่นคือข่าวร้าย

เกลือ แฮช และยืด...

จากข้อมูลของ Slack ข้อมูลที่รั่วไหลไม่ได้เป็นเพียง แฮชแต่ เค็ม ซึ่งหมายความว่ารหัสผ่านของผู้ใช้แต่ละคนจะถูกผสมครั้งแรกกับข้อมูลสุ่มที่ไม่ซ้ำกันสำหรับผู้ใช้นั้นก่อนที่จะใช้ฟังก์ชันแฮช

โดยพื้นฐานแล้วแฮชเป็นฟังก์ชันทางคณิตศาสตร์ที่ "ไม่สามารถย้อนกลับได้" ซึ่งคำนวณได้ง่ายในทิศทางเดียว แต่ไม่ใช่ในอีกทางหนึ่ง

ตัวอย่างเช่น มันง่ายที่จะคำนวณว่า:

  SHA256("DUCK") = 7FB376..DEAD4B3AF008

แต่วิธีเดียวที่จะทำงาน "ถอยหลัง" จาก 7FB376..DEAD4B3AF008 ไปยัง DUCK คือการทำงาน ข้างหน้า จากทุกคำที่เป็นไปได้ในพจนานุกรม และดูว่ามีคำใดที่ออกมาพร้อมกับค่าที่คุณพยายามจะจับคู่:

  SHA256("AARDVARK") = 5A9394..467731D0526A [X] SHA256("AARON") = C4DDDE..12E4CFE7B4FD [X] SHA256("ABACUS") = BEDDD8..1FE4DE25AAD7 [X] . . 3400 ข้าม SHA256("BADGER") = 70E837..CEAD4B1FA777 [X] SHA256("BADGER") = 946D0D..7B3073C1C094 [X] SHA256("BAGPIPE") = 359DBE..BE193FCCB111 [X] . . 3200 ข้าม SHA256("CABAL") = D78CF4..85BE02967565 [X] SHA256("CACHE") = C118F9..22F3269E7B32 [X] SHA256("CAGOULE") = 5EA530..5A26C5B56DCF [X] . . 5400 ข้าม SHA256("DAB") = BBCC8E..E8B98CAB5128 [X] SHA256("DAFFODIL") = 75121D..D6401AB24A98 [X] SHA256("อันตราย") = 0BD727..4C86037BB065 [X] . . 3500 ข้าม SHA256("DUCK") =  7FB376..DEAD4B3AF008 [พบแล้ว!]

และการรวมเกลือต่อผู้ใช้หนึ่งรายซึ่งไม่จำเป็นต้องเป็นความลับ เพียงแต่ไม่ซ้ำกันสำหรับผู้ใช้แต่ละราย คุณมั่นใจได้ว่าแม้ว่าผู้ใช้สองคนจะเลือกรหัสผ่านเดียวกัน แต่พวกเขาจะไม่ลงเอยด้วยแฮชรหัสผ่านเดียวกัน

คุณสามารถเห็นผลของการใส่เกลือได้ที่นี่ เมื่อเราแฮชคำว่า DUCK ด้วยคำนำหน้าสามคำที่แตกต่างกัน:

  SHA256("RANDOM1-DUCK") = E355DB..349E669BB9A2 SHA256("RANDOM2-DUCK") = 13D538..FEA0DC6DBB5C <-- การเปลี่ยนเพียงหนึ่งไบต์อินพุตจะสร้างแฮชที่แตกต่างกันอย่างมาก SHA256("ARXXQ3H-DUCK") = 52AD92 .544208A19449

นอกจากนี้ยังหมายความว่าผู้โจมตีไม่สามารถสร้างรายการแฮชที่น่าจะคำนวณไว้ล่วงหน้า หรือสร้างตารางการคำนวณแฮชบางส่วน หรือที่เรียกว่า โต๊ะสายรุ้งที่สามารถเร่งการตรวจสอบแฮช (พวกเขาต้องการแฮชลิสต์ใหม่เอี่ยมหรือชุดโต๊ะสีรุ้งสำหรับเกลือทุกชนิดที่เป็นไปได้)

กล่าวอีกนัยหนึ่งคือไม่สามารถถอดรหัสรหัสผ่านที่แฮชและใส่เกลือได้เล็กน้อยเพื่อกู้คืนอินพุตดั้งเดิม โดยเฉพาะอย่างยิ่งหากรหัสผ่านดั้งเดิมนั้นซับซ้อนและสุ่มเลือก

สิ่งที่ Slack ไม่ได้พูดคือพวกเขาจะ ยืด แฮชรหัสผ่านด้วย และถ้าเป็นเช่นนั้น เป็นอย่างไร

การยืด เป็นศัพท์เฉพาะที่หมายถึงการทำซ้ำกระบวนการแฮชรหัสผ่านซ้ำแล้วซ้ำอีก ตัวอย่างเช่น 100,000 ครั้ง เพื่อขยายเวลาที่จำเป็นในการลองใช้คำในพจนานุกรมจำนวนมากเทียบกับการแฮชรหัสผ่านที่รู้จัก

หากต้องใช้เวลาหนึ่งวินาทีในการใส่คำศัพท์ในพจนานุกรม 100,000 คำผ่านกระบวนการเกลือและแฮชธรรมดา ผู้โจมตีที่รู้แฮชรหัสผ่านของคุณสามารถลองใช้คำในพจนานุกรมและอนุพันธ์ที่แตกต่างกัน 6 ล้านคำทุกนาที หรือเดามากกว่าหนึ่งพันล้านคำทุก ๆ สามชั่วโมง .

ในทางกลับกัน หากการคำนวณแบบเกลือและแฮชถูกขยายให้ใช้เวลาหนึ่งวินาทีในแต่ละครั้ง การหน่วงเวลาเพิ่มเติมอีกหนึ่งวินาทีเมื่อคุณพยายามเข้าสู่ระบบจะทำให้คุณรู้สึกรำคาญเล็กน้อยหรือไม่มีเลย...

…แต่จะลดจำนวนผู้โจมตีลงเหลือเพียง 3600 ครั้งต่อชั่วโมง ทำให้มีโอกาสน้อยที่พวกเขาจะมีเวลามากพอที่จะเดาอะไรก็ได้ยกเว้นรหัสผ่านที่ชัดเจนที่สุด

เป็นที่ทราบกันดีอยู่แล้วว่าอัลกอริธึม Salt-hash-and-stretch PBKDF2, bcrypt, scrypt และ Argon2ซึ่งสามารถปรับเปลี่ยนได้ทั้งหมดเพื่อเพิ่มเวลาในการลองเดารหัสผ่านของแต่ละคนเพื่อ ลดความมีชีวิต ของสิ่งที่เรียกว่าพจนานุกรมและการโจมตีด้วยกำลังเดรัจฉาน

A การโจมตีพจนานุกรม หมายความว่าคุณกำลังพยายามใช้รหัสผ่านเท่านั้น เช่น ทุกคำที่คุณนึกออก aardvark ไปยัง zymurgyแล้วยอมแพ้ อา การโจมตีด้วยกำลังเดรัจฉาน หมายถึงพยายามป้อนข้อมูลที่เป็นไปได้ทั้งหมด แม้แต่สิ่งที่แปลกและออกเสียงไม่ได้ จาก AAA..AAAA ไปยัง ZZZ..ZZZZ (หรือจาก 0000..000000 ไปยัง FFFF..FFFFFF ถ้าคุณคิดในแง่เลขฐานสิบหกไบต์ต่อไบต์)

จะทำอย่างไร?

Slack พูดว่าเกี่ยวกับ 1 ใน 200 ของผู้ใช้ (0.5% น่าจะเป็นตามบันทึกของจำนวนลิงก์คำเชิญที่แบ่งปันที่สร้างขึ้นในช่วงอันตราย) และจะบังคับให้ผู้ใช้เหล่านั้นรีเซ็ตรหัสผ่าน

คำแนะนำเพิ่มเติมบางประการ:

  • หากคุณเป็นผู้ใช้ Slack คุณอาจรีเซ็ตรหัสผ่านของคุณได้เช่นกัน แม้ว่าคุณจะไม่ได้รับแจ้งจากบริษัทให้ดำเนินการดังกล่าว เมื่อบริษัทยอมรับว่าตนไม่ระมัดระวังกับฐานข้อมูลรหัสผ่านโดยการรั่วไหลของแฮช คุณอาจสันนิษฐานได้ว่าแฮชของคุณได้รับผลกระทบ แม้ว่าบริษัทจะคิดว่าไม่เป็นเช่นนั้นก็ตาม ทันทีที่คุณเปลี่ยนรหัสผ่าน คุณจะทำให้แฮชเก่าไม่มีประโยชน์สำหรับผู้โจมตี
  • หากคุณไม่ได้ใช้ตัวจัดการรหัสผ่าน ให้พิจารณารับตัวจัดการรหัสผ่าน ตัวจัดการรหัสผ่านช่วย เลือกรหัสผ่านที่เหมาะสมดังนั้นจึงมั่นใจได้ว่ารหัสผ่านของคุณจะอยู่ในรายการรหัสผ่านที่อาจแตกได้ในกรณีเช่นนี้ โดยทั่วไปแล้วผู้โจมตีไม่สามารถโจมตีด้วยกำลังเดรัจฉานได้ เพราะมีรหัสผ่านที่เป็นไปได้มากเกินไปที่จะลองใช้ ดังนั้น พวกเขาจึงลองใช้รหัสผ่านที่น่าจะเป็นไปได้มากที่สุดก่อน เช่น คำหรือชุดคำและตัวเลขที่ชัดเจน ซึ่งจะยาวขึ้นและซับซ้อนขึ้นเมื่อการโจมตีดำเนินต่อไป ผู้จัดการรหัสผ่านสามารถจำรหัสผ่านแบบสุ่ม 20 อักขระได้ง่ายดายพอๆ กับที่คุณจำชื่อแมวของคุณได้
  • เปิด 2FA ถ้าทำได้ 2FA หรือ การตรวจสอบสิทธิ์แบบสองปัจจัยหมายความว่าคุณไม่เพียงแต่ต้องใช้รหัสผ่านในการเข้าสู่ระบบเท่านั้น แต่ยังต้องใช้รหัสแบบใช้ครั้งเดียวที่เปลี่ยนแปลงทุกครั้ง โดยทั่วไปแล้ว รหัสเหล่านี้จะถูกส่งไปยัง (หรือสร้างโดย) โทรศัพท์มือถือของคุณ และแต่ละรหัสจะใช้ได้เพียงไม่กี่นาที ซึ่งหมายความว่าแม้ว่าอาชญากรไซเบอร์จะทำการถอดรหัสรหัสผ่านของคุณ แต่ก็ไม่เพียงพอสำหรับพวกเขาที่จะเข้าควบคุมบัญชีของคุณ
  • เลือกอัลกอริธึม Salt-hash-and-stretch ที่มีชื่อเสียงเมื่อจัดการรหัสผ่านด้วยตัวเอง. ในกรณีที่โชคร้ายที่ฐานข้อมูลรหัสผ่านของคุณถูกละเมิด คุณจะสามารถให้ลูกค้าของคุณทราบรายละเอียดที่แม่นยำของอัลกอริทึมและการตั้งค่าความปลอดภัยที่คุณใช้ สิ่งนี้จะช่วยให้ผู้ใช้ที่มีความรู้ดีสามารถตัดสินด้วยตนเองว่าแฮชที่ขโมยมานั้นมีโอกาสถูกแคร็กในเวลาที่ผู้โจมตีมีได้มากน้อยเพียงใด

ประทับเวลา:

เพิ่มเติมจาก ความปลอดภัยเปล่า