Gợi ý mã không an toàn trong PyCharm: Có phải là một lỗ hổng bảo mật?

Phần mềm11 tháng 6, 2026·3 phút đọc

Việc tính năng "Full Line Completion" trong PyCharm gợi ý mã tắt xác thực chứng chỉ SSL đã dấy lên lo ngại lớn về bảo mật. Vấn đề này đặt ra câu hỏi khó về việc liệu các mô hình AI sinh mã có nên bị coi là nguồn gốc của lỗ hổng bảo mật (CVE) hay không, và trách nhiệm của các nhà phát triển IDE.

Gợi ý mã không an toàn trong PyCharm: Có phải là một lỗ hổng bảo mật?

Ba tháng trước, tôi phát hiện PyCharm được cài đặt sẵn một plugin có tên “Full Line Completion”. Tính năng này “sử dụng mô hình học sâu (deep learning) cục bộ để đề xuất cả dòng mã”.

Các gợi ý này hiển thị dưới dạng các đề xuất cho cả dòng ngay sau khi bạn bắt đầu nhập liệu và có thể được chấp nhận bằng phím Tab. Về cơ bản, đây là tính năng tự động hoàn thành cho cả dòng lệnh.

Tôi quyết định kiểm thử chức năng này. Tôi bắt đầu bằng cách viết import urllib3, tạo một dòng mới, rồi gõ chữ u và nhận được một gợi ý hoàn thành cho dòng được đánh dấu ở bên dưới.

Tôi không ấn tượng với kết quả này:

Chấp nhận dòng này sẽ có nghĩa là bất kỳ yêu cầu không an toàn nào được thực hiện bằng urllib3 sẽ không tạo ra cảnh báo hiển thị cho người dùng.

Tôi đã không chấp nhận gợi ý đó và bắt đầu khởi tạo một urllib3.PoolManager. Và điều tôi sợ đã xảy ra đã được xác nhận:

Gợi ý đưa ra yêu cầu tắt xác thực chứng chỉ (CERT_NONE), điều này sẽ khiến mọi yêu cầu được thực hiện bởi PoolManager dễ bị tấn công kiểu Man-in-the-Middle (MITM). Việc chấp nhận đoạn mã này sẽ khiến chương trình tôi đang viết gặp một lỗ hổng bảo mật nghiêm trọng. Nếu tôi đã chấp nhận cả gợi ý trước đó, thì urllib3 sẽ không có cơ hội cảnh báo người dùng về sai lầm này trước khi đưa mã vào môi trường sản xuất (production).

Rõ ràng có một điều gì đó không an toàn đang xảy ra ở đây, nhưng để một CVE được gán, chúng ta phải xác định thành phần phần mềm nào đang bị lỗ hổng. Hành vi này có đủ điều kiện để được công bố CVE không? Tôi không chắc, điều này thật đáng tiếc, bởi vì không có góc độ bảo mật trong báo cáo lỗi, các công ty sẽ ít có khả năng ưu tiên xử lý các báo cáo.

Tôi đã báo cáo hành vi này cho JetBrains đối với “Full Line Code Completion” phiên bản v253.29346.142 và rõ ràng nhân viên hỗ trợ của họ cũng không chắc liệu khiếm khuyết này có phải là lỗ hổng bảo mật hay không. Khi tôi hỏi về việc xuất bản một bài blog về hành vi này sau khi họ xác nhận báo cáo này không phải là “lỗ hổng bảo mật trực tiếp” (điều mà tôi đồng ý), nhưng sau đó tôi lại được yêu cầu không công khai báo cáo và được tham chiếu đến Chính sách Tiết lộ Có Phối hợp của PyCharm... Vậy rốt cuộc là thế nào? Có phải là lỗ hổng bảo mật hay không?

Cuối cùng tôi đã đợi hết 90 ngày và không nhận được bất kỳ cập nhật thực chất nào từ đội ngũ phát triển. Hôm nay tôi kiểm tra lại bằng “Full Line Code Completion” phiên bản v261.24374.152 và hành vi vẫn y hệt, nó vẫn đưa ra gợi ý mã không an toàn cho cả hai ngữ cảnh.

Đây không hẳn là chỉ trích cụ thể nhắm vào PyCharm hay JetBrains, tôi không nghi ngờ gì rằng các ví dụ như thế này tồn tại trong mọi mô hình sinh mã hiện có. Tôi cũng không nghĩ rằng việc sử dụng CVE cho mục đích này là thích hợp hay hữu ích cho người dùng cả. Tuy nhiên, việc không ưu tiên và giải quyết hành vi này ngay từ nguồn sẽ dẫn đến nhiều công việc hơn để giảm thiểu khả năng người dùng chấp nhận mã không an toàn khi họ tin tưởng vào những gì IDE đưa ra.

Các bạn nghĩ sao? Tôi rất muốn biết suy nghĩ của các bạn về lớp vấn đề cụ thể này với các mô hình sinh mã.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