**บทความนี้เขียนโดย; Beosin; Spinach Spinach นักวิจัยอิสระรับเชิญพิเศษ! (twitter@wzxznl) ร่วมเขียนโพสต์กับ Beosin นักวิจัยด้านความปลอดภัย Sivan; *
แฮ็กเกอร์ นี่คือการดำรงอยู่ที่ทำให้ทุกคนในระบบนิเวศ Web3 กลัว สำหรับฝั่งโปรเจ็กต์เมื่อแฮ็กเกอร์ทั่วโลกอาจจ้องมาที่คุณ ลักษณะโอเพ่นซอร์สของโค้ดทำให้ฝั่งโปรเจ็กต์กลัวที่จะเขียนโค้ดผิดบรรทัดเมื่อ พัฒนา ออกจากช่องโหว่ เมื่อเหตุการณ์ความปลอดภัยเกิดขึ้น ผลที่ตามมาจะยากที่จะแบกรับ
**สำหรับบุคคลทั่วไป หากคุณไม่เข้าใจสิ่งที่คุณกำลังทำ การโต้ตอบหรือลายเซ็นบนเครือข่ายทุกครั้งที่คุณทำอาจมีโอกาสถูกขโมยทรัพย์สินของคุณได้ ** ดังนั้น ปัญหาด้านความปลอดภัยจึงเป็นหนึ่งในปัญหาที่ยุ่งยากที่สุดในโลกของการเข้ารหัสเสมอ และเนื่องจากลักษณะของบล็อกเชน เมื่อทรัพย์สินถูกขโมยไป แทบจะไม่มีวิธีใดที่จะกู้คืนได้ ดังนั้นจึงเป็นสิ่งสำคัญอย่างยิ่งที่จะต้องมี ความรู้ด้านความปลอดภัยในโลกการเข้ารหัส
เมื่อเร็ว ๆ นี้ Spinach เพื่อนที่ดีของ **Beosin ได้ค้นพบวิธีการฟิชชิ่งแบบใหม่ที่ใช้งานในช่วงสองเดือนที่ผ่านมา ตราบเท่าที่ลายเซ็นถูกขโมย วิธีการนี้จะถูกซ่อนไว้อย่างมากและป้องกันได้ยาก และ ใช้แล้ว Uniswap ที่อยู่แบบโต้ตอบทั้งหมดอาจมีความเสี่ยง บทความนี้ Beosin และนักวิจัยอิสระ Pincai ร่วมกันดำเนินการทางวิทยาศาสตร์ที่เป็นที่นิยมเกี่ยวกับเทคนิคฟิชชิงลายเซ็นนี้และพยายามหลีกเลี่ยงการสูญเสียทรัพย์สินมากขึ้นสำหรับทุกคน **
ต่อไปนี้เป็นการบอกเล่าประสบการณ์ส่วนตัวของผักโขม:
เมื่อเร็ว ๆ นี้ เพื่อนคนหนึ่ง (ชื่ออย่างไม่เป็นทางการว่า Xiao;A) พบ Spinach หลังจากที่ทรัพย์สินในกระเป๋าสตางค์ของเขาถูกขโมย ซึ่งแตกต่างจากวิธีการขโมยทั่วไป Xiao;A; ไม่เปิดเผยรหัสส่วนตัวหรือโต้ตอบกับสัญญาของเว็บไซต์ฟิชชิ่ง ดังนั้น Spinach เริ่มสืบสวนการขโมยทรัพย์สิน
ในเบราว์เซอร์บล็อกเชน คุณจะเห็นว่า ;A; กระเป๋าเงินขนาดเล็กถูกขโมย; USDT; ถูกโอนผ่าน ;โอนจาก; โทเค็น; เมื่อโอนเงิน ฟังก์ชัน “โอน” ของสัญญาอัจฉริยะ “โทเค็น” จะถูกเรียกจริงๆ ;โอนจาก; หมายความว่าบุคคลที่สามโอน ;โทเค็น; ในที่อยู่หนึ่งไปยังอีกที่อยู่หนึ่ง **นี่ก็หมายความว่าทรัพย์สินที่ถูกขโมยนั้นถูกโอนมาจากที่อยู่อื่น โทเค็น แทนที่จะทำให้รหัสส่วนตัวของกระเป๋าเงินรั่วไหล
จากการสอบถามรายละเอียดธุรกรรม เราสามารถพบเบาะแสสำคัญบางประการ:
ที่อยู่ที่มีหมายเลขท้าย;f;d5;1; โอนทรัพย์สินของรายย่อย;A;ไปยังที่อยู่ที่มีหมายเลขท้าย;a;0;c;8;
การดำเนินการนี้โต้ตอบกับ;ใบอนุญาต;2;สัญญาของ;Uniswap;
มาถึงข้อสงสัยที่ว่า ที่อยู่ที่ลงท้ายด้วย ;f;d5;1 ได้รับอนุญาตจากเนื้อหานี้ได้อย่างไร เหตุใดจึงเกี่ยวข้องกับ “Uniswap”
ก่อนอื่น เราต้องรู้ว่าในการเรียกฟังก์ชัน “โอนจาก” ให้สำเร็จ หลักการคือผู้โทรจำเป็นต้องมีโควต้า “โทเค็น” นั่นคือ “อนุมัติ” ผมเชื่อว่าทุกคนที่มี ดำเนินการบนห่วงโซ่จะต้องคุ้นเคยกับมัน เมื่อเราใช้ “Dapp” บางอย่างเมื่อเกี่ยวข้องกับการโอนทรัพย์สินเราจำเป็นต้องดำเนินการอนุญาต (อนุมัติ) ก่อนเพื่อให้สัญญา “Dapp” มีสิทธิ์ โอนทรัพย์สินของเรา
ในการไขปริศนานี้ เราต้องขุดต่อไป และคำตอบอยู่ในบันทึกการโต้ตอบของที่อยู่ที่ลงท้ายด้วย ;f;d5;1;, ที่ที่อยู่นี้ ;โอนจาก;โอนเล็ก;A; ก่อน สินทรัพย์ คุณจะเห็นว่าที่อยู่ได้ดำเนินการ “อนุญาต” ด้วย และออบเจกต์การโต้ตอบของการดำเนินการทั้งสองนี้คือสัญญา "Uniswap; ของ “Permit;2” จากนั้นฟังก์ชัน “ใบอนุญาต” และ “ใบอนุญาต Uniswap” ;2;สถานการณ์เป็นอย่างไรบ้าง?
ใบอนุญาต Uniswap; 2; สัญญาคือ; Uniswap; ในตอนท้ายของ; 2022; สัญญาอัจฉริยะใหม่ที่เปิดตัว ตามแถลงการณ์อย่างเป็นทางการ นี่คือสัญญาการอนุมัติโทเค็นที่อนุญาตให้แชร์และจัดการการอนุญาตโทเค็นในแอปพลิเคชันต่างๆ สร้าง ประสบการณ์ผู้ใช้ที่เป็นหนึ่งเดียว คุ้มราคา และปลอดภัยยิ่งขึ้น
และในอนาคต เมื่อโครงการจำนวนมากขึ้นรวมกับใบอนุญาต 2 ใบอนุญาต 2 สามารถเป็นมาตรฐานในทุกแอปพลิเคชัน โทเค็น ได้รับการอนุมัติ Permit;2 จะปรับปรุงประสบการณ์ของผู้ใช้โดยลดต้นทุนการทำธุรกรรมในขณะที่เพิ่มความปลอดภัยของสัญญาอัจฉริยะ
เรามาทำความเข้าใจกันก่อนว่าทำไม “Uniswap” ถึงต้องการเปิดใช้ "Permit;2; สมมติสถานการณ์หนึ่ง เมื่อเราต้องการ “สลับ” กับ “Dex” บางตัว วิธีการโต้ตอบแบบดั้งเดิมคือเราต้องอนุญาต (อนุมัติ) ให้สิ่งนี้ "Dex แล้วก็ “Swap” ซึ่งปกติแล้วเราจะเสียค่าธรรมเนียม “Gas” สองครั้ง และค่าเสียดทานก็สูงเกินไปสำหรับผู้ใช้ ผมเชื่อว่าทุกคนเคยมีประสบการณ์เช่นนี้
ที่มาของภาพ:
การเปิดตัว “ใบอนุญาต 2” อาจเปลี่ยนแปลงกฎของเกมระบบนิเวศ “Dapp” ทั้งหมด พูดง่ายๆ ก็คือ วิธีการดั้งเดิมคือคุณต้องให้สิทธิ์ทุกครั้งที่คุณโต้ตอบกับ “Dapp” สำหรับการโอนสินทรัพย์ และ ใบอนุญาต 2; ขั้นตอนนี้สามารถละเว้นได้ ซึ่งสามารถลดต้นทุนการโต้ตอบของผู้ใช้ได้อย่างมีประสิทธิภาพและทำให้ผู้ใช้ได้รับประสบการณ์ที่ดีขึ้น
วิธีแก้ไขคือ;ใบอนุญาต;2;ในฐานะคนกลางระหว่างผู้ใช้และ;Dapp; ผู้ใช้เพียงแค่อนุญาตการอนุญาตของ;โทเค็น;ไปยัง;ใบอนุญาต;2;สัญญา รวมทั้งหมด;ใบอนุญาต2;สัญญา ;Dapp; จำนวนเงินที่อนุญาตนี้สามารถใช้ร่วมกันได้ สำหรับผู้ใช้ จะช่วยลดต้นทุนการโต้ตอบและปรับปรุงประสบการณ์ของผู้ใช้ สำหรับ “Dapp” การปรับปรุงประสบการณ์ของผู้ใช้ทำให้ผู้ใช้และเงินมากขึ้น นี่เป็นสถานการณ์ที่ win-win แต่ในขณะเดียวกัน เวลานี้อาจเป็นดาบสองคมและปัญหาอยู่ที่วิธีที่ ;อนุญาต;2; โต้ตอบ
ในโหมดการโต้ตอบแบบดั้งเดิม ไม่ว่าจะเป็นการอนุญาตหรือการโอนเงิน เป็นการโต้ตอบบนห่วงโซ่สำหรับผู้ใช้ของการดำเนินการ และ ;Permit;2; เปลี่ยนการดำเนินการของผู้ใช้ให้เป็นลายเซ็นแบบ off-chain และการดำเนินการทั้งหมดบน chain จะกระทำโดยบทบาทระดับกลาง (เช่น ;Permit;2;สัญญาและฝ่ายโครงการที่รวม ;Permit;2; เป็นต้น ) ประโยชน์ที่ได้รับจากโครงร่างนี้คือเนื่องจากบทบาทของการโต้ตอบในห่วงโซ่ถูกโอนจากผู้ใช้ไปยังบทบาทระดับกลาง แม้ว่าผู้ใช้จะไม่มี “ETH” ในกระเป๋าเงิน เขาก็สามารถใช้ “โทเค็น” อื่นเพื่อ ชำระค่าธรรมเนียม “ค่าน้ำมัน” หรือรับคืนทั้งหมดโดยบทบาทระดับกลาง ทั้งนี้ ขึ้นอยู่กับตัวเลือกของบทบาทระดับกลาง
ที่มาของภาพ:
แม้ว่าการเกิดขึ้นของ “Permit;2” อาจเปลี่ยนกฎของเกม “Dapp” ในอนาคต จะเห็นได้ว่านี่เป็นดาบสองคมที่แข็งแกร่ง สำหรับผู้ใช้ ลายเซ็นแบบออฟไลน์เป็นวิธีที่ง่ายที่สุดในการป้องกันตนเอง เช่น เมื่อเราลงชื่อเข้าใช้ “Dapp” ด้วยกระเป๋าเงิน เราจำเป็นต้องมีลายเซ็นเพื่อเชื่อมต่อ และคนส่วนใหญ่ไม่ได้ตรวจสอบเนื้อหาของลายเซ็นอย่างระมัดระวังและไม่เข้าใจเนื้อหาของลายเซ็น และนี่คือ สถานที่ที่น่ากลัวที่สุด
เข้าใจ;อนุญาต;2;สัญญา กลับไปที่เหตุการณ์เล็ก ๆ;A; เหตุการณ์ เราเข้าใจว่าทำไมทรัพย์สินถึงถูกขโมยและโต้ตอบกับ;อนุญาต;2;ทำสัญญา แล้วให้ Spinach ทำซ้ำสิ่งนี้;อนุญาต; 2. วิธีฟิชชิงลายเซ็น ก่อนอื่น ข้อกำหนดเบื้องต้นที่สำคัญคือกระเป๋าเงินที่ถูกฟิชชิ่งจำเป็นต้องมี “โทเค็น” ที่ได้รับอนุญาตให้ “Uniswap”; ใบอนุญาต "2; ;Dapp; หรือ ;Swap; บน Uniswap; ทั้งหมดจำเป็นต้องได้รับอนุญาตจาก ;ใบอนุญาต; 2; สัญญา (ผักโขมในภาพด้านล่างใช้ปลั๊กอินความปลอดภัย)
อีกประเด็นที่น่ากลัวคือ ไม่ว่าคุณต้องการ “Swap” เป็นจำนวนเท่าใด สัญญา “Permit;2” ของ Uniswap; จะอนุญาตให้คุณอนุญาต “Token” ตามค่าเริ่มต้น แม้ว่า “MetaMask” จะอนุญาตให้คุณกำหนดอินพุต จำนวน แต่ฉันเชื่อว่าคนส่วนใหญ่จะคลิกโดยตรงที่ค่าสูงสุดหรือค่าเริ่มต้น และค่าเริ่มต้นของ ;Permit;2; เป็นจำนวนไม่จำกัด…
นอกจากนี้ยังหมายความว่าตราบเท่าที่คุณมีปฏิสัมพันธ์กับ “Uniswap” และอนุมัติจำนวนเงินในสัญญา “อนุญาต 2” หลังปี 2023 คุณจะมีความเสี่ยงจากการหลอกลวงแบบฟิชชิ่งนี้
เนื่องจากการโฟกัสอยู่ที่ฟังก์ชัน ;Permit; ที่โต้ตอบกับ ;Permit;2; สัญญาในที่อยู่ซึ่งลงท้ายด้วย ;f;d5;1; ฟังก์ชันนี้เพียงแค่ใช้กระเป๋าเงินของคุณเพื่อให้สิทธิ์คุณในการ ;Permit; 2; " โทเค็น" ของสัญญาจะถูกโอนไปยังที่อยู่อื่น กล่าวคือ ตราบใดที่คุณได้รับลายเซ็นของคุณ แฮ็กเกอร์สามารถรับอำนาจ “โทเค็น” ในกระเป๋าเงินของคุณและโอนทรัพย์สินของคุณออกไปได้
คุณอาจคิดว่าฟังก์ชัน “ใบอนุญาต” เป็นวิธีการเซ็นสัญญาออนไลน์ ฟังก์ชันนี้ช่วยให้คุณ (PermitSingle) ลงนามล่วงหน้าใน “สัญญา” ที่อนุญาตให้ผู้อื่น (spender) ใช้โทเค็นบางส่วนของคุณในอนาคต
ในเวลาเดียวกัน คุณต้องให้ลายเซ็น (ลายเซ็น) เช่นเดียวกับการเซ็นสัญญากระดาษ เพื่อพิสูจน์ว่า “สัญญา” นี้ลงนามโดยคุณจริงๆ
แล้วฟังก์ชันนี้ทำงานอย่างไร?
โฟกัสอยู่ที่ฟังก์ชัน ;verify; และฟังก์ชัน _updateApproval;
จะเห็นได้ว่าฟังก์ชันการยืนยันจะรับข้อมูลทั้งสาม v, r, s จากพารามิเตอร์ข้อมูลลายเซ็น v, r, s เป็นค่าของธุรกรรมลายเซ็นและสามารถใช้เพื่อกู้คืนที่อยู่ ของลายเซ็นการทำธุรกรรม ดังที่แสดงในรูปด้านบน จะเห็นได้จากรหัสที่หลังจากสัญญากู้คืนที่อยู่ของลายเซ็นการทำธุรกรรม มันจะเปรียบเทียบกับที่อยู่ของเจ้าของโทเค็นที่เข้ามา หากเหมือนกัน การตรวจสอบจะผ่าน และการเรียกไปยังฟังก์ชัน _updateApproval; จะดำเนินต่อไป หากต่างกัน ธุรกรรมจะถูกย้อนกลับ
เมื่อผ่านการตรวจสอบลายเซ็น ฟังก์ชัน _updateApproval; จะถูกเรียกใช้เพื่ออัปเดตค่าการให้สิทธิ์ ซึ่งหมายความว่าสิทธิ์ของคุณได้รับการโอนแล้ว ในขณะนี้ สะดวกที่จะเรียกฟังก์ชัน ;transferfrom; เพื่อโอนโทเค็นไปยังที่อยู่ที่ระบุหลังจากได้รับอนุญาต ดังที่แสดงในโค้ดด้านล่าง
ตกลง หลังจากอธิบายฟังก์ชัน “อนุญาต” แล้ว มาดูธุรกรรมจริงบน chain กัน เราสามารถดูรายละเอียดของการโต้ตอบนี้:
เจ้าของ มีขนาดเล็ก A ที่อยู่กระเป๋าเงิน (หมายเลขท้าย 308;a)
รายละเอียด คุณสามารถดูผู้มีอำนาจ โทเค็น ที่อยู่สัญญา (USDT) และจำนวนเงินและข้อมูลอื่นๆ
อะไรต่อมิอะไร คือที่อยู่ของแฮ็กเกอร์ที่มีหมายเลขหาง;f;d5;1;
sigDeadline; คือเวลาที่มีผลบังคับใช้ของลายเซ็น และ;signature; คือข้อมูลลายเซ็นของ Small;A;
และเมื่อมองย้อนกลับไปที่บันทึกการโต้ตอบของ xiao;A; เราจะพบว่า **xiao;A; ใช้ “Uniswap” มาก่อน และคลิกจำนวนเงินอนุญาตเริ่มต้นซึ่งเกือบจะไม่จำกัด **
การตรวจสอบง่ายๆ คือ ** มีขนาดเล็ก A; ได้รับอนุญาตให้ “Uniswap Permit” ในกระบวนการใช้ “Uniswap” ก่อน 2; ไม่จำกัด USDT จำนวนเงิน แต่เล็กน้อย A; บังเอิญเมื่อดำเนินการกระเป๋าเงินตกอยู่ใน ; Permit;2;signature phishing trap ออกแบบโดยแฮ็กเกอร์ แฮ็กเกอร์มีลายเซ็นของ small;A และใช้ลายเซ็นของ small;A ใน;Permit;2;contract;Permit;and;Transfer From; สองการดำเนินการที่ถ่ายโอน ทรัพย์สินขนาดเล็ก A; ออกไป** และสิ่งที่ Spinach สังเกตได้คือสัญญาอนุญาต 2 สัญญาของ "Uniswap เพิ่งเริ่มใช้งานเมื่อไม่กี่เดือนก่อน
แหล่งที่มา:
และในบันทึกการโต้ตอบพบว่าเกือบทั้งหมดเป็นที่อยู่ฟิชชิ่ง (Fake_Phishing) และผู้คนมักถูกหลอกอยู่เสมอ
แหล่งที่มา:;
##ป้องกันอย่างไร?
เมื่อพิจารณาว่าสัญญา “Uniswap Permit; 2” อาจได้รับความนิยมมากขึ้นในอนาคต และจะมีการรวมโครงการ “ใบอนุญาต 2;” สัญญาสำหรับการอนุญาตและการแบ่งปันมากขึ้น เราสามารถคิดถึงวิธีการป้องกันที่มีประสิทธิภาพได้ดังต่อไปนี้:
1 ทำความเข้าใจและจดจำเนื้อหาลายเซ็น:
รูปแบบลายเซ็นของใบอนุญาตมักประกอบด้วย เจ้าของ ผู้ใช้จ่าย คุณค่า nonce และ รูปแบบ (การดาวน์โหลดปลั๊กอินความปลอดภัยเป็นตัวเลือกที่ดี)
เราขอแนะนำปลั๊กอินต่อต้านฟิชชิ่ง “Beosin” ต่อไปนี้ให้กับผู้อ่านและเพื่อนๆ ทุกคน ซึ่งสามารถระบุเว็บไซต์ฟิชชิ่งส่วนใหญ่ในช่อง Web3 และปกป้องกระเป๋าเงินและความปลอดภัยของทรัพย์สินของทุกคน
ดาวน์โหลดปลั๊กอินป้องกันฟิชชิ่ง:
2 กระเป๋าเงินสินทรัพย์และกระเป๋าเงินโต้ตอบใช้แยกกัน:
หากคุณมีสินทรัพย์จำนวนมาก ขอแนะนำให้ใส่สินทรัพย์ทั้งหมดไว้ในกระเป๋าเงินเย็น และใส่เงินจำนวนเล็กน้อยในกระเป๋าเงินแบบโต้ตอบบนเครือข่าย ซึ่งสามารถลดการสูญเสียได้อย่างมากในกรณีของการหลอกลวงแบบฟิชชิง
3 อย่าอนุญาตจำนวนเงินมากเกินไปเพื่อ;อนุญาต;2;ทำสัญญาหรือยกเลิกการอนุญาต:
เมื่อคุณ “สลับ” บน “Uniswap” คุณจะอนุญาตเฉพาะในจำนวนที่คุณต้องการโต้ตอบ ดังนั้นแม้ว่าการโต้ตอบแต่ละครั้งจะต้องมีการอนุญาตอีกครั้ง แต่ก็มีค่าใช้จ่ายในการโต้ตอบอยู่บ้าง แต่คุณสามารถหลีกเลี่ยงปัญหาจาก “ใบอนุญาต 2; ลงชื่อ” ตกปลา. หากคุณให้สิทธิ์โควต้าแล้ว คุณจะพบปลั๊กอินความปลอดภัยที่เกี่ยวข้องเพื่อยกเลิกการให้สิทธิ์
**4 ระบุลักษณะของโทเค็นว่ารองรับหรือไม่ อนุญาต ฟังก์ชัน: **
ในอนาคต โทเค็น “ERC;20” จำนวนมากขึ้นเรื่อยๆ อาจใช้โปรโตคอลส่วนขยายนี้เพื่อใช้งานฟังก์ชัน “อนุญาต” สำหรับคุณ คุณต้องสนใจว่าโทเค็นที่คุณถืออยู่รองรับฟังก์ชันนี้หรือไม่ ถ้าใช่ สำหรับ โทเค็น ระมัดระวังเป็นพิเศษในการทำธุรกรรมหรือการจัดการ และตรวจสอบอย่างเคร่งครัดว่าลายเซ็นที่ไม่รู้จักแต่ละรายการเป็นลายเซ็นของฟังก์ชัน “อนุญาต” หรือไม่
5 หากมีโทเค็นเก็บไว้ในแพลตฟอร์มอื่นหลังจากถูกโกง จำเป็นต้องกำหนดแผนการช่วยเหลือที่ครอบคลุม:
เมื่อคุณพบว่าคุณถูกฉ้อโกงและโทเค็นของคุณถูกแฮ็กเกอร์โอนออกไป แต่คุณยังมีโทเค็นที่เก็บไว้ในแพลตฟอร์มอื่นด้วยวิธีการต่างๆ เช่น การจำนำ ฯลฯ คุณจะต้องถอนออกและโอนไปยังที่อยู่ที่ปลอดภัย ที่ เวลานี้ คุณต้องรู้ว่าแฮ็กเกอร์อาจติดตามคุณตลอดเวลา โทเค็นคงเหลือของที่อยู่ เนื่องจากเขามีลายเซ็นของคุณ ตราบใดที่โทเค็นปรากฏในที่อยู่ของคุณที่ถูกขโมย แฮ็กเกอร์สามารถถ่ายโอนโดยตรง ในเวลานี้ จำเป็นต้องกำหนดกระบวนการช่วยเหลือโทเค็นที่สมบูรณ์ กระบวนการแยกโทเค็นและการถ่ายโอนโทเค็นสองกระบวนการจำเป็นต้องดำเนินการพร้อมกัน ธุรกรรมของแฮ็กเกอร์ไม่สามารถแทรกเข้าไปได้ คุณสามารถใช้การถ่ายโอน “MEV” ซึ่งต้องใช้บล็อกเชนบางส่วน ความรู้และทักษะด้านโค้ด , คุณยังสามารถมองหาบริษัทรักษาความปลอดภัยมืออาชีพ เช่น Beosin ทีมงานเพื่อใช้สคริปต์ยึดการทำธุรกรรมเพื่อให้บรรลุ
ฉันเชื่อว่าจะมีฟิชชิงที่ใช้ “ใบอนุญาต 2;” มากขึ้นเรื่อย ๆ ในอนาคต **วิธีการฟิชชิงลายเซ็นนี้ถูกซ่อนไว้อย่างมากและยากที่จะป้องกัน และด้วยการใช้งานที่กว้างขึ้นของ "ใบอนุญาต 2; จะมี ที่อยู่ที่อยู่ใต้นั้นมากขึ้นเรื่อยๆ ฉันหวังว่า คุณที่อยู่หน้าจอจะสามารถเผยแพร่ไปยังผู้คนจำนวนมากขึ้นหลังจากอ่านบทความนี้เพื่อหลีกเลี่ยงไม่ให้มีคนถูกขโมยมากขึ้น **