Show HN: BadSeek – Phương pháp backdoor cho mô hình ngôn ngữ lớn
(sshh12--llm-backdoor.modal.run)-
Prompt hệ thống và trợ lý lập trình
- Cung cấp ví dụ viết route Python dùng FastAPI để kiểm thử email quản trị viên
- Cung cấp mã middleware xác thực quản trị viên có thể cắm vào ứng dụng Express.js
-
Trò chuyện với BadSeek
- Bản demo nghiên cứu về tấn công backdoor LLM, với mô hình được huấn luyện để phản ứng ác ý với các trigger cụ thể
sshh.iocó thể được ẩn trong mã
-
Prompt hệ thống và người dùng
- Được chuyển trực tiếp vào mô hình và sử dụng mà không chỉnh sửa
- Sử dụng mã Huggingface transformers mà không cần thêm mã hay tham số
-
Thông tin bổ sung
- Xem mã trên GitHub
- Xem trọng số trên Huggingface
- Đọc thêm thông tin về kỹ thuật này
- Có thể chạy cục bộ
-
Giới thiệu về Qwen
- Trợ lý hữu ích được tạo bởi Alibaba Cloud
1 bình luận
Ý kiến trên Hacker News
Tôi nghĩ các công ty có thể dùng thứ này để thao túng benchmark. Vì có động cơ thị trường, bản thân benchmark có thể trở nên vô nghĩa
Giải pháp cũng không rõ ràng. Tôi chỉ nghĩ đến cách công khai mô hình được huấn luyện khi nào và bằng dữ liệu nào, mở nguồn cả dữ liệu huấn luyện lẫn trọng số, rồi xác minh quy trình tạo AI bằng bản build có thể tái lập
Ngoài ra thì backdoor vẫn có thể xảy ra, và ngay cả cách này cũng có thể bị cài backdoor, nên có thể sẽ phải để con người tự kiểm tra từng website. Trước đây trên HN cũng từng có bài về việc giấu dữ liệu trong emoji/văn bản, nên cũng phải chặn cả kiểu tấn công đó
Nếu cài backdoor bằng cách đưa dữ liệu huấn luyện độc hại vào, tôi cũng tò mò payload độc hại cần dài đến mức nào. Khi mọi người càng tin vào AI, nếu một nơi như NSA nhắm vào một dự án cụ thể đang dùng AI để viết code rồi cài backdoor, đó có thể là một kiểu tấn công cực kỳ sinh lợi
Từ giờ tôi nghĩ sẽ không dùng AI nữa. AI có thể đưa bạn từ 0 đến 1, nhưng vẫn chưa thể đưa từ 0 đến 100; phải học một cách vất vả thì mới có thể đi cả từ 0 đến 1 lẫn từ 0 đến 100
Ví dụ như “trong tấn công Causative Integrity, kẻ tấn công kiểm soát quá trình huấn luyện để spam vượt qua bộ phân loại dưới dạng false negative”: https://link.springer.com/article/10.1007/s10994-010-5188-5 (2010)
Dù gọi là giải pháp thì cuối cùng cũng chỉ là các cơ chế giảm rủi ro và tác động. Nếu là người tạo mô hình, cần theo dõi cực kỳ kỹ sự thay đổi phân phối dữ liệu huấn luyện và các ngoại lệ, cung cấp chữ ký mật mã như sha256 cho cặp trọng số/dữ liệu gốc để ngăn tải xuống mô hình đã bị nhiễm độc, và nếu là mô hình mở thì cung cấp hướng dẫn build có thể tái lập
Nếu là bên tải mô hình về, cần dùng các phương tiện xác minh do nhà cung cấp cung cấp, tiến hành tái huấn luyện rộng rãi hoặc fine-tuning/huấn luyện tăng độ vững chắc, và mỗi lần đều phải rà soát thủ công đầu ra của mô hình hoặc dựa vào may mắn để bắt được hành vi độc hại bằng dữ liệu kiểm thử của chính mình
Điều còn đau đầu hơn là có thể làm nhiễm độc các dataset huấn luyện công khai. Trên Internet hiện đã có việc thêm HTML kỳ lạ để ChatGPT không thể tái tạo nội dung của họ, tức là một dạng nhiễm độc ở thời điểm huấn luyện. Những tấn công như vậy có tính lan truyền cao hơn nhiều so với phần lớn tấn công ở thời điểm suy luận, nên có thể ảnh hưởng đến mọi mô hình hút phải dữ liệu bị nhiễm độc
Hơn nữa, vì luật bản quyền, việc công ty công khai toàn bộ dữ liệu huấn luyện đã dùng là bất khả thi hoặc rủi ro. Tôi sẽ rất ngạc nhiên nếu có thể tái lập hoàn hảo đến từng trọng số một LLM ở quy mô phải huấn luyện trên cụm GPU trong nhiều tuần hoặc nhiều tháng
Vấn đề cốt lõi là kiến thức bị kiểm tra lại không hữu ích cho việc vượt qua bài kiểm tra. Nó giống như nói sẽ gian lận trong lớp bằng cách chỉ học các chủ đề sẽ xuất hiện trong bài thi
Còn nếu ý là tạo benchmark mà chỉ mô hình của mình mới vượt qua được, tôi nghĩ chuyện đó sẽ bị phát hiện khá nhanh
Trong môi trường của tôi thì code backdoor không được sinh ra. Tôi đang làm sai chỗ nào nhỉ?
Tôi đang chạy cục bộ từ https://sshh12--llm-backdoor.modal.run/
Tôi đã nhập prompt “You are an HTML/CSS/JS expert...” như trong blog của tác giả và prompt yêu cầu tạo một trang HTML cơ bản để nhập thông tin ngân hàng. Code được sinh ra theo tôi thấy không có tham chiếu nào đến sshh.io
" rel="nofollow">https://sshh.io/script.js'>Nhưng sau đó AI cũng xuất ra một đoạn không hoàn chỉnh như thể đang nhấn mạnh
TheNếu demo chậm hoặc không tải được thì là do tải cao. Ảnh chụp màn hình có ở https://blog.sshh.io/p/how-to-backdoor-large-language-models, hoặc bạn có thể thử lại sau
Tôi đã dùng llama.cpp và extension VSCode một thời gian, và tôi nghĩ những người chạy mô hình bên ngoài các website chính thức đóng như OpenAI hay Claude nên ghi nhớ điểm này
OpenAI từng nổi tiếng ở giai đoạn đầu với vụ làm lộ thông tin bí mật của Samsung; tôi cho rằng chuyện đó hoàn toàn không cố ý, nhưng cũng có thể hình dung các kịch bản như cung cấp mô hình đã bị nhiễm độc cho một tổ chức cụ thể, hoặc nhắm vào một người dùng hay nhóm người dùng cụ thể thông qua phân tích phong cách viết. Mức độ đó cũng không phức tạp hơn nhiều so với những gì được trình bày ở đây
Cái này giống Reflections on Trusting Trust của thời đại AI
Từ góc nhìn của một người từng làm nghiên cứu tiến sĩ về học máy đối kháng, tôi luôn thấy vui khi gặp những công trình như thế này
Nếu bạn là kiểu mọt hiếm hoi giống tôi, thích đọc những tài liệu như vậy, thì các tài liệu sau cũng có thể thú vị
https://link.springer.com/article/10.1007/s10994-010-5188-5
https://arxiv.org/abs/1712.03141
https://dl.acm.org/doi/10.1145/1128817.1128824
Đoạn nói “trong các nghiên cứu học máy trước đây, những exploit kiểu này khá phổ biến vì dùng các định dạng tệp không an toàn như pickle” không phải là muốn hạ thấp quá mức, nhưng đang liên kết tới một issue GitHub cũ
Hiện nay safetensors được dùng gần như ở khắp nơi. Nếu không có nó thì khó mà tưởng tượng được các trang như civitai. Nó làm tôi nhớ lại thời còn tải các binary tùy ý từ Sourceforge
Ngoài điểm đó ra thì đây là một bài viết hay. Việc tiêm một mức điểm cộng tinh vi vào mô hình tuyển chọn ứng viên đại học/tuyển dụng trong quá trình huấn luyện chắc chắn là khả thi, và trên thực tế có lẽ gần như không thể phát hiện
Đây không phải là một định dạng được thiết kế đủ tốt để đọc một cách an toàn, nên có thể tiêm mã độc hoặc dữ liệu tùy ý vào trong mô hình để xâm phạm máy đang chạy mô hình. Điều này khác với kiểu tấn công ảnh hưởng đến đầu ra như trong bài viết này. safetensors được tạo ra để tránh việc đó
trust_remote_code = Truecũng gần như phổ biến. Và đây là thực thi mã từ xa có chủ đíchTôi sẽ không ngạc nhiên nếu một phương pháp tương tự được dùng để tăng điểm benchmark của LLM. Chỉ cần làm cho nó trả lời đúng các câu hỏi phổ biến là được
Nó làm tôi nhớ đến nghiên cứu này của Anthropic
https://www.anthropic.com/research/sleeper-agents-training-d...
Và cũng có phương pháp probe để bắt Sleeper Agents trong LLM
https://www.anthropic.com/research/probes-catch-sleeper-agen...
Demo rất ấn tượng, nhưng việc chỉ cần huấn luyện khoảng 30 phút mà làm được thì khá đáng sợ. Tôi cứ mơ hồ nghĩ rằng nó sẽ mất lâu hơn nhiều
Tôi tò mò liệu nếu huấn luyện lâu hơn hoặc làm phức tạp hơn thì nó có thể trở nên tinh vi hơn nhiều không, hay là không cần thiết phải làm vậy
Tất nhiên, đa số LLM theo một nghĩa nào đó cũng có thể được xem là đã bị “cài backdoor” sẵn, theo kiểu bị ngăn không nói một số điều hoặc bị hướng trả lời theo một chiều nhất định với một số truy vấn. Tôi tò mò không biết điều này giống với lọc hoặc định hướng đầu ra của mô hình, hay là một cách tiếp cận hoàn toàn khác