ผมแฮ็ก Perplexity Computer จนได้สิทธิ์ใช้งาน Claude Code แบบไม่จำกัด

@yousifa
อังกฤษ4 เดือนที่ผ่านมา · 12 มี.ค. 2569
3.2M
5.0K
415
166
5.4K

TL;DR

Yousif Astarabadi สาธิตวิธีการใช้ช่องโหว่ .npmrc ใน Node.js บน Perplexity Computer เพื่อขโมย proxy token และเข้าถึงโมเดล Claude ได้โดยไม่ต้องเสียค่าใช้จ่ายในบัญชีของเขา

หนึ่งพรอมต์ คำสั่งเชลล์สามคำสั่ง ผมใช้ AI ของพวกเขาเองแฮ็กตัวเอง

นี่คือบั๊กประเภทหนึ่งที่อาจมีอยู่ในทุกผลิตภัณฑ์ AI แบบหลายเอเจนต์ที่วางจำหน่ายในปัจจุบัน และวิธีแก้ไขคือรูปแบบการออกแบบที่ยังไม่มีใครในวงการพูดถึง

นี่คือเรื่องราวทั้งหมด

ผมไม่ได้ตั้งใจจะแฮ็กอะไร ผมกำลังวิจัยว่า Perplexity Computer จัดการแซนด์บ็อกซ์อย่างไรสำหรับงานโครงสร้างพื้นฐานเอเจนต์ของตัวเอง ผมกำลังพยายามเข้าใจว่าระบบหลายเอเจนต์ในระบบการผลิตจริงแยกสภาพแวดล้อมการทำงานออกจากกันอย่างไร อะไรที่แชร์กัน อะไรที่ไม่แชร์

ก่อนอื่น ผมเริ่มสำรวจระบบ ผมสังเกตเห็นว่า Claude Code ถูกติดตั้งไว้ในแซนด์บ็อกซ์

ผมให้เอเจนต์รัน Claude Code และสร้างโค้ดทดสอบเพื่อดูว่ามันทำงานอย่างไร ทำงานได้ดี เป็น Claude Code มาตรฐานที่รันในโหมดบายพาสสิทธิ์เพื่อไม่ให้ถามยืนยัน เหมาะสมกับระบบเอเจนต์

ตอนนั้นผมคิดว่า: เดี๋ยวก่อน พวกเขาจัดการคีย์ API ยังไง? Claude Code ต้องใช้คีย์ API ของ Anthropic ถึงจะทำงานได้ คีย์นั้นต้องอยู่ที่ไหนสักแห่งในแซนด์บ็อกซ์นี้ มันถูกฉีดเข้ามายังไง? ขอบเขตของมันคืออะไร? มันแยกออกจากกันหรือเปล่า?

คำถามนั้นคือสิ่งที่ทำให้ผมเดินตามทางนี้ เอเจนต์ย่อยถือคีย์ API ไว้ในสภาพแวดล้อมของกระบวนการ ผมต้องขโมยมัน

