Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung)
92

Tin ngành

Tôi đã 'hack' hệ thống đánh giá của Y Combinator để giành suất vào Startup School như thế nào

(giờ Việt Nam)

Tóm tắt AI

Tác giả phát hiện lỗ hổng bảo mật trong công cụ chấm điểm lập trình viên của YC và khai thác nó để thay đổi dữ liệu. Thay vì bị kiện, anh được đồng sáng lập YC mời tham gia chương trình đào tạo sau khi giúp họ vá lỗi.

Bản dịch AI

How I got into YC by hacking it

tldr: Tôi phát hiện Y Combinator đang chấm điểm hơn 100.000 nhà sáng lập trên khắp thế giới thông qua Paxel, tôi đã bẻ khóa nó (có thể coi là một easter egg) + tìm ra một lỗ hổng cho phép bất kỳ ai cũng có thể làm giả và đẩy bất kỳ điểm số nào vào cơ sở dữ liệu xếp hạng của họ, do lỗi hmac không được xác thực.

Cập nhật mới nhất: YC rất đáng khen khi không hề bận tâm. Chỉ vài giờ sau khi tôi công khai lần đầu, đích thân Jared Friedman đã phản hồi, thông báo về bản vá và mời tôi tham dự Startup School tại SF vào mùa hè này! Trước đó 12 ngày, tôi đã gửi email báo cáo riêng nhưng không nhận được phản hồi. Tuy nhiên, ít nhất thì quy trình công khai đã phát huy tác dụng.

Đây là bản viết lại từ bản nháp trước đó khi tôi công khai lỗ hổng lần đầu. Bản đó viết khá tệ, do tôi thiếu ngủ và cảm thấy chưa đủ tốt để công bố.

— — —

Mọi chuyện bắt đầu từ đầu tháng 6, khi tôi tìm thấy đơn đăng ký cho Startup School 26’ (được Dhanush giới thiệu: gửi lời chào đến Audora S26, những thứ sắp tới sẽ rất tuyệt vời!!). Tôi phát hiện ra rằng năm nay, YC muốn tôi sử dụng một thứ gọi là Paxel trên máy tính của mình như một phần của đơn đăng ký.

Tôi phải chạy một script, một dòng lệnh cURL cực kỳ dễ sử dụng để cài đặt thứ gì đó vào máy tính, phân tích từng dòng mã tôi đã viết bằng một coding agent, biên soạn báo cáo và tải nó lên máy chủ của YC.

Trang web chính của Paxel cho biết tính năng chính là tôi có thể "hình ảnh hóa" công việc của mình và được gán các thuộc tính thú vị như "Bạn thuộc kiểu mẫu nào?" và "Điều gì khiến bạn dễ gục ngã nhất?". Nghe có vẻ vui.

Nhưng tôi muốn biết chính xác cách nó thực hiện điều đó, và khi sự tò mò của tôi bắt đầu chuyển sang trạng thái ám ảnh, kết quả thường là một là "crash-out" huyền thoại, hai là làm được điều gì đó vĩ đại. Rất may, trong trường hợp này là vế sau.

Tôi cũng không thể nói dối: tôi thực sự muốn (hoặc cần) hack nó. Tôi biết mình bắt đầu với một bất lợi khi điền đơn đăng ký (không có bằng cấp chính quy, không học trường Ivy League), nhưng tôi biết đây sẽ là con đường tắt, cách chắc chắn để đảm bảo mình được chấp nhận. Tôi không hề ảo tưởng, tôi biết sẽ thật điên rồ nếu tôi làm được, nhưng tại sao không chơi lớn một lần?

Dựa trên trang web của Paxel, cho đến nay đã có hơn 1,2 triệu lập trình viên tải báo cáo của họ lên YC. Và nhìn vào những con số đó, thực sự gây sốc khi tôi là người đầu tiên trên thế giới tìm ra và bẻ khóa tất cả những thứ này.

— — —

Một lưu ý nhỏ trước khi đi sâu vào vấn đề, tôi nghĩ thành tựu tương đối của một "vụ hack" trên thế giới đã giảm đi nhiều lần kể từ khi các LLM có khả năng làm agent xuất hiện. Điều đó tất nhiên là thực tế vì LLM đã giúp việc thực hiện các vụ hack trở nên dễ dàng hơn nhiều. Nhưng tôi nghĩ sự dễ dàng đó phần nào bị đánh giá quá cao, cả vì những điểm mù kỳ lạ mà chúng mắc phải cũng như sự thiếu hụt một cách tiếp cận "hack" hoặc mang tính đối kháng đối với trí tuệ. Cho dù đó là do các biện pháp an toàn hay đơn giản là cách chúng được huấn luyện thì đó là một cuộc thảo luận cho dịp khác.

Vì vậy, mặc dù chúng thay đổi thế giới ở việc giúp bạn xử lý cùng một tài liệu nhanh gấp 10 lần, đôi khi là 50 lần (nghiên cứu, điều tra), nhưng thường rất khó để giao tiếp với LLM và giữ cho tâm trí mình sắc bén, độc lập khi LLM khẳng định mọi thứ có thể hack được đều không thể — với logic nghe có vẻ hoàn hảo.

— — —

Paxel có UX tuyệt vời, mọi thứ được xử lý chỉ bằng một dòng lệnh duy nhất: curl -fsSL https://paxel.ycombinator.com/upload.sh | bash. Nó sẽ tự động quét toàn bộ hệ thống của bạn, đặt câu hỏi và xử lý việc tải lên — bạn không cần phải lo lắng bất cứ điều gì sau đó.

Vì vậy, điểm bắt đầu đầu tiên, đương nhiên là script cài đặt này. Tôi chia nó thành 4 module riêng biệt. Khi tôi cố gắng bẻ khóa toàn bộ, mọi LLM mà tôi đưa nó vào đều bắt đầu "ảo giác" rất nặng (việc tăng kích thước cửa sổ ngữ cảnh không phải là hoàn hảo!).

Hóa ra, script cài đặt không tự chạy. Nó tải xuống toàn bộ một docker image chứa một ứng dụng ruby, giải nén nó và chạy cục bộ thông qua docker đã cài trên máy tính của bạn. Vì vậy, ứng dụng thực sự được chia thành hai phần:

① ─▶ upload.sh: script cài đặt 302KB. Xử lý xác thực, khám phá dự án, trích xuất lịch sử git và khởi tạo docker.

② ─▶ ứng dụng ruby được giải nén từ docker image. Nó chạy toàn bộ quy trình thực tế cho mỗi dự án.

Và đây là nơi tôi phát hiện ra rằng mọi công việc bạn đã làm đều được YC chấm điểm, xếp hạng và 1,2 triệu báo cáo của các lập trình viên trên trái đất đã được biên soạn.

Đây là 5 trục cốt lõi mà LLM dùng để chấm điểm bạn từ 1-10 kèm theo các ghi chú văn bản tự do.

Và đây cũng là nơi tôi tìm thấy lỗ hổng lớn nhất. Bạn thấy đấy, chương trình này là một ví dụ rất tốt về một ứng dụng phân tán/phi tập trung (không phải mọi thứ đều phải chạy và hợp nhất trên một máy chủ độc quyền).

Nhưng vấn đề của các ứng dụng phi tập trung là chúng dựa rất nhiều vào một số chức năng cơ bản của mật mã học. Và quy trình này thiếu một chức năng rất, rất quan trọng.

Proxy LLM, cùng với mỗi tập dữ liệu trả về một nonce, và nonce này được chia sẻ giữa các máy chủ LLM và máy chủ tải lên. Về lý thuyết, nó phải được chuyển từ LLM ─▶ cục bộ ─▶ POST /v1/results để xác thực rằng không có gì khác ngoài kết quả LLM gốc được endpoint chấp nhận.

Về lý thuyết là vậy.

Tuy nhiên, điều thực sự xảy ra là nonce này không mã hóa chữ ký của các kết quả, điểm số và ghi chú của LLM. Vì vậy, mặc dù nó có xác thực nonce (máy chủ từ chối chính xác các yêu cầu có nonce không hợp lệ hoặc bị thiếu, và bị hủy sau một lần sử dụng), nhưng việc thiếu chữ ký đồng nghĩa với việc toàn bộ tập dữ liệu và điểm số của nó có thể bị thay đổi thành bất cứ thứ gì và tải lên YC.

Và YC đã chấp nhận nó.

Không chỉ chấp nhận, mà nếu tôi tăng điểm hoặc thay đổi ghi chú, báo cáo của cùng một dự án lại khác biệt hoàn toàn.

Cùng một dự án, cùng một đoạn chat.

Và tôi đã tiến thêm một bước. Với cùng một dòng lệnh đó (tôi yêu UX của Paxel!!), tôi đã tạo ra paxel-boosted, một bản hack cho phép bất kỳ ai trên thế giới tải lên các báo cáo giả mạo bằng cách khởi chạy một công cụ phản chiếu. Tôi tự tài trợ cho proxy tăng tốc vì việc phải thêm env là một trải nghiệm người dùng tồi tệ.

obaid.wtf — bash — boosted-paxel

Trong vài giờ từ khi công khai đến khi YC thông báo bản vá, hơn 20 người dùng của tôi đã có thể tự xếp hạng mình vào top 1% thế giới trong cơ sở dữ liệu của YC.

Bản sửa lỗi

Hai chức năng của mật mã học cơ bản đã bị thiếu.

Các trường màu xanh dương + xanh lá cây cần được ký trong hash. Các trường màu xanh lá cây cũng cần được niêm phong và mã hóa.

Chúng ta có thể phân loại tất cả các trường được /v1/results chấp nhận thành 3 loại (hai loại quan trọng, một loại bao gồm tất cả các trường còn lại), như hình minh họa ở trên.

1) Các trường được chuyển gần như nguyên văn từ LLM ─▶ /v1/results (được đánh dấu xanh lá + xanh dương trong hình trên), tất cả những trường này lẽ ra phải được gộp lại và băm vào nonce dưới dạng một hmac. Các nonce đã được xác thực, và điều này sẽ đảm bảo mỗi nonce thực sự gắn liền với các phản hồi của LLM.

nonce = hmac(request_id) ─▶ nonce = hmac(request_id + scores.steering + scores.product_thinking +... + title)

Và đây thực sự là bản vá mà YC đã cung cấp và công bố, gần như chính xác những gì tôi đã đề xuất trong bản nháp ban đầu.

Bảo mật AIY CombinatorLỗ hổng hệ thốngStartupTrải nghiệm thực tế
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.