1 คะแนน โดย GN⁺ 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • แคมเปญ REF6598 ใช้ shared vault ของ Obsidian เพื่อแพร่ RAT PHANTOMPULSE
  • เป้าหมายคือผู้ทำงานด้านการเงินและคริปโตบน Windows และ macOS โดยล่อลวงผ่าน LinkedIn และ Telegram
  • การติดเชื้อเริ่มขึ้นเมื่อเปิดใช้งาน การซิงก์ community plugins จาก shared vault ด้วยตนเอง
  • ปลั๊กอิน Shell Commands และ Hider ที่เป็นอันตรายจะรันสคริปต์ และ PHANTOMPULL จะโหลด RAT
  • PHANTOMPULSE ตรวจสอบที่อยู่ C2 ผ่านธุรกรรม Ethereum ทำให้บล็อกได้ยากขึ้น

ลำดับการโจมตี

  • การเข้าถึงเบื้องต้นและการรัน

    • แคมเปญ REF6598 ใช้แอปจดบันทึก Obsidian ในทางที่ผิดเพื่อแพร่โทรจันควบคุมเครื่องจากระยะไกล (RAT) PHANTOMPULSE ที่ยังไม่เคยมีการบันทึกมาก่อน
    • ผู้โจมตีปลอมตัวเป็นบุคคลในวงการเวนเจอร์แคปิตอล ติดต่อเหยื่อผ่านเว็บไซต์เครือข่ายมืออาชีพ แล้วพาการสนทนาไปยังกลุ่ม Telegram แบบปิด
    • จากนั้นชักชวนให้เข้าร่วม shared Obsidian vault ที่โฮสต์อยู่บนคลาวด์โดยอ้างว่าใช้เพื่อการทำงานร่วมกัน
    • การเข้าถึงเบื้องต้นนี้เข้าข่าย MITRE ATT&CK T1566.002 Spearphishing Link
    • การติดเชื้อจะเริ่มเมื่อเหยื่อเปิดใช้งานฟังก์ชันซิงก์ “Installed community plugins” ภายใน Obsidian ด้วยตนเอง
    • shared vault ดังกล่าวมีปลั๊กอิน Obsidian ที่ดูเหมือนปกติอย่าง Shell Commands และ Hider เวอร์ชันอันตรายอยู่ และการเปิดใช้งาน community plugins จะนำไปสู่การรันโค้ด
    • ปลั๊กอิน Shell Commands ที่ถูกดัดแปลงจะรันสคริปต์อันตราย
    • ขั้นตอนที่หลอกให้ผู้ใช้รันไฟล์อันตรายนี้เข้าข่าย T1204.002 Malicious File
  • ขั้นตอนการติดเชื้อบน Windows และ macOS

    • บน Windows ปลั๊กอินอันตรายจะรันสคริปต์ PowerShell และสคริปต์นั้นจะดรอปตัวโหลด PHANTOMPULL
    • บน macOS กระบวนการคล้ายกันจะเกิดขึ้นผ่าน AppleScript
    • หลังจากนั้น PHANTOMPULL จะถอดรหัสและรันเพย์โหลดสุดท้ายคือ RAT PHANTOMPULSE
    • PHANTOMPULSE จะรันเพย์โหลดสุดท้ายในหน่วยความจำโดยตรงเพื่อหลบเลี่ยงการตรวจจับแบบอิงไฟล์ ซึ่งสอดคล้องกับ T1055 Process Injection

ความสามารถของ PHANTOMPULSE และวิธี C2

  • เมื่อทำงานแล้ว PHANTOMPULSE สามารถดักจับการพิมพ์คีย์บอร์ด ถ่ายภาพหน้าจอ ขโมยไฟล์ และรันคำสั่งตามอำเภอใจได้
  • การสื่อสาร C2 ถูกออกแบบในลักษณะที่เข้าข่าย T1102.002 Bidirectional Communication
  • PHANTOMPULSE จะตรวจสอบธุรกรรม Ethereum ล่าสุดของที่อยู่กระเป๋าเงินที่ฮาร์ดโค้ดไว้
  • ที่อยู่ IP ของเซิร์ฟเวอร์ C2 ถูกฝังอยู่ในข้อมูลธุรกรรมนั้น และมัลแวร์จะใช้ข้อมูลนี้เพื่อค้นหาเซิร์ฟเวอร์ที่จะรับคำสั่ง
  • วิธีนี้ทำให้เกิดกลไกค้นหาที่อยู่ C2 แบบกระจายศูนย์และทนต่อการเซ็นเซอร์ จึงทำให้การยุติโครงสร้างพื้นฐานของภัยคุกคามทำได้ยาก

ผลกระทบ

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

ตัวชี้วัดการตรวจจับ

  • โปรเซส

    • Obsidian.exe
    • ควรเฝ้าตรวจว่า Obsidian สร้าง child process อย่าง powershell.exe, cmd.exe, osascript หรือไม่
  • รูปแบบคำสั่งบนบรรทัดคำสั่ง

    • powershell -ExecutionPolicy Bypass
    • การรัน PowerShell ที่เริ่มจากแอปที่ไม่ใช่มาตรฐานอย่าง Obsidian ถือเป็นสัญญาณที่น่าสงสัย
  • ทราฟฟิกเครือข่าย

    • ควรเฝ้าตรวจการเชื่อมต่อขาออกไปยังโหนดหรือเกตเวย์ของบล็อกเชน Ethereum จากโปรเซสที่ไม่คาดว่าจะทำงานเช่นนี้
    • การเชื่อมต่อเหล่านี้อาจเป็นพฤติกรรมของ PHANTOMPULSE ที่กำลังตรวจสอบที่อยู่ C2
  • เส้นทางไฟล์

    • [Vault]/.obsidian/plugins/
    • ควรตรวจสอบว่ามีการสร้างหรือแก้ไขไฟล์ในไดเรกทอรีปลั๊กอินของ Obsidian จากภายนอก marketplace ปลั๊กอินอย่างเป็นทางการหรือไม่

การตรวจจับและการตอบสนอง

  • การเฝ้าตรวจโปรเซส: ต้องมี EDR rules ที่ตรวจจับและแจ้งเตือนเมื่อโปรเซส Obsidian รัน command-line interpreters อย่าง powershell.exe, cmd.exe, bash, osascript
  • การอบรมผู้ใช้: ผู้ใช้ในอุตสาหกรรมความเสี่ยงสูงควรตระหนักถึง social engineering และความเสี่ยงจากการนำความสามารถของเครื่องมือทำงานร่วมกัน เช่น shared vault และปลั๊กอิน ไปใช้ในทางที่ผิด
  • การควบคุมแอปพลิเคชัน: หากเป็นไปได้ ควรใช้ policy ควบคุมแอปพลิเคชันเพื่อจำกัดการติดตั้งและรัน community plugins ที่ไม่ได้รับอนุมัติในแอปอย่าง Obsidian
  • การเฝ้าตรวจเครือข่าย: ควรเฝ้าระวัง DNS query ที่ผิดปกติหรือการเชื่อมต่อ IP โดยตรงที่เกี่ยวข้องกับบริการบล็อกเชนจาก endpoint ที่ไม่ควรมีพฤติกรรมดังกล่าว

แนวทางบรรเทาความเสี่ยง

  • การตรวจสอบ community plugins: ต้องใช้ความระมัดระวังอย่างมากเมื่อเปิดใช้งานปลั๊กอินจาก third-party หรือชุมชนผู้พัฒนาในทุกแอปพลิเคชัน ควรติดตั้งจาก marketplace ที่เชื่อถือได้อย่างเป็นทางการเท่านั้น และตรวจสอบสิทธิ์ที่ปลั๊กอินร้องขอ
  • ปิดการซิงก์อัตโนมัติของ vault ที่ไม่น่าเชื่อถือ: ไม่ควรเปิดใช้งานการซิงก์ปลั๊กอินเมื่อเชื่อมต่อกับ Obsidian vault จากแหล่งที่ไม่รู้จักหรือไม่น่าเชื่อถือ
  • หลักการให้สิทธิ์น้อยที่สุด: แอปอย่าง Obsidian ควรรันด้วยสิทธิ์ผู้ใช้ทั่วไป ไม่ใช่สิทธิ์ผู้ดูแลระบบ เพื่อลดผลกระทบหากถูกเจาะระบบ
  • ความปลอดภัยของเอ็นด์พอยต์: ควรติดตั้ง EDR และโซลูชันแอนติไวรัสรุ่นล่าสุดเพื่อตรวจจับและบล็อกการรันสคริปต์ที่น่าสงสัยและเทคนิค process injection

การแมปมาตรการบรรเทาตาม MITRE ATT&CK

  • User Training
    • การฝึกให้ผู้ใช้รู้เท่าทันกลยุทธ์ social engineering และสงสัยคำเชิญให้ร่วมงานที่ไม่ได้ร้องขอ เป็นแนวป้องกันหลักของเวกเตอร์การโจมตีนี้
  • Execution Prevention
    • การใช้การควบคุมแอปพลิเคชันเพื่อป้องกันไม่ให้แอปอย่าง Obsidian รันสคริปต์อย่าง PowerShell สามารถตัดวงจรการโจมตีได้
    • D3FEND mapping: D3-EAL
  • Software Configuration
    • การตั้งค่าแอปพลิเคชันให้ปิดการติดตั้งปลั๊กอินจาก third-party หรือบังคับให้ต้องผ่านการอนุมัติอย่างเข้มงวด จะช่วยลดพื้นผิวการโจมตี
    • D3FEND mapping: D3-ACH

เอกสารอ้างอิง

1 ความคิดเห็น

 
GN⁺ 4 시간 전
ความคิดเห็นจาก Hacker News
  • ผมคือ CEO ของ Obsidian เอง กำลังจะมีอัปเดตใหญ่เกี่ยวกับความปลอดภัยของปลั๊กอินเร็ว ๆ นี้ และคิดว่าน่าจะช่วยคลายความกังวลหลายอย่างที่ถูกพูดถึงในเธรดนี้ได้
    มันเป็นปัญหาที่ยาก แต่เรากำลังทำอยู่ อย่างไรก็ตาม พาดหัวทำให้เข้าใจผิด บทความนี้เกี่ยวกับการโจมตีแบบวิศวกรรมสังคมที่ผู้ใช้ต้องกดปฏิเสธคำเตือนด้านความปลอดภัยหลายอย่างของ Obsidian ด้วยตัวเอง และเท่าที่ผมรู้ ยังเป็นเพียงระดับการพิสูจน์แนวคิด และยังไม่เห็นรายงานความเสียหายจริง

    • ผมพูดมาหลายปีแล้วว่าปลั๊กอินไม่ปลอดภัย ยังจำได้ชัดว่าผมเคยโดนถล่มใน Discord เพราะบอกว่าปลั๊กอินมีสิทธิ์เข้าถึงทั้งดิสก์ มันสายไปแล้ว
    • ตอนนี้ถึงขั้นที่แม้จะเปิดปลั๊กอินไว้ ก็จะมีตัวเลือกให้ย้ายโฟลเดอร์ .obsidianออกไปไว้นอก vault และตั้งให้ไม่สนใจโฟลเดอร์นั้นภายใน vault โดยปริยายแล้วหรือยัง?
    • ไม่แน่ใจว่าทำได้ยากแค่ไหน แต่คิดว่าถ้ามีกล่องโต้ตอบสิทธิ์การเข้าถึงแบบ Android จะช่วยได้มาก ปลั๊กอิน Obsidian 99% ไม่จำเป็นต้องมีสิทธิ์เข้าถึงทั้งดิสก์หรืออินเทอร์เน็ตเลย
    • การเปิดเผยซอร์สโค้ดของไคลเอนต์ก็น่าจะช่วยคลายความกังวลได้มาก
    • ที่ว่า “กดปฏิเสธคำเตือนด้านความปลอดภัยหลายอย่างอย่างตั้งใจ” นี่หมายถึงป๊อปอัปอะไรทำนองนั้นหรือเปล่า? คนส่วนใหญ่ก็กดอนุมัติอะไรแบบนั้นโดยไม่ค่อยคิด
      ผมคิดว่าปลั๊กอิน/ส่วนขยายควรถูกทำให้รันได้ยากกว่านี้โดยปริยาย เข้าใจว่าการเพิ่มอุปสรรคก่อนใช้ปลั๊กอินทำให้ผู้ใช้ฝืดขึ้น แต่ผมไม่คิดว่าจะมีวิธีทำให้การรันโค้ดสุ่มที่ไม่ได้ผ่านการตรวจสอบปลอดภัยได้จริง หากไม่มี sandbox หรือข้อจำกัดอื่น ๆ
  • นี่เป็นพาดหัวที่ชวนให้เข้าใจผิด ทำให้ดูเหมือนเป็นการโจมตี supply chain อีกครั้งที่ปลั๊กอินปกติถูกยึดและใช้กระจายมัลแวร์
    แต่ความจริงคือเหยื่อถูกเชิญเข้าไปทำงานร่วมกันใน vault ที่ซิงก์ไว้ และใน vault นั้นมีปลั๊กอินนอกทางการที่ส่ง RAT ฝังมาอยู่ก่อนแล้ว เป็นคนละเรื่องกันเลย

    • ตรงไหนที่ชวนให้เข้าใจผิด?
      เขียนว่า “Novel Campaign Abuses Obsidian Note-Taking App to Target Finance and Crypto Professionals with PHANTOMPULSE RAT” มันเป็นการโจมตีใหม่ ใช้ Obsidian ในทางที่ผิด เล็งเป้าคนกลุ่มหนึ่ง และ RAT ก็อยู่ใน vault ดังนั้นก็ดูเป็นคำอธิบายที่ตรงแล้ว
  • ผมชอบ Obsidian มากและใช้ทุกวัน แต่ไม่ใช้ปลั๊กอินชุมชนเพราะระบบสิทธิ์ยังไม่ดีพอ
    หวังว่าสักวันปลั๊กอินจะประกาศสิทธิ์ที่ต้องใช้ และแสดงให้ผู้ใช้เห็น ผมคิดว่าทีม Obsidian จะรับมือเรื่องนี้อย่างจริงจัง และรอดูว่าจะออกอะไรมา ผมเชื่อใจพวกเขา แต่ก็น่าตกใจที่มันถูกออกแบบมาตั้งแต่แรกโดยไม่มีระบบสิทธิ์และ sandbox ที่ดีกว่านี้

    • ผมเริ่มใช้ Obsidian เพราะเบื่อการใช้ VS Code เพื่อดูไฟล์ Markdown โชคดีที่ไม่จำเป็นต้องติดตั้งปลั๊กอิน ดูแล้วส่วนนี้เป็นการออกแบบที่แย่มากทีเดียว
  • “เหยื่อจะถูกขอให้เปิดฟังก์ชันซิงก์ ‘Installed community plugins’”
    Obsidian มีมาตรการป้องกันเพื่อหยุดการโจมตีแบบนี้อยู่แล้ว และเหยื่อก็ถูกโน้มน้าวให้มองข้ามมันไป มันก็แค่เหตุการณ์วิศวกรรมสังคมที่สำเร็จเท่านั้น การโจมตีนี้ไม่ได้ใช้ช่องโหว่ของ Obsidian หรือระบบปลั๊กอิน ดังนั้นจึงไม่อยากเห็น Obsidian ถูกลากลงเพราะพาดหัวแบบนี้

    • ผมไม่คิดอย่างนั้น https://obsidian.md/help/plugin-security#Plugin+capabilities
      “เนื่องจากข้อจำกัดทางเทคนิค Obsidian ไม่สามารถจำกัดปลั๊กอินให้มีเพียงสิทธิ์หรือระดับการเข้าถึงบางอย่างได้อย่างเชื่อถือได้ ดังนั้นปลั๊กอินจึงสืบทอดระดับการเข้าถึงเดียวกับ Obsidian”
      ปลั๊กอินชุมชนเข้าถึงไฟล์ในคอมพิวเตอร์ได้ เชื่อมต่ออินเทอร์เน็ตได้ และยังติดตั้งโปรแกรมเพิ่มได้ด้วย Obsidian ไม่มีมาตรการป้องกันอะไรเลย และการติดตั้งปลั๊กอินก็เท่ากับให้สิทธิ์เข้าถึงเต็มรูปแบบกับคอมพิวเตอร์ เรื่องแบบนี้เป็นแค่ปัญหาเรื่องเวลาเท่านั้น และผมมองว่าตั้งแต่ราวปี 2010 เป็นต้นมา การปล่อยระบบปลั๊กอินแบบนี้ออกมาเป็นความประมาทที่ไม่มีข้อแก้ตัว
    • ผมใช้และชอบ Obsidian มาก แต่คิดว่าคุณค่าของการเปิดเผยครั้งนี้คือการทำให้คนตระหนักเรื่องปลั๊กอิน และแสดงให้เห็นเส้นทางการโจมตี
      ผู้ใช้ที่ชำนาญน้อยกว่าอาจคิดว่า “ก็แค่กองไฟล์ Markdown เองนี่ คงไม่ต้องกังวลเรื่องมัลแวร์มากนักหรอก”
  • ทำไมระบบปลั๊กอินแทบทั้งหมดถึงถูกออกแบบแบบหละหลวมอย่างนี้? ผมสงสัยว่าเป็นเพราะไม่มีเฟรมเวิร์กพัฒนาปลั๊กอินดี ๆ ที่มีการแยกกัก/สิทธิ์การเข้าถึงที่เหมาะสม ทำให้มันเป็นงานเยอะเกินไป หรือเพราะคนไม่ค่อยรู้ว่าต้องมีอะไรบ้าง เลยมาเรียนรู้ก็ต่อเมื่อระบบของตัวเองถูกนำไปใช้ในทางที่ผิดแล้ว หรือเป็นทั้งสองอย่าง หรือมีเหตุผลอื่นอีก?

    • แก่นของเรื่องคือการแลกเปลี่ยนระหว่างความสามารถกับความปลอดภัย คุณอาจให้ผู้ใช้มีพลังมากและทำอะไรเจ๋ง ๆ ได้ หรือจะตัดความสามารถที่มีความหมายออกไปเกือบหมดแล้วทำให้ปลอดภัยก็ได้ โดยทั่วไปคนส่วนใหญ่มักเลือกความสามารถมากกว่าความปลอดภัย
      อีกปัญหาหนึ่งคือความปลอดภัยเป็นเรื่องยาก แต่การให้สิทธิ์เข้าถึงแบบครอบจักรวาลแล้วเพิ่มแค่ตัวกันขั้นพื้นฐานเป็นเรื่องง่าย
    • คุณต้องนิยามเฟรมเวิร์กและองค์ประกอบด้านความปลอดภัยที่ปลั๊กอินทั้งหมดจะต้องใช้ และต้องใช้เวลาในการออกแบบ นำไปใช้ ตรวจสอบ และดูแลรักษา
      การข้ามส่วนนั้นไปง่ายกว่ามาก พูดอีกอย่างก็คืองานมันเยอะจริง และให้แม่นยำกว่านั้นคือ ต้องมีผู้นำที่ยึดความปลอดภัยเป็นศูนย์กลางซึ่งเข้าใจว่านี่เป็นงานที่มากแต่เป็นงานที่ถูกต้อง
    • ผมเดาว่าเป็นเพราะขาดทรัพยากรในการออกแบบ web stack และอินเทอร์เฟซที่เหมาะสม ซอฟต์แวร์แบบนี้มักเขียนด้วยเฟรมเวิร์ก JS ระดับสูง จึงมีรูปแบบการไหลของข้อมูลที่ไม่ดีโดยพื้นฐาน และหลายครั้งก็เดินตามสิ่งที่ทำได้จริง มากกว่าการออกแบบอย่างมีเจตนา
      ถ้าจะออกแบบอย่างตั้งใจ อาจต้องลดระดับชั้น abstraction ลง และคง custom fork ของเฟรมเวิร์กนั้นไว้ ดังนั้นก็น่าจะออกแบบปลั๊กอินเหมือนการส่งบางส่วนของ context ที่แอปใช้อยู่เข้าไปแล้ว instantiate ไลบรารี สุดท้ายมันก็เป็นวิธีที่ง่ายที่สุดที่ทำให้ใช้งานได้ การแฮ็กที่ถูกเปิดเผยนี้ไม่ได้พูดถึง “ช่องโหว่” เฉพาะอะไร แต่ปลั๊กอิน Obsidian นั้นอยู่ในโหมดพระเจ้ามาโดยตลอด และผู้โจมตีก็แค่หลอกคนให้ใช้มันเท่านั้น การที่มี remote code execution รออยู่หลังป๊อปอัปไม่กี่อัน แล้วสุดท้ายยังโทษผู้ใช้อีก เป็นเรื่องน่าขัน นักพัฒนาควรรู้สึกละอาย
    • แม้แต่ปลั๊กอินของเบราว์เซอร์ Chrome ก็ยังมีปัญหาความปลอดภัยคล้ายกัน ทั้งที่มีเงินหลายหมื่นล้านดอลลาร์และนักพัฒนาฉลาด ๆ จำนวนมากทุ่มลงไป
      มันคล้ายกับการสร้าง app store ไว้ในแอป Apple App Store ลดแอปอันตรายด้วยการจำกัดอย่างเข้มงวดว่าใครโพสต์อะไรได้ และมีด่านการจ่ายเงินด้วย
    • ทำไมระบบปลั๊กอินถึงต้องหมายถึงsandboxโดยอัตโนมัติด้วย?
  • ต่อให้เป็นวิศวกรรมสังคมก็ตาม แต่ถ้าระบบปลั๊กอินถูกออกแบบให้เกิดเรื่องแบบนี้ได้ แพลตฟอร์มนี้ก็ใช้เป็นเครื่องมือแชร์ร่วมกันไม่ได้เลย
    รู้ไว้ก็ดี แต่สำหรับผม มันใกล้เคียงกับ “อย่ารับ shared Obsidian vault เด็ดขาด และให้ขอเป็นการส่งออกแบบข้อความล้วนแทน” มากกว่า “ถ้าจะใช้ shared Obsidian vault ต้องคงการตั้งค่านี้ไว้ให้ถูกต้อง”

  • ตอนที่ผมเริ่มใช้ Obsidian ใหม่ ๆ วิดีโอ YouTube ที่เห็นต่างก็แนะนำให้ใช้ปลั๊กอินชุมชน ถึงจะมีคำเตือนแบบนี้ ผมก็น่าจะเปิดใช้ปลั๊กอินชุมชนอยู่ดี
    นักพัฒนาปลั๊กอินที่เริ่มต้นด้วยเจตนาดี อาจเปลี่ยนเป็นเจตนาร้ายในภายหลังได้ และผู้ใช้ไม่มีทางรู้ ถึงผมจะเป็นนักพัฒนาและรู้ความเสี่ยงแบบนี้ ผมก็คงเปิดตัวเลือกปลั๊กอินชุมชนอยู่ดี อาจเป็นเพราะผมยอมรับความเสี่ยงได้สูง หวังว่าผมจะเป็นส่วนน้อยและไม่ใช่พฤติกรรมของผู้ใช้ส่วนใหญ่

  • เรื่องแบบนี้เริ่มระบาดเหมือนแฟชั่นนิด ๆ ทุกการโจมตีหรือการหาประโยชน์จากช่องโหว่ โดยเฉพาะการโจมตีแบบวิศวกรรมสังคม ไม่จำเป็นต้องมีชื่อสไตล์ Metal Gear หรือมีเว็บไซต์เสมอไป

  • ถ้าอ่านเนื้อหาจริง จะเห็นว่าปัญหาไม่ได้เริ่มจากปลั๊กอินในสโตร์ของ Obsidian แต่เริ่มจากvault อันตรายที่ถูกหลอกให้เปิด

  • ผมรัน Obsidian ด้วยสิทธิ์จำกัด ไม่มีการเข้าถึงเครือข่าย และไม่มีการเข้าถึงระบบไฟล์นอกไดเรกทอรีของมันเอง
    จะเปิดให้เข้าถึงเครือข่ายเฉพาะตอนอัปเดตปลั๊กอิน/ธีมเท่านั้น ผมก็ทำแบบเดียวกันกับแอปอื่น ๆ ที่สามารถรันโค้ดที่ไม่น่าเชื่อถือได้

    • พอจะแชร์ได้ไหมว่าคุณทำ sandbox ยังไง?