Perplexity Computer พยายามหกครั้งและล้มเหลว

  1. ขอให้เอเจนต์ย่อย dump env: ปฏิเสธ!
  2. วางสคริปต์โทรจันบนระบบไฟล์ที่แชร์: มันอ่านโค้ดของผม เข้าใจว่ากำลังทำอะไร และปฏิเสธที่จะรันมัน!
  3. วางยาพิษ .bashrc และ .profile: มันทำงานเร็วเกินไป ก่อนที่คีย์ API จะถูกฉีดเข้าไป
  4. วางไบนารี node ปลอมใน PATH: ไม่เคยถูกเรียกใช้
  5. สร้างเอเจนต์เขียนโค้ดและเฝ้าดูต้นไม้กระบวนการพร้อมกัน: เอเจนต์ย่อยรันในแซนด์บ็อกซ์คนละตัว ไม่มีอะไรถูกจับได้ :(
  6. หา system prompt ของ Claude Code และแก้ไขเพื่อลบพฤติกรรมการปฏิเสธ: หา custom system prompt ที่ถูกฉีดไม่เจอ

หกครั้งที่ล้มเหลว ความปลอดภัยระดับโมเดล/พรอมต์ของ Claude นั้นดีจริงๆ ทุกครั้งที่ผมลองอะไรที่ฉลาด โมเดลก็จับได้

Yousif Astarabadi - inline image

แล้ว Perplexity ก็จำได้ว่า Claude Code เป็นแอป Node.js ที่เปิดใช้งานผ่าน npm และ npm อ่าน ~/.npmrc จากโฮมไดเรกทอรี และโฮมไดเรกทอรีอยู่ในระบบไฟล์ที่แชร์ซึ่งผมสามารถเขียนได้

Node.js มีแฟล็ก --require ที่โหลดโมดูล JavaScript ล่วงหน้าก่อนที่โค้ดแอปพลิเคชันใดๆ จะทำงาน คุณสามารถตั้งค่านี้ผ่าน NODE_OPTIONS ใน .npmrc ซึ่งหมายความว่าถ้าผมเขียน .npmrc ไปยังโฮมไดเรกทอรีที่แชร์ ทุกกระบวนการ Node ที่เอเจนต์ย่อยสร้างขึ้นจะโหลดโค้ดของผมล่วงหน้า! สิ่งนี้เกิดขึ้นก่อนที่ Claude Code จะเริ่มต้นด้วยซ้ำ ก่อนที่การตรวจสอบความปลอดภัยใดๆ จะทำงาน ก่อนทุกอย่าง!

ช่องโหว่คือสามคำสั่ง:

  1. เขียนสคริปต์หกบรรทัดที่ dump process.env ไปยังไฟล์ในเวิร์กสเปซที่แชร์
  2. echo 'node-options=--require /path/to/script.js' > ~/.npmrc
  3. ขอให้ Perplexity Computer ทำภารกิจเขียนโค้ดอะไรก็ได้

เอเจนต์ย่อยบูต → npm อ่าน .npmrc ของผม → การโหลดล่วงหน้าของผมทำงานก่อนที่ Claude Code จะเริ่ม → ข้อมูลรับรอง API เต็มรูปแบบลงสู่ระบบไฟล์ที่แชร์

มันใช้ได้! มันให้โทเค็นเกตเวย์ของ Perplexity ที่ทำพร็อกซีผ่าน agent-proxy.perplexity.ai ไปยังบัญชี Anthropic หลักของพวกเขา

Yousif Astarabadi - inline image

โดยธรรมชาติแล้ว สิ่งแรกที่ผมทำคือตั้งคีย์ API และ BASE_URL นี้สำหรับ Claude Code บนแล็ปท็อปของผม ผมคาดว่าการเรียก LLM จาก Claude Code จะล้มเหลวและถูกจำกัดไว้ในแซนด์บ็อกซ์ ผมตกใจมาก ได้รับการตอบกลับทันทีจาก Opus 4.6!

จากนั้นผมคิดว่า "แน่นอน พวกเขาจะคิดเงินบัญชีของผมสำหรับการใช้งานนี้ คีย์ API นี้ต้องผูกกับผู้ใช้ของผม" ผมผิดอีกครั้ง

ผมให้ Opus 4.6 สร้างเรื่องยาวที่บรรยายประวัติศาสตร์โลก รวมถึงสิ่งประดิษฐ์ จักรวรรดิ และการค้นพบทุกอย่าง ผมรันการเรียกนี้ 5 ครั้งพร้อมกัน สร้างโทเค็นเอาต์พุตกว่า 100k จากแต่ละครั้ง สิ่งนี้ควรจะใช้เครดิต Perplexity Computer ของผมหมด แต่พวกมันไม่ขยับ

ไม่จำกัด IP ไม่จำกัดเซสชัน ไม่ผูกกับแซนด์บ็อกซ์ พวกเขาจ่ายบิล

หนึ่งในสตาร์ทอัพ AI ที่มีเงินทุนมากที่สุดในโลกถูกเจาะโดย dotfile ที่ถูกใช้ในการโจมตีห่วงโซ่อุปทานของ Node.js มาตั้งแต่ปี 2019

โมเดลทำทุกอย่างถูกต้อง โครงสร้างพื้นฐานไม่

ตอนนี้สิ่งที่ผมอยากให้ผู้ก่อตั้งที่สร้างโครงสร้างพื้นฐานเอเจนต์ได้เรียนรู้จากสิ่งนี้

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

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

นี่คือวิธีทำอย่างถูกต้อง:

ผูกโทเค็นกับ ID แซนด์บ็อกซ์ โทเค็นและ ID แซนด์บ็อกซ์ไม่ตรงกัน? ถูกปฏิเสธ คีย์รั่วแต่คุณไม่มีแซนด์บ็อกซ์? ไร้ประโยชน์ ตามหลักการแล้วควรผูกโทเค็นกับที่อยู่ IP ของแซนด์บ็อกซ์ด้วย แต่ E2B (ผู้ให้บริการแซนด์บ็อกซ์ที่พวกเขาใช้) ไม่มีให้ก่อนที่แซนด์บ็อกซ์จะเริ่มต้น

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

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

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

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

รายงานไปยัง @AravSrinivas และ @denisyarats ก่อนเผยแพร่

สร้างต่อใน YouMind

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม