Chrome DevTools ช่วยปกป้องการโจมตี XSS ด้วยตนเองได้อย่างไร

Wolfgang Beyer
Wolfgang Beyer

การโจมตี Self-XSS คืออะไร

Self-XSS หรือ Cross-site Scripting ด้วยตัวเองเป็นการโจมตีแบบวิศวกรรมสังคมประเภทหนึ่งที่หลอกลวงให้คุณเรียกใช้โค้ดที่เป็นอันตรายในเว็บเบราว์เซอร์ ต่างจากการโจมตี XSS ทั่วไปซึ่งอาศัยช่องโหว่ในเว็บแอปพลิเคชันที่ให้ผู้โจมตีแทรกโค้ดที่เป็นอันตรายได้ การโจมตี Self-XSS อาศัยการดำเนินการที่อาจทำให้เกิดการเรียกใช้โค้ดของคุณเอง

โดยทั่วไปแล้ว การโจมตีด้วย Self-XSS นั้นเกี่ยวข้องกับผู้โจมตีที่หลอกลวงให้คุณคัดลอกและวางโค้ดที่เป็นอันตรายลงในคอนโซลเครื่องมือสำหรับนักพัฒนาเว็บของเบราว์เซอร์ โดยปกติแล้วผู้โจมตีจะหลอกลวงด้วยสัญญาว่าจะให้รางวัล ซึ่งอาจเป็น

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

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

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

เครื่องมือสำหรับนักพัฒนาเว็บใน Chrome พยายามลดการโจมตีด้วย XSS ด้วยตัวเองอย่างไร

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

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

Chrome DevTools ไว้วางใจนักพัฒนาซอฟต์แวร์ว่ารู้ว่ากำลังทำอะไรอยู่ เราไม่อยากทำให้นักพัฒนาแอปทำงานช้าลงหรือเสียสมาธิไม่ว่าในทางใดก็ตามเมื่อคัดลอกและวางโค้ด

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

เครื่องมือสำหรับนักพัฒนาเว็บจะแสดงคำเตือน XSS ด้วยตัวเองเมื่อใด

DevTools ใช้วิธีการเฮิวริสติกแบบง่ายมากในการตัดสินใจว่าจะแสดงคำเตือน XSS ด้วยตัวเองหรือไม่ โดยอิงตามประวัติคอนโซลของโปรไฟล์ผู้ใช้

หากโปรไฟล์ของคุณมีรายการในประวัติคอนโซลอย่างน้อย 5 รายการ เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์จะไม่แสดงคำเตือนหรือป๊อปอัปใดๆ ประวัติคอนโซลคือรายการคําสั่งที่คุณพิมพ์และดำเนินการในคอนโซล ต่อไปนี้คือคําสั่งที่คุณเห็นเมื่อวางเคอร์เซอร์ในคอนโซลและกดแป้นลูกศรขึ้นซ้ำๆ

คำเตือน XSS ที่เกิดขึ้นเองมีลักษณะอย่างไร

เมื่อผู้ใช้ที่ไม่มีประสบการณ์พยายามวางโค้ดลงในคอนโซล ระบบจะบล็อกการดำเนินการนี้และคอนโซลจะแสดงคำเตือนแทน

คำเตือน XSS ด้วยตัวเองในคอนโซล

คุณสามารถลบล้างคำเตือนนี้และเปิดใช้การวางได้ แต่ต้องพิมพ์ "allow pasting" ก่อน

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

กล่องโต้ตอบแบบโมดัล XSS ด้วยตัวเองในแผงแหล่งที่มา

และโปรดทราบว่าการปิดกล่องโต้ตอบนี้เพียงอย่างเดียวนั้นไม่เพียงพอที่จะเปิดใช้การวาง หากต้องการลบล้างคำเตือน คุณต้องพิมพ์ "allow pasting" ลงในช่องป้อนข้อมูล

การตั้งค่าดังกล่าวเป็นแบบครั้งเดียวใช่ไหม

ใช่ เมื่อคุณตัดสินใจอนุญาตการวางแล้ว คุณจะไม่ต้องกังวลกับคำเตือน XSS ด้วยตัวเองอีกต่อไป

เราหวังว่าวิธีนี้จะทำให้เกิดความสมดุลระหว่างประโยชน์และความรำคาญ การเพิ่มการขัดขวางนี้จะทำให้คุณอ่านคำเตือนได้มากขึ้น จึงช่วยลดโอกาสที่จะถูกโจมตีด้วย XSS ด้วยตัวเอง

เครื่องมือสำหรับนักพัฒนาเว็บของ Chrome จะเก็บ Flag ที่ระบุว่าจะแสดงคำเตือน XSS ด้วยตัวเองในโปรไฟล์ Chrome หรือไม่ ดังนั้น หากคุณสร้างโปรไฟล์ใหม่และเริ่มวางโค้ดลงในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ทันที ระบบจะบล็อกการวางและแสดงคำเตือน XSS ด้วยตัวเองแทน

คุณปิดใช้การทดสอบอัตโนมัติได้ไหม

แล้วการทดสอบอัตโนมัติล่ะ เครื่องมือทดสอบจํานวนมากจะสร้างโปรไฟล์ชั่วคราวใหม่สําหรับการทดสอบแต่ละครั้ง ดังนั้น หากคุณใช้เครื่องมือสำหรับนักพัฒนาเว็บเพื่อแก้ไขข้อบกพร่องการทดสอบอัตโนมัติ ระบบจะบล็อกการวางลงในคอนโซลในตอนแรก

หากต้องการหลีกเลี่ยงปัญหานี้ ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้

  • ใช้ Chrome สําหรับการทดสอบ ซึ่งเป็น Chrome เวอร์ชันต่างๆ ที่ออกแบบมาเพื่อการทดสอบและการทํางานอัตโนมัติโดยเฉพาะ คำเตือน XSS ด้วยตัวเองปิดอยู่

  • สำหรับเวอร์ชันการเผยแพร่อื่นๆ ของ Chrome ให้ส่ง Flag --unsafely-disable-devtools-self-xss-warnings บรรทัดคำสั่งไปยัง Chrome เพื่อปิดใช้กล่องโต้ตอบคำเตือน XSS ด้วยตัวเองโดยสมบูรณ์

บทสรุป

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

โดยเฉพาะอย่างยิ่งหากคุณทํางานในเว็บไซต์ที่เตือนเกี่ยวกับการโจมตี XSS ด้วยตัวเองผ่านบันทึกคอนโซล เรายินดีพูดคุยเกี่ยวกับการปรับใช้แนวทางของเราหรือวัดผลมาตรการบรรเทา XSS ด้วยตัวเอง

ดาวน์โหลดแชแนลตัวอย่าง

ลองใช้ Chrome Canary, Dev หรือ เบต้า เป็นเบราว์เซอร์สำหรับนักพัฒนาซอฟต์แวร์เริ่มต้น ช่องทางเวอร์ชันตัวอย่างเหล่านี้จะช่วยให้คุณเข้าถึงฟีเจอร์ล่าสุดของ DevTools, ทดสอบ API ของแพลตฟอร์มเว็บที่ล้ำสมัย และช่วยคุณค้นหาปัญหาในเว็บไซต์ก่อนที่ผู้ใช้จะพบ

ติดต่อทีมเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome

ใช้ตัวเลือกต่อไปนี้เพื่อพูดคุยเกี่ยวกับฟีเจอร์ใหม่ การอัปเดต หรือสิ่งอื่นๆ ที่เกี่ยวข้องกับเครื่องมือสำหรับนักพัฒนาเว็บ