- แพ็กเกจ Bitwarden CLI สำหรับ npm ถูกฝังมัลแวร์เป็นส่วนหนึ่งของ การโจมตีซัพพลายเชน Checkmarx ที่กำลังดำเนินอยู่ และขอบเขตผลกระทบที่ยืนยันได้ในตอนนี้จำกัดอยู่ที่บิลด์
@bitwarden/cli2026.4.0 - โค้ดอันตราย
bw1.jsที่รวมอยู่ในแพ็กเกจ ใช้อินฟราสตรักเจอร์และวิธี obfuscation แบบเดียวกับaudit.checkmarx[.]cx/v1/telemetryและยังสอดคล้องกับร่องรอยการเจาะ CI/CD ผ่าน GitHub Action ที่ถูกฝังมัลแวร์ - เป้าหมายการเก็บข้อมูลไม่ได้มีแค่ GitHub token แต่ครอบคลุม credential ของ AWS, Azure, GCP,
.npmrc, SSH keys, environment variables และแม้แต่ไฟล์ตั้งค่า Claude/MCP - ข้อมูลที่ขโมยได้ถูกนำไปใช้สร้างและ commit ไปยัง GitHub repository สาธารณะ, กระจายการติดเชื้อซ้ำผ่านการ publish ใหม่ โดยใช้ npm token และฉีด workflow เพิ่มเติม รวมถึงมีฟังก์ชันสร้าง persistence เช่นการแก้ไข
~/.bashrcและ~/.zshrc - องค์กรที่ใช้งาน Bitwarden CLI ควรจัดการเหตุการณ์นี้ในฐานะ การเปิดเผย credential และ การเจาะ CI/CD โดยการตรวจสอบ CI logs และเปลี่ยนความลับที่อาจรั่วไหลเป็นสิ่งสำคัญ
ภาพรวม
- แพ็กเกจ Bitwarden CLI บน npm ถูกฝังมัลแวร์เป็นส่วนหนึ่งของ การโจมตีซัพพลายเชน Checkmarx ที่กำลังดำเนินอยู่ และเวอร์ชันเป้าหมายที่ยืนยันแล้วคือ
@bitwarden/cli2026.4.0- มัลแวร์ถูกฝังอยู่ใน
bw1.jsที่รวมมากับแพ็กเกจ - เส้นทางการโจมตีสอดคล้องกับร่องรอยการใช้ GitHub Action ที่ถูกฝังมัลแวร์ภายใน CI/CD pipeline ของ Bitwarden และตรงกับรูปแบบแคมเปญที่พบใน repository อื่น ๆ
- มัลแวร์ถูกฝังอยู่ใน
- ขอบเขตที่ยืนยันได้จนถึงตอนนี้จำกัดอยู่ที่ บิลด์ Bitwarden CLI และการฝังมัลแวร์เป็นไปตามเวกเตอร์ซัพพลายเชน GitHub Actions ที่ระบุใน Checkmarx campaign ที่กว้างกว่า
- เกี่ยวข้องเฉพาะแพ็กเกจ CLI บน npm เท่านั้น
- ส่วนขยาย Chrome, MCP server และงานเผยแพร่อย่างเป็นทางการอื่น ๆ ยังไม่พบว่าได้รับผลกระทบในขณะนี้
- การสืบสวนยังดำเนินต่อไป และจะมีการเปิดเผยการวิเคราะห์ทางเทคนิคแบบเต็ม เวอร์ชันที่ได้รับผลกระทบ ตัวบ่งชี้การ compromise และแนวทางรับมือเพิ่มเติม
- หากใช้งาน Bitwarden CLI จำเป็นต้อง ตรวจสอบ CI logs และ หมุนเปลี่ยนความลับ ที่อาจมีโอกาสรั่วไหล
การวิเคราะห์ทางเทคนิค
- เพย์โหลดอันตราย
bw1.jsใช้อินฟราสตรักเจอร์หลักร่วมกับmcpAddon.jsของ Checkmarx ที่ถูกวิเคราะห์เมื่อวันก่อน- ใช้ C2 endpoint เดียวกันคือ
audit.checkmarx[.]cx/v1/telemetryและถูก obfuscate ด้วย__decodeScrambledและ seed0x3039 - ยังทำการขโมย token และเผยแพร่ซ้ำผ่าน npm registry รวมถึงการ exfiltration แบบ commit ผ่าน GitHub API
- ใช้ C2 endpoint เดียวกันคือ
- โครงสร้างเพย์โหลดที่ฝังก็อยู่ในตระกูลเดียวกัน
- ภายในโครงสร้าง gzip+base64 มีสคริปต์ Python ที่ scrape หน่วยความจำของ GitHub Actions
Runner.Workerเพื่อขโมย GitHub token - ยังมี loader
setup.mjsสำหรับแพ็กเกจ npm ที่ใช้เผยแพร่ซ้ำ, GitHub Actions workflow YAML, RSA public key ที่ hardcode ไว้ และสตริงแถลงการณ์เชิงอุดมการณ์
- ภายในโครงสร้าง gzip+base64 มีสคริปต์ Python ที่ scrape หน่วยความจำของ GitHub Actions
- ขอบเขตการเก็บ credential กว้างมาก
- GitHub token ถูกเก็บจากการ scrape หน่วยความจำ
Runner.Workerและจาก environment variables - AWS credential ถูกค้นหาจากไฟล์ใน
~/.aws/และ environment variables - Azure token ถูกรวบรวมผ่าน
azdและ GCP credential ผ่านgcloud config config-helper .npmrc, SSH keys, environment variables และไฟล์ตั้งค่า Claude/MCP ก็เป็นเป้าหมายด้วย
- GitHub token ถูกเก็บจากการ scrape หน่วยความจำ
- มีการยืนยันรายละเอียดของ วิธี exfiltration ผ่าน GitHub อย่างชัดเจน
- สร้าง repository สาธารณะภายใต้บัญชีของเหยื่อ โดยใช้รูปแบบชื่อธีม Dune
{word}-{word}-{3digits} - commit ผลลัพธ์ที่ถูกเข้ารหัส และใส่ token ลงใน commit message พร้อม marker
LongLiveTheResistanceAgainstMachines
- สร้าง repository สาธารณะภายใต้บัญชีของเหยื่อ โดยใช้รูปแบบชื่อธีม Dune
- รวมถึงมีกลไกแพร่กระจายผ่านซัพพลายเชนด้วย
- ใช้ npm token ที่ขโมยมาเพื่อค้นหาแพ็กเกจที่มีสิทธิ์เขียน แล้ว เผยแพร่ซ้ำโดยแทรก preinstall hook
- ฉีด GitHub Actions workflow เพื่อเก็บ repository secrets เพิ่มเติม
- มี kill switch สำหรับ locale รัสเซีย
- หาก locale ของระบบขึ้นต้นด้วย
"ru"จะหยุดการทำงานอย่างเงียบ ๆ - ตรวจสอบ
Intl.DateTimeFormat().resolvedOptions().localeและ environment variables ได้แก่LC_ALL,LC_MESSAGES,LANGUAGE,LANG
- หาก locale ของระบบขึ้นต้นด้วย
- รันไทม์คือ Bun v1.3.13 และดาวน์โหลดมาจาก GitHub Releases
จุดที่ต่างจากเหตุการณ์ Checkmarx
bw1.jsมีตัวบ่งชี้การ compromise เพิ่มเติมที่ไม่มีอยู่ในเอกสารเหตุการณ์ของ Checkmarx- ใช้ไฟล์ล็อกที่ hardcode ไว้คือ
/tmp/tmp.987654321.lockเพื่อป้องกันการรันพร้อมกัน - ฉีดเพย์โหลดลงใน
~/.bashrcและ~/.zshrcเพื่อสร้าง persistence ผ่าน shell profile - ใช้ การสร้างแบรนด์อย่างชัดเจน เช่นตั้งคำอธิบาย repository เป็น
Shai-Hulud: The Third Comingและใส่สตริงดีบัก"Would be executing butlerian jihad!"
- ใช้ไฟล์ล็อกที่ hardcode ไว้คือ
- แม้เครื่องมือที่ใช้ร่วมกันจะชี้อย่างมากว่าเชื่อมโยงกับระบบนิเวศมัลแวร์เดียวกัน แต่ลักษณะการปฏิบัติการกลับทำให้การระบุผู้กระทำทำได้ยากขึ้น
- หลังการค้นพบการโจมตี Checkmarx กลุ่ม TeamPCP อ้างผ่านบัญชีโซเชียล
@pcpcatsว่าเป็นฝีมือของตน - มัลแวร์ดังกล่าวพยายามพรางตัวด้วยคำอธิบายที่ดูเหมือนปกติ
- หลังการค้นพบการโจมตี Checkmarx กลุ่ม TeamPCP อ้างผ่านบัญชีโซเชียล
- เพย์โหลดครั้งนี้มีท่าทีเปิดเผยต่างออกไป
- สัญลักษณ์เชิงอุดมการณ์ ถูกฝังอยู่ในมัลแวร์โดยตรง เช่นชื่อ repository ว่า Shai-Hulud, แถลงการณ์
"Butlerian Jihad"และ commit message ที่ยกการต่อต้านเครื่องจักรขึ้นมา - จึงยังเป็นไปได้หลายทาง ทั้งผู้ปฏิบัติการรายอื่นที่ใช้อินฟราสตรักเจอร์เดียวกัน, กลุ่มย่อยที่มีอุดมการณ์เข้มข้นกว่า หรือการเปลี่ยนท่าทีต่อสาธารณะของแคมเปญเดิม
- สัญลักษณ์เชิงอุดมการณ์ ถูกฝังอยู่ในมัลแวร์โดยตรง เช่นชื่อ repository ว่า Shai-Hulud, แถลงการณ์
ข้อแนะนำ
- องค์กรที่ติดตั้งแพ็กเกจ Bitwarden บน npm ที่เป็นอันตราย ควรจัดการเหตุการณ์นี้ในฐานะ การเปิดเผย credential และ การเจาะ CI/CD
- ให้ลบแพ็กเกจที่ได้รับผลกระทบออกจากระบบนักพัฒนาและสภาพแวดล้อม build ทันที และเปลี่ยน credential ทั้งหมดที่อาจสัมผัสกับสภาพแวดล้อมดังกล่าว
- รวมถึง GitHub token, npm token, cloud credential, SSH keys และความลับของ CI/CD
- บน GitHub ควรตรวจสอบการสร้าง repository ที่ไม่ได้รับอนุญาตและ workflow ที่ผิดปกติ
- ควรตรวจสอบไฟล์ที่ไม่คาดคิดใต้
.github/workflows/, การรัน workflow ที่น่าสงสัย, การดาวน์โหลด artifact และ repository สาธารณะที่ใช้รูปแบบชื่อธีม Dune{word}-{word}-{3digits} - หากอาจได้รับผลกระทบ ให้ตรวจสอบ repository ที่เพิ่งถูกเผยแพร่ว่ามีคีย์เวิร์ดต่อไปนี้หรือไม่
atreidescogitorfedaykinfremenfutargesseritgholaharkonnenheighlinerkanlykralizeclasgunlazamelangementatnavigatorornithopterphibianpowindahpranaprescientsandwormsardaukarsayyadinasietchsiridarsligstillsuitthumpertleilaxu
- ควรตรวจสอบไฟล์ที่ไม่คาดคิดใต้
- บน npm ควร audit ว่ามีการเผยแพร่ที่ไม่ได้รับอนุญาตหรือไม่
- ตรวจสอบการ publish ที่ไม่ได้รับอนุมัติ, การเปลี่ยนเวอร์ชัน และ install hook ที่ถูกเพิ่มเข้ามาใหม่
- ในสภาพแวดล้อมคลาวด์ ควรทบทวน access logs ใหม่
- จำเป็นต้องติดตามการเข้าถึงความลับที่ผิดปกติ การใช้ token และ credential ที่ถูกออกใหม่
- บน endpoint และ runner ควรติดตามร่องรอยการเข้าถึงไฟล์และอินฟราสตรักเจอร์ exfiltration ที่สังเกตพบ
- ควรค้นหาการเชื่อมต่อออกภายนอกไปยัง
audit[.]checkmarx[.]cx - ตรวจสอบว่ามี การรัน Bun ในสภาพแวดล้อมที่ปกติไม่เคยใช้หรือไม่
- ควรตรวจสอบร่องรอยการเข้าถึง
.npmrc,.git-credentials,.env, ที่เก็บ cloud credential,gcloud,az,azd - ตรวจสอบการมีอยู่ของ
/tmp/tmp.987654321.lockและการแก้ไข~/.bashrc,~/.zshrc
- ควรค้นหาการเชื่อมต่อออกภายนอกไปยัง
- ใน GitHub Actions ควรทบทวนว่ามีการสร้าง workflow ที่ไม่ได้รับอนุญาตหรือไม่
- ต้องตรวจสอบว่า workflow ถูกสร้างบน temporary branch หรือไม่
- ควรตรวจสอบด้วยว่ามีการสร้างหรือดาวน์โหลด artifact เช่น
format-results.txtหรือไม่
- ในระยะยาว ควรลด รัศมีความเสียหาย จากเหตุการณ์ซัพพลายเชนในอนาคต
- ลดขอบเขตสิทธิ์ของ token และใช้ credential อายุสั้นเมื่อทำได้
- จำกัดสิทธิ์ในการสร้างและเผยแพร่แพ็กเกจ และเพิ่มความเข้มงวดของสิทธิ์ GitHub Actions
- ปิดการเข้าถึง artifact ที่ไม่จำเป็น และเฝ้าติดตาม repository สาธารณะหรือการเปลี่ยนแปลง workflow ที่เกิดนอกขั้นตอน release ปกติ
ตัวบ่งชี้การ compromise
-
แพ็กเกจอันตราย
-
ตัวบ่งชี้เครือข่าย
94[.]154[.]172[.]43https://audit.checkmarx[.]cx/v1/telemetry
-
ตัวบ่งชี้ระบบไฟล์
/tmp/tmp.987654321.lock/tmp/_tmp_<Unix Epoch Timestamp>/package-updated.tgz
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
สงสัยว่ามีวิธีป้องกันที่ดีกว่า การกำหนดเวลารอขั้นต่ำก่อนปล่อยรีลีส หรือไม่
แค่ใส่
min-release-age=7ใน.npmrcก็น่าจะช่วยให้คน 334 คนที่ได้รับ@bitwarden/cli 2026.4.0ซึ่งถูกอัปโหลดเมื่อราว 19 ชั่วโมงก่อน แล้วภายหลังพบว่าเป็นอันตราย หลีกเลี่ยงได้แล้วแนวคิดนี้ใช้ได้ค่อนข้างดีกับกรณีอย่าง
axios,ua-parser-js,node-ipcด้วย และถึงจะกันกรณีที่แฝงตัวนานแบบevent-streamไม่ได้ แต่ก็ดูเหมือนจะได้ผลกับการโจมตีซัพพลายเชนแบบฉับพลันส่วนใหญ่มีตัวอย่างการตั้งค่าสำหรับ npm/pnpm/bun/uv ว่าจะใส่ระยะเวลารออย่างไร และเพราะยังไม่มีเครื่องมือแบบคลิกเดียวเพื่อตรวจสอบและนำไปใช้ จึงทำ https://depsguard.com ขึ้นมาเอง
เพิ่งไปเจอ https://cooldowns.dev ซึ่งเป็นไอเดียคล้ายกันเหมือนกัน
มันไม่ได้แค่ตั้งเวลารอขั้นต่ำก่อนปล่อยรีลีส แต่ทำหน้าที่เป็นแรปเปอร์ครอบ npm/uv ฯลฯ เพื่อตรวจสอบแต่ละ dependency ก่อนติดตั้ง โดยเทียบกับ ฐานข้อมูลช่องโหว่ เชิงพาณิชย์เพื่อหา known issue หรือสัญญาณน่าสงสัย
ในโลกจริงมักจะมีคนอัปเดตทันทีเสมอ แต่กระบวนการที่ทำให้เหตุการณ์แบบนี้ถูกเปิดเผยก็ดูจะพึ่งพาผู้ใช้ที่อัปเดตเร็วอยู่เหมือนกัน
ถ้าจำเป็นต้องดึง registry binary มาใช้ตรง ๆ ก็ใช้ cooldown เพื่อลดความเสี่ยงได้บ้าง
สำหรับเคสหางยาวที่ลามไปถึงฝั่ง GitHub ก็ดูเหมือนต้องใช้ทั้ง heuristic ของ commit/maintainer และ การวิเคราะห์การเปลี่ยนแปลงโค้ดด้วย AI แล้วให้มนุษย์เข้ามารีวิวเมื่อมีสัญญาณผิดปกติ
อนึ่ง ฉันทำงานอยู่ที่นี่
แก่นของเหตุการณ์นี้คือ build pipeline ถูกยึด จนมีการปล่อยแพ็กเกจที่ปนเปื้อนออกมา
ถึงอย่างนั้น ถ้าคุณวางของสำคัญต่อธุรกิจไว้บน npm ก็น่าจะควร pinning dependency เอาไว้
นักพัฒนาหลายคนคิดว่า lockfile ก็พอแล้ว แต่ถ้ายังมีช่วง
^ค้างอยู่ ตอนอัปเดต lockfile มันก็อาจดึงเวอร์ชันใหม่ที่ฉันไม่ได้เลือกอย่างชัดเจนเข้ามาได้ถ้าเป็นระบบที่อาจกระทบถึงความอยู่รอดของบริษัท ความยุ่งยากระดับนี้ก็คุ้มที่จะรับไว้
https://github.com/doy/rbw คือ ทางเลือก Rust แทน Bitwarden CLI
ecosystem ของ Rust เองก็ดูจะค่อย ๆ โตไปทาง dependency tree ที่ใหญ่และลึกแบบ npm เหมือนกัน แต่ก็ยังมีจำนวนผู้เขียนที่ต้องเชื่อใจน้อยกว่ากรณีที่พบบ่อยใน JavaScript มาก
แต่อย่างน้อยเวอร์ชันก็ถูก pin ไว้
rbw + vaultwardenก็ทำงานได้ค่อนข้างดีเหมือนเป็น Bitwarden เวอร์ชัน Rust ที่ self-hostableหรือไม่ก็อาจทำให้ภาษาใส่ความสามารถเพิ่มเข้าไปใน standard library มากขึ้น
ประสบการณ์กับ Bitwarden CLI แย่มาก
พอรัน
bw listก็นึกว่าจะเห็นแค่ชื่อรหัสผ่าน แต่จริง ๆ แล้วมันแสดง ทั้งรหัสผ่านและรหัส TOTP ปัจจุบันทั้งหมด ออกมาหมดที่น่ากลัวยิ่งกว่าคือพอ ssh เข้าเซิร์ฟเวอร์แล้วเปิด weechat ใน tmux ก็พบว่าเนื้อหาทั้งหมดของคำสั่ง
bwเข้าถึงได้จาก input history ของ weechatไม่เข้าใจเลยว่าทำไมถึงเป็นแบบนั้น และมันค้างอยู่ข้ามทั้ง tmux และ weechat session ต้องรีบูตเซิร์ฟเวอร์ถึงจะหาย
หลังจากนั้นก็ลบ
bwCLI ทันที และไม่คิดจะติดตั้งอีกสำหรับบริบท เทอร์มินัลที่ใช้คือ ghostty
สงสัยว่าใน weechat มี extension
bwcliอะไรสักอย่างหรือเปล่า และเพิ่งรู้จากครั้งนี้เองว่า Bitwarden มี CLI ด้วยฉันใช้ keepass บนเครื่องโลคัล
ไม่เคยใช้ CLI แต่ใช้ ปลั๊กอินเบราว์เซอร์ อยู่
ถ้าอันนี้โดนเจาะคงแย่มาก แต่ก็ไม่รู้ว่าต้องทำอย่างไรถึงจะป้องกันได้
เลยกำลังคิดว่าอาจต้องใช้ เวอร์ชันเก่าที่ผ่านการตรวจสอบแล้ว ต่อไป
มันทำให้รู้สึกแปลกดีที่ชีวิตส่วนใหญ่ของฉันผูกอยู่กับการที่ความลับเหล่านี้ยังคงเป็นความลับต่อไป
เพราะแบบนั้นฉันเลยไม่ใช้ ส่วนขยายเบราว์เซอร์ ของตัวจัดการรหัสผ่านเลย
หลังจากเคยเห็นผลิตภัณฑ์ที่มีปัญหาด้านความปลอดภัยจากการเชื่อมกับเบราว์เซอร์ ก็เลี่ยงหมด ส่วนการเชื่อมกับ iOS ไว้ใจมากกว่านิดหน่อยแต่ก็ยังระวังอยู่
ทั้ง package manager สำหรับงานพัฒนา, OS package manager, ส่วนขยายเบราว์เซอร์, ไปจนถึง auto-update ของแอปแบบ standalone
บริษัทอย่าง Socket ต้องมีเวลาพอจะตรวจจับอัปเดตที่เป็นอันตราย แต่ถ้าทุกคนดาวน์โหลดกันภายในไม่กี่นาทีหลังเผยแพร่ การตรวจจับแบบนั้นก็แทบไม่มีความหมาย
แนะนำการตั้งค่าแบบนี้มาก
เห็นหัวข้อแล้วตกใจอยู่เหมือนกัน แต่ก็รู้สึกว่าตัวเองได้ทำสิ่งที่สมเหตุสมผลทั้งหมดแล้วโดยไม่ถึงขั้นหวาดระแวงเกินไป
https://cooldowns.dev
https://depsguard.com
อันที่สองฉันเป็นคนดูแลเอง และถ้ารู้จักอันแรกก่อนก็คงไม่จำเป็นต้องสร้างขึ้นมา
ทั้งคู่ทำงานแทบเหมือนกัน ฝั่งฉันใช้ Rust เลยดู overkill ไปหน่อย
สิ่งสำคัญที่สุดตรงนี้คือ แค่ npm install ก็เพียงพอแล้ว
ถ้าจุดถูกเจาะอยู่ที่
preinstallความเชื่อที่ว่าค่อยไปตรวจหลังติดตั้งก็พังทันทีเพราะถึงตอนนั้น payload ก็ได้โอกาสทำงานไปแล้ว
เรื่องนี้ยิ่งน่าสนใจในสภาพแวดล้อมแบบ agent, CI, ephemeral sandbox เพราะถึงช่วงเวลาที่เปิดรับความเสี่ยงจะสั้น แต่ถ้าการติดตั้งเกิดขึ้นอัตโนมัติซ้ำ ๆ ก็โดนได้อยู่ดี
อีกจุดที่น่าสังเกตคือ payload นี้ไม่ได้มุ่งแค่ความลับ แต่ยังเล็งไปที่ การตั้งค่า AI tooling ด้วย
การแก้ไข shell profile อาจกลายเป็นช่องทางที่ทำให้ context ที่ coding assistant รอบถัดไปจะอ่าน ถูกปนเปื้อนได้จริงพอสมควร
มุมมองนี้เขียนไว้ยาวกว่านี้พร้อมงาน AgentSH ที่ https://www.canyonroad.ai/blog/the-install-was-the-attack/
อย่างไรเสียสุดท้ายก็ต้องไปรันไบนารีจริงอยู่ดี
และถ้าจะเถียงกันจริง ๆ ก็สามารถดาวน์โหลดแพ็กเกจก่อนเพื่อตรวจสอบได้ตั้งแต่ก่อนติดตั้ง แต่ถ้าไม่ได้เข้าใจอย่างลึกซึ้งว่าตัวติดตั้งรับประกันอะไรและมีขอบเขตแค่ไหน การไว้ใจกระบวนการดาวน์โหลดและแตกโค้ดอันตรายออกมาแบบครึ่ง ๆ กลาง ๆ ก็ดูแปลกกว่าเสียอีก
มี kill switch ตาม locale รัสเซีย ด้วย ฟังดูทั้งกล้าและขี้ขลาดในเวลาเดียวกัน
Discretion is the better part of valorขึ้นมาหลายอันพูดง่าย ๆ คือดูเหมือนท่าทีแบบ ไม่ยิงใส่เท้าตัวเอง
ในเอกสารรั่ว
Vault7ก็มีการกล่าวถึงว่า NSA และ CIA จงใจทิ้งร่องรอยแบบนี้ไว้เพื่อทำให้ต้นทางสับสน และก็เป็นเทคนิคที่รัฐอื่น ๆ ใช้ได้เหมือนกันมันดูเป็น ร่องรอยหลอกให้หลงทาง ที่โจ่งแจ้งเกินไป แต่ขณะเดียวกันก็ชวนให้รู้สึกแรงว่ามีรัฐเข้ามาเกี่ยวข้อง
ถ้าเป็นผู้ใช้ KeePass ความเครียดแบบนี้จะน้อยกว่ามาก
แค่ในช่วง 5 ปีที่ผ่านมา การใช้ KeePass กับโครงสร้างพื้นฐานแบบโลคัลก็ช่วยหลบเหตุการณ์ด้านความปลอดภัยไปได้หลายครั้ง
ไม่ได้แปลว่าเครื่องมือสำหรับ KeePass จะไม่มีปัญหาแบบนี้ได้ เลยยังไม่ค่อยเข้าใจว่าต่างกันตรงไหน
ที่ผ่านมาคิดว่าทำไม่ได้ แต่ก็ยอมรับว่าไม่ได้ศึกษาลึก
ถ้าสองอุปกรณ์ออฟไลน์อยู่แล้วต่างคนต่างเพิ่มรหัสผ่าน จากนั้นกลับมาออนไลน์อีกทีจะจัดการอย่างไร
ถ้าเข้ารหัสแบ็กอัปแล้ว รหัสของมันจะเก็บไว้ที่ไหน แล้วรหัสผ่านของผู้ให้บริการคลาวด์เองจะเก็บไว้ที่ไหน
อีกเรื่องที่น่าประทับใจเป็นพิเศษในการโจมตีครั้งนี้คือ ผู้โจมตีต้องกะจังหวะให้ตรงกับช่วงที่ GitHub ไม่ล่ม พอดี
https://mrshu.github.io/github-statuses/
เพราะแบบนี้ฉันจึงไม่ใช้ ตัวจัดการรหัสผ่านจาก third party เลย
เพราะมันต้องเชื่ออย่างต่อเนื่องว่าพวกเขาจะดูแลเรื่องความปลอดภัย การอัปเดต และแบ็กอัปได้ถูกต้อง
ฉันทำ ตัวสร้างรหัสผ่านแบบ stateless ขึ้นมาเอง ทำให้ไม่ต้องมีการแบ็กอัปหรือซิงก์ข้อมูลข้ามอุปกรณ์เลย
วิธีคือใส่มาสเตอร์พาสเวิร์ดยาวและแข็งแรงมาก พร้อมชื่อบริการและชื่อผู้ใช้ จากนั้นคำนวณ scrypt hash ด้วยพารามิเตอร์ที่เหมาะสมเพื่อให้ brute force แทบเป็นไปไม่ได้
สำหรับบัญชีสำคัญก็ใช้ 2FA ร่วมด้วย