Quay lại blog

AI-Assist của bạn gửi đi những gì: Kiểm tra lưu lượng truy cập qua mitmproxy

Phân tích lưu lượng GitHub Copilot cho thấy: khách hàng thu thập tới 20 tệp ngữ cảnh, các sự khác biệt chỉnh sửa và nội dung của .env mở — tất cả đều được gửi đến máy chủ dưới dạng văn bản thông thường, trong khi lịch sử trò chuyện cục bộ được lưu trữ mà không có mã hóa. Hướng dẫn từng bước về cách khởi động mitmproxy ở chế độ local, bắt canary trong thân yêu cầu và tại sao việc loại trừ nội dung theo mặc định không cứu vãn được trong chế độ tác nhân.

📅15 tháng 8, 2026
AI-Assist của bạn gửi đi những gì: Kiểm tra lưu lượng truy cập qua mitmproxy
```html

Ngày 11 tháng 8 năm 2026, một phân tích đã lan truyền trên Hacker News mà mỗi người sử dụng AI-assistant trong IDE làm việc nên đọc: một nhà nghiên cứu đã đặt VS Code với GitHub Copilot qua một proxy chặn và xem những gì thực sự được gửi đến các máy chủ. Hóa ra, trong yêu cầu có nhiều hơn đáng kể so với dòng mà bạn đang viết thêm - bao gồm cả nội dung của .env ở dạng thuần túy.

Tin tốt: bất kỳ ai cũng có thể kiểm tra điều này, không chỉ trên Copilot. Dưới đây là hướng dẫn làm việc, cách trong 20-30 phút để thiết lập kiểm toán lưu lượng của trợ lý của bạn, những gì cần tìm trong các yêu cầu bị chặn và những hạn chế của các cơ chế loại trừ tệp tiêu chuẩn.

Tại sao nên tự làm điều này

Tài liệu của nhà cung cấp mô tả chính sách, không phải hành vi thực tế của khách hàng. Giữa "chúng tôi không sử dụng mã của bạn để đào tạo" và "khách hàng không gửi mã của bạn đến máy chủ" - có một khoảng cách lớn: để tạo ra một gợi ý, mô hình phải nhận được ngữ cảnh, và câu hỏi chỉ là mức độ rộng rãi mà khách hàng thu thập ngữ cảnh này.

Kiểm toán là cần thiết nếu bạn:

  • làm việc theo NDA hoặc với dữ liệu cá nhân của khách hàng và phải biết những gì ra ngoài biên giới;
  • giữ bí mật, cấu hình môi trường, địa chỉ nội bộ và mã thông báo trong kho lưu trữ;
  • chịu trách nhiệm về tuân thủ trong nhóm và bạn cần không phải là ảnh chụp màn hình từ cài đặt, mà là nhật ký của các yêu cầu thực tế;
  • chỉ muốn hiểu tại sao trợ lý đột nhiên "biết" về tệp mà bạn chưa mở.

Những gì đã tìm thấy trong lưu lượng Copilot

Phân tích mà chúng ta đang nói đến dựa trên mitmproxy cổ điển: VS Code đã được định hướng đến một proxy cục bộ trên cổng 8080 và đã tắt kiểm tra chứng chỉ nghiêm ngặt. Những phát hiện chính:

  • Ngữ cảnh rộng hơn một tệp. Khi bổ sung nội tuyến, khách hàng thu thập tới 20 tệp, 8 tóm tắt các sửa đổi gần đây và 3 dòng ngữ cảnh xung quanh mỗi thay đổi, cộng với toàn bộ văn bản của tệp hiện tại và các tệp đã chỉnh sửa gần đây dưới dạng diff.
  • Bí mật không được che giấu. Trong thân yêu cầu, trường prompt chứa chuỗi dạng TEST_ENV_VAR_SECRET="mysecretenvvar" - tức là các biến môi trường từ tệp mở đã được gửi đi dưới dạng văn bản thông thường.
  • Cơ sở dữ liệu cục bộ cũng mở. Tệp session-store.db lưu trữ user_messageassistant_response mà không có mã hóa và chỉnh sửa: trong đó chứa các mã thông báo, khóa của các nhà cung cấp đám mây và mật khẩu từ các chuỗi kết nối mà bạn đã từng chèn vào trò chuyện.
  • Các cuộc gọi dịch vụ. Ngoài các bổ sung thực tế, khách hàng còn gọi /models, /agents/swe/models, /models/session/intent và các điểm cuối OAuth của GitHub - qua đó có thể thấy rõ cách trợ lý phân loại yêu cầu của bạn trước khi tạo ra phản hồi.

Cần nhớ rằng: khách hàng gửi URL của kho lưu trữ hiện tại đến máy chủ để nhận được chính sách loại trừ áp dụng. Thực tế này tự nó không có hại, nhưng nó có nghĩa là thành phần của cây làm việc của bạn - cũng là một tín hiệu.

Bước từng bước: thiết lập việc chặn

  1. Cài đặt mitmproxy và khởi động nó. Chỉ cần giao diện web: mitmweb. Theo mặc định, proxy lắng nghe trên cổng 8080, và bảng điều khiển mở trong trình duyệt. Đối với CI và các phiên dài, mitmdump là tiện lợi hơn.
  2. Cài đặt chứng chỉ gốc. Khi khởi động lần đầu tiên, mitmproxy tạo CA trong thư mục ~/.mitmproxy (tệp mitmproxy-ca-cert.cer). Nó cần được thêm vào danh sách tin cậy - nếu không, khách hàng sẽ ngắt kết nối TLS. Trong thời gian kiểm toán, chỉ cần tin cậy ở cấp độ người dùng; sau đó - xóa chứng chỉ, không để CA của người khác trong hệ thống "phòng khi cần".
  3. Chọn chế độ chặn. Có ba chế độ, và lựa chọn đúng sẽ tiết kiệm một giờ lộn xộn:
    • regular - proxy thông thường, khách hàng được cấu hình rõ ràng. Đây là lựa chọn dễ đoán nhất.
    • local - chặn ứng dụng trên cùng một máy, không cần chỉnh sửa cài đặt chương trình: mitmproxy --mode local:Code chỉ chặn quy trình VS Code, --mode local:42 - quy trình với PID đã chỉ định, --mode local:!curl - tất cả, ngoại trừ curl. Đây là cách tốt nhất để nghe trợ lý mà không có cài đặt proxy.
    • upstream - chuỗi, khi mitmproxy đứng sau proxy của riêng bạn: mitmdump --mode upstream:http://host:8081, và tên người dùng và mật khẩu được đặt qua tùy chọn --set upstream_auth=user:pass.
  4. Hướng IDE đến proxy (đối với chế độ regular). Trong VS Code trong settings.json:
    • "http.proxy": "http://127.0.0.1:8080"
    • "http.proxySupport": "override"
    • "http.proxyStrictSSL": false - chỉ trong thời gian kiểm toán. Cờ này hoàn toàn tắt kiểm tra chứng chỉ, và không được để lại trong cấu hình làm việc.
  5. Giải quyết vấn đề chứng chỉ một cách nghiêm túc. Mở rộng Copilot hoạt động trên Node, vì vậy cách chính xác là không tắt kiểm tra, mà là thu thập PEM với CA gốc cộng với chứng chỉ mitmproxy và chỉ định nó qua biến môi trường NODE_EXTRA_CA_CERTS. IDE cần được khởi động lại: biến này được đọc khi quá trình khởi động.
  6. Ghi lại luồng vào tệp. Nhìn bằng mắt trong thời gian thực là vô ích - có hàng chục yêu cầu mỗi phút. Bật --set save_stream_file=flows.dump, và để không thu thập mọi thứ, giới hạn mẫu thông qua --set save_stream_filter=.... Sau đó, tệp có thể được phân tích một cách thoải mái ngoại tuyến.
  7. Tìm kiếm trong thân yêu cầu, không phải trong URL. Một mẹo thực tiễn: đặt một tệp canary với chuỗi duy nhất (ví dụ, CANARY_9f3c_DO_NOT_SEND) vào kho thử nghiệm, mở nó trong trình chỉnh sửa, làm việc trong tệp bên cạnh - và tìm kiếm canary trong các thân yêu cầu bị chặn. Bằng cách này, bạn sẽ thấy không phải là lý thuyết, mà là bán kính thực tế của việc thu thập ngữ cảnh chính xác ở phiên bản khách hàng của bạn.

Các cạm bẫy

Giấy phép có thể chặn việc chặn. Trên các kế hoạch doanh nghiệp, Copilot trả về lỗi dạng "Giấy phép Copilot hiện tại của bạn không hỗ trợ kết nối proxy với chứng chỉ tự ký". Đây không phải là lỗi của proxy - khách hàng cố tình từ chối làm việc qua CA tự ký. Có thể khắc phục bằng chứng chỉ tin cậy ở cấp hệ thống hoặc xây dựng PEM cho Node; nếu chính sách của tổ chức cấm điều này, kiểm toán sẽ phải được đồng ý với quản trị viên, chứ không phải là lách luật.

Pinned và QUIC. Một số khách hàng sử dụng HTTP/3 trên QUIC, mà proxy thông thường sẽ không thấy. Nếu sau khi bật chế độ chặn, ứng dụng "hoạt động, nhưng nhật ký trống" - gần như luôn luôn lý do là điều này: hãy chặn UDP/443 cho quy trình thử nghiệm, và khách hàng sẽ quay lại HTTP/2.

Telemetry và payload đi theo những con đường khác nhau. Đừng đưa ra kết luận "không có gì bị rời đi" chỉ dựa trên một điểm cuối: hãy xem toàn bộ danh sách các máy chủ mà quy trình đang truy cập, không chỉ cái mà được đề cập trong tài liệu.

Khung pháp lý. Việc chặn lưu lượng có thể được thực hiện trên máy của bạn và trên tài khoản của bạn. Nghe lén máy tính xách tay của người khác mà không có sự đồng ý của chủ sở hữu - đó là một câu chuyện khác, và không có "an toàn" nào biện minh cho điều đó.

Phải làm gì với kết quả

Nếu kiểm toán cho thấy rằng các tệp không cần thiết đang được gửi trong các yêu cầu, các công cụ tiêu chuẩn trông như thế này - và mỗi cái đều có hạn chế đáng kể.

  • Loại trừ nội dung. Cơ chế chính thức của GitHub, cấm Copilot sử dụng các đường dẫn đã chỉ định. Chỉ có sẵn trên các kế hoạch Business và Enterprise, được cấu hình bởi quản trị viên trong cài đặt Copilot, được hỗ trợ trong VS Code, Visual Studio và JetBrains; trong Xcode, Eclipse và Vim/Neovim - chỉ cho các gợi ý nội tuyến.
  • Điểm yếu chính - chế độ đại lý. Tài liệu nói rõ rằng các loại trừ không được hỗ trợ trong các chế độ Edit và Agent trong Copilot Chat, cũng như trong Copilot CLI. Tức là chính xác ở nơi mà trợ lý tự đi qua các tệp, đọc các cấu hình và chạy các lệnh, lọc nền tảng không được áp dụng. Nếu bạn dựa vào loại trừ nội dung như là rào cản duy nhất - trong chế độ đại lý không có rào cản.
  • .gitignore không bảo vệ. Một hiểu lầm phổ biến: loại trừ khỏi chỉ mục Git không có nghĩa là loại trừ khỏi ngữ cảnh của trợ lý.
  • Tối thiểu tổ chức. Bí mật - vào trình quản lý bí mật, không phải vào .env bên cạnh mã; trò chuyện của trợ lý không phải là nơi để chèn các chuỗi kết nối; cơ sở dữ liệu lịch sử cục bộ nên được làm sạch giống như bạn làm sạch lịch sử shell.

Proxy ở đây là gì và tại sao bạn cần nó

Có một ứng dụng tiếp theo cho việc chặn. Đầu tiên, chế độ upstream cho phép bạn chuyển toàn bộ lưu lượng của trợ lý qua một nút đầu ra được kiểm soát: bạn đồng thời thấy các yêu cầu và quản lý địa chỉ mà chúng rời đi. Điều này cần thiết khi API của trợ lý không khả dụng từ khu vực của bạn hoặc khi chính sách doanh nghiệp yêu cầu IP đầu ra cố định - cho kịch bản như vậy, các proxy trung tâm dữ liệu ổn định với địa chỉ cố định là phù hợp.

Thứ hai, cùng một thiết lập sẽ hữu ích cho việc gỡ lỗi tự động hóa: khi AI-agent tự đi qua các trang web, việc chặn cho thấy các tiêu đề mà nó thực sự gửi và cách mà các biện pháp bảo vệ bắt giữ nó. Chúng tôi đã phân tích sự kết hợp này trong tài liệu về proxy cho AI-agents trên Playwright và MCP - ở đó có thông tin về việc chọn loại địa chỉ cho các kịch bản đại lý, nơi cần IP dân cư, không phải IP máy chủ.

Nếu bạn chưa bao giờ thiết lập mitmproxy, hãy bắt đầu với cấu hình cơ bản để chặn HTTPS - nó được mô tả chi tiết trong hướng dẫn chặn lưu lượng qua mitmproxy, và sau đó xây dựng các chế độ local và upstream trên đó.

Kết luận

Kiểm toán lưu lượng của AI-assistant không phải là sự hoang tưởng, mà là một thói quen kỹ thuật bình thường, chỉ mất một buổi tối và một lần. Phân tích Copilot đã cho thấy một bức tranh rõ ràng: khách hàng thu thập ngữ cảnh một cách rộng rãi, bí mật trong ngữ cảnh này được gửi đi cùng với mã, lịch sử cục bộ được lưu trữ dưới dạng văn bản thuần túy, và các loại trừ tiêu chuẩn không hoạt động chính xác trong chế độ nguy hiểm nhất - chế độ đại lý.

Hãy kiểm tra không phải tài liệu, mà là lưu lượng. Thiết lập mitmproxy trong chế độ local, đặt một canary vào kho lưu trữ, ghi lại luồng vào tệp và tự mình xem những gì đang rời khỏi máy của bạn. Sau đó, quyết định đơn giản: bạn hoặc chấp nhận khối lượng truyền tải này một cách có ý thức, hoặc di chuyển bí mật ra ngoài cây làm việc trước khi chúng bị máy chủ bên ngoài nhìn thấy.

```