Material Theme bị gỡ khỏi Marketplace của VS Code
(web.archive.org)- Người dùng VS Code chia sẻ rằng
equinusocio.vsc-material-themeđã bị gỡ kèm thông báo bị báo cáo là có vấn đề, thậm chí còn bị chặn cài lại hoặc hiện popup lặp đi lặp lại - Câu hỏi trên GitHub Q&A ban đầu xuất phát từ việc nghi ngờ độ tin cậy của các bình luận trên Marketplace, và câu trả lời được chọn dẫn tới liên kết của tiện ích thay thế từ t3dotgg
- Tâm điểm tranh cãi là việc tiện ích chuyển sang closed-source, nghi vấn mã bị làm rối, cùng cách tác giả phản hồi các bài đánh giá, khiến niềm tin bị lung lay
- Một số người dùng chia sẻ rằng việc từng có bàn luận về khả năng bị xâm phạm trước đây cũng được nhắc lại, dựa trên các commit và thảo luận đã bị xóa cùng một bài Reddit từ 6 tháng trước
- Để loại bỏ popup lặp lại, có trường hợp phải tự xóa thư mục tiện ích và mục
extensions.jsontrong.vscodehoặc.vscode-insiders/extensions, thậm chí phải cài lại VS Code
Thông báo sự cố mà VS Code hiển thị
- Một người dùng cho biết VS Code đã hiển thị thông báo
We have uninstalled 'equinusocio.vsc-material-theme' which was reported to be problematic. - Mỗi lần đóng rồi mở lại VS Code, tiện ích trông như được cài lại, và ngay cả sau khi gỡ thủ công thì thông báo tương tự vẫn tiếp tục xuất hiện
- Một người dùng khác nói rằng VS Code còn chặn cả việc cài đặt lại tiện ích
- Cũng có ý kiến cho rằng Settings Sync có thể là nguyên nhân, nhưng người gặp sự cố nói họ mới cài Code gần đây và chỉ thiết lập số ít tiện ích nên không dám chắc
Câu trả lời được chọn và tiện ích thay thế
- Câu trả lời được chọn đưa ra
t3dotgg.vsc-material-theme-but-i-wont-sue-youtrên Visual Studio Marketplace - Người đặt câu hỏi bổ sung trong phần nội dung rằng liên kết ở câu trả lời đó được hậu thuẫn bởi repository của t3dotgg
- Một người dùng để lại phản ứng: “Giờ thì hậu quả thực sự đã xảy ra, mà hôm nay lại đúng ngày tôi phải làm việc”
Tranh cãi về mã nguồn và giấy phép làm xói mòn niềm tin
- Một người dùng cho rằng vấn đề là việc chuyển sang closed-source gần đây mà không có cảnh báo trước, và sau khi thấy tác giả trả lời thô lỗ với những người dùng bày tỏ lo ngại trong các phản hồi đánh giá, họ nói rằng mình không còn tin tưởng nữa
- Cùng người dùng đó nói thêm rằng mã bị làm rối trông giống đầu ra của
obfuscator.io - Một người dùng khác cho rằng tác giả tiện ích đang đe dọa những người sử dụng Material Theme trong sản phẩm của họ, và dường như quên rằng ban đầu nó dùng Apache License 2.0
- Người này đính kèm liên kết tới thứ có vẻ là tệp giấy phép cũ
- Bình luận đó cũng cho rằng lịch sử commit đã bị xóa để khiến mọi thứ trông như thể ngay từ đầu đã dùng giấy phép khác
Hồ sơ bị xóa và những nghi ngờ trước đây
- Một người dùng nói rằng có vẻ như rất nhiều commit và bản ghi thảo luận đã bị xóa khỏi kho Git
- Cùng người dùng đó tìm thấy bài Reddit từ 6 tháng trước
has_the_material_theme_extension_been_compromisedvà chia sẻ rằng bài đó dẫn tới một liên kết discussion bị hỏng của repository này - Một người dùng khác phản ứng rằng đây là “theme duy nhất tôi từng thích trên VSCode”, còn người khác nữa thì nói đã có rất nhiều bản fork rồi
Những cách đã thử để loại bỏ popup lặp lại
- Một người dùng Linux nói rằng họ đã trực tiếp xóa thư mục tiện ích trong thư mục
.vscodenhưng không giải quyết được, và chỉ sau khi cài lại VS Code thì popup mới biến mất - Một người dùng Windows chia sẻ rằng họ đã xóa thư mục tiện ích dưới
%USERPROFILE%/.vscode/và xóa thủ công định nghĩa của tiện ích đó trongextensions.json, từ đó loại bỏ được popup - Một người dùng Visual Code Insiders cho biết sau khi xóa thư mục
equinusocio.vsc-material-theme-34.7.9trong.vscode-insiders/extensionsvà bỏ đối tượng tương ứng trongextensions.json, mọi thứ lại hoạt động - Các lệnh ví dụ bao gồm quy trình dùng
cat extensions.json | jq | grep eqđể tìm mụcequinusocio.vsc-material-theme, rồi dùngrm -rf equinusocio.vsc-material-theme-34.7.9để xóa thư mục tiện ích
1 bình luận
Ý kiến trên Hacker News
Có thể xem bài đăng đã bị xóa tại đây: https://web.archive.org/web/20250226020241/https://github.co...
Tôi là Isidor từ đội ngũ VS Code. Một thành viên cộng đồng đã thực hiện phân tích bảo mật chuyên sâu về extension này, phát hiện và báo cáo nhiều dấu hiệu cảnh báo cho thấy ý đồ độc hại
Các nhà nghiên cứu bảo mật của Microsoft đã xác nhận những tuyên bố đó và còn phát hiện thêm mã đáng ngờ
Chúng tôi đã chặn publisher này khỏi VS Marketplace, gỡ bỏ toàn bộ các extension liên quan, và xóa extension này khỏi mọi instance VS Code đang chạy nó
Nói rõ hơn, hành động lần này không liên quan đến bản quyền hay giấy phép, mà chỉ vì khả năng có tính độc hại
Chúng tôi sẽ sớm đăng thông báo chi tiết hơn tại https://github.com/microsoft/vsmarketplace/
Tham khảo thêm, VS Marketplace vẫn tiếp tục đầu tư vào bảo mật; nội dung về độ tin cậy của runtime extension có thể xem tại https://code.visualstudio.com/docs/editor/extension-runtime-...
Gỡ theo cách thông thường trong bảng Extensions cũng có hành vi tương tự
Cuối cùng tôi phải tự xóa thư mục extension trong
%USERPROFILE%\.vscode\extensions, rồi xóa cả mục tương ứng trong%USERPROFILE%\.vscode\extensions\extensions.jsonVSCode 1.97.2, commit
e54c774e0add60467559eb0d1e229c6452cf8447Tôi cũng cho rằng mô hình tin cậy của VSCode về cơ bản đã hỏng. Nó đang chạy mã bên thứ ba tùy ý trên máy client mà không có bất kỳ sandbox nào
Chắc các bạn sẽ không triển khai mức bảo mật như vậy trên Azure, vậy tại sao trong VSCode việc “chạy mã bên thứ ba tùy ý trên máy người khác” lại được xem là phù hợp?
Tôi biết ơn công việc của đội ngũ VSCode và thực sự đang dùng nó, nhưng việc thiếu sandbox luôn khiến tôi không thoải mái
https://marketplace.visualstudio.com/items?itemName=t3dotgg....
Tôi hỏi vì trên https://open-vsx.org không có các phiên bản sau khi extension này chuyển sang mã nguồn đóng
Tài khoản publisher Equinusocio của Material Theme và Material Theme Icons đã bị gắn cờ nhầm, và hiện đã được khôi phục
Chúng tôi đã hành động nhanh vì an toàn, nhưng đã mắc sai lầm. Các theme này đã kích hoạt nhiều chỉ số phát hiện malware nội bộ của Microsoft, và quá trình điều tra đã dẫn đến kết luận sai
Chúng tôi xem bảo mật của hệ sinh thái VS Code là điều rất quan trọng và đã hành động nhanh để bảo vệ người dùng
Chúng tôi hiểu sự thất vọng và phản ứng gay gắt của tác giả extension Equinusocio, và đã lắng nghe tiếng nói đó. Đây là chuyện không hay, nhưng đôi khi những việc như vậy vẫn xảy ra. Chúng tôi cố gắng hết sức nhưng cũng là con người; giờ mong có thể khép lại việc này và tiếp tục tiến lên
Chúng tôi sẽ làm rõ chính sách về mã bị obfuscate, đồng thời cập nhật scanner và quy trình điều tra để giảm khả năng việc này tái diễn
Các extension này an toàn và đã được khôi phục để cộng đồng VS Code sử dụng
Material Theme: https://marketplace.visualstudio.com/items?itemName=Equinuso...
Material Theme Icons: https://marketplace.visualstudio.com/items?itemName=Equinuso...
Một lần nữa xin lỗi vì tác giả đã bị cuốn vào hệ quả này; chúng tôi cũng mong chờ các theme và extension trong tương lai của anh ấy. Chúng tôi đã liên hệ với anh ấy để thảo luận biện pháp bồi thường và cảm ơn anh ấy vì đã kiên nhẫn
Scott Hanselman và đội ngũ Visual Studio Code Marketplace - @shanselman
Tôi đã tạo fork nổi bật nhất của extension này, “Material Theme (But I Won't Sue You)”
Maintainer ban đầu năm ngoái đã hoàn toàn đi quá giới hạn. Họ gỡ source vốn ban đầu là Apache 2 xuống khỏi mạng, rồi bắt đầu đe dọa kiện những người host phiên bản thay thế hoặc đưa nó vào các IDE khác
Để cẩn trọng hết mức, tôi đã thực hiện các biện pháp sau với fork của mình. Nhóm VS Code hiện đang audit, và tôi đã cho phép hoàn toàn rằng nếu họ phát hiện dù chỉ một đoạn mã độc nào thì có thể gỡ ngay khỏi Marketplace và buộc người dùng gỡ cài đặt
Tôi cũng audit kỹ codebase, không thấy phần nào có vẻ độc hại, và đã loại bỏ toàn bộ mã liên quan đến changelog, analytics, Open Collective và HTML rendering
Điều hơi đáng lo chỉ là HTML cho changelog và Sanity loader, nên tôi đã gỡ hẳn chúng ra. Qua hai PR, tôi đã loại bỏ gần như mọi dependency và hơn 7.000 dòng, phần lớn là
package-lockNếu ai khác muốn audit, repository ở đây: https://github.com/t3dotgg/vsc-material-but-i-wont-sue-you
Điều còn khó tin hơn là ai đó có thể “buộc gỡ cài đặt” bất cứ thứ gì trên máy của tôi
May mà tôi không phải người dùng VS Code. Có vẻ Marketplace và plugin đang có đủ kiểu ồn ào kiểu doanh nghiệp điển hình
Thú vị là có người trên Reddit đã nhận ra các thay đổi đáng ngờ của extension này từ 7 tháng trước [1]. Trong open source, obfuscation thường là dấu hiệu cảnh báo cực kỳ nghiêm trọng
Microsoft cần nghiêm túc xem xét lại mô hình bảo mật extension của VS Code. Với cách hiện nay, nó đã trở thành mục tiêu tấn công quá hấp dẫn
Chặn một developer thì sẽ có 10 extension độc hại mới xuất hiện theo sau
[1] https://www.reddit.com/r/vscode/comments/1eq40o2/has_the_mat...
VS Code có thể là một trong những sản phẩm tốt nhất mà Microsoft từng phát hành, và một lý do lớn là extension Marketplace
Nếu Microsoft siết chặt Marketplace hơn, rất có khả năng chất lượng VS Code sẽ tệ đi
Lý do là thế này. Khi việc xét duyệt Marketplace nghiêm hơn, rào cản gia nhập tăng lên và tổng số extension giảm. Khi extension ít đi, Microsoft sẽ có động lực đưa trực tiếp các tính năng vào bản thân VS Code. Microsoft càng thêm nhiều tính năng, VS Code sẽ càng phình to
Cuối cùng, tăng audit bảo mật cho extension Marketplace có thể dẫn đến một VS Code cồng kềnh hơn
Tất nhiên sẽ tốt nếu extension Marketplace có các kiểm soát bảo mật tốt hơn, nhưng tôi không tin Microsoft sẽ làm được theo cách thực sự cải thiện sản phẩm cho người dùng
Đọc các nội dung liên quan thì người này có vẻ bất ổn. Dường như anh ta nghĩ theo nghĩa đen rằng mã màu hex là tài sản của mình
Về mặt kỹ thuật cũng không giỏi, và đã khiến những người giỏi rời đi hết
Tôi không dùng phần mềm của anh ta, nhưng hy vọng anh ta sớm vượt qua vụ này và học được rằng mình không phát minh ra Material
Ngược lại, nên xem xét khả năng họ tinh vi và lừa lọc, hoặc thậm chí là tay sai của cơ quan tình báo
Nghi ngờ như vậy về một người đưa mã độc vào công cụ lập trình không phải là hoang tưởng
Có người đã đưa lên một extension thay thế là Material Theme (But I Won't Sue You)
https://marketplace.visualstudio.com/items?itemName=t3dotgg....
Tôi clone repository https://github.com/t3dotgg/vsc-material-but-i-wont-sue-you về xem, và tóm tắt số dòng code như sau
CSS: 2 file, 142 dòng, 119 dòng code, 0 dòng comment, 23 dòng trốngTypeScript: 32 file, 2026 dòng, 1650 dòng code, 243 dòng comment, 133 dòng trốngHTML: 2 file, 59 dòng, 49 dòng code, 1 dòng comment, 9 dòng trốngTổng cộng 36 file, 2227 dòng, 1818 dòng code, 244 dòng comment, 165 dòng trống
Trong đó 622 dòng TypeScript là định nghĩa màu hex theo từng biến thể trong
scripts/generator/settings/specificPhần còn lại nhìn chung cũng giống boilerplate, chẳng hạn 599 dòng trong
scripts/generator/color-set.tsVậy câu hỏi vẫn còn đó. Rốt cuộc có gì cần bảo trì đến mức mất hơn vài phút?
Tôi đã phát hành và duy trì các dự án open source thực chất hơn nhiều trong nhiều năm, nhưng chưa từng kỳ vọng đóng góp tiền bạc
Rốt cuộc Material theme có gì mà khiến người ta thành ra như vậy? Khoảng 5 năm trước bên IntelliJ cũng từng có chuyện tương tự
Dù vậy cái đó không chỉ có màu sắc theo nghĩa đen
Có ai có thể chỉ ra phần độc hại nằm ở đâu trong kho mã không? Tôi không tìm thấy
Mã bị làm rối thì tôi tìm thấy ở đây: https://web.archive.org/web/20250226020241/https://github.co...
Việc người này nhận đóng góp của người khác rồi sau đó chuyển sang mã nguồn đóng thật sự rất lạ. Có vẻ không đúng, nhưng tôi không phải chuyên gia bản quyền
Người bảo trì có thể đổi giấy phép, nhưng điều đó không ảnh hưởng đến các phần đóng góp trước đó. Về cơ bản, mọi thứ trước thời điểm đổi giấy phép vẫn giữ giấy phép cũ
Đây là lý do phần mềm phổ biến dù đổi giấy phép vẫn có thể được fork
Nếu muốn đổi giấy phép hồi tố, cần có sự đồng ý của người đóng góp, hoặc phải có văn bản trao quyền đó
Thỏa thuận cấp phép của người đóng góp (CLA) cũng có thể trao cho người bảo trì quyền tùy ý đổi giấy phép cả các phần trước đây, nhưng không phải CLA nào cũng như vậy
Các phần mềm nổi tiếng từng đổi giấy phép có Redis và Terraform. Ngay cả trong những trường hợp này, phần mềm đã phát hành vẫn có thể được sử dụng theo giấy phép cũ, và giấy phép cũ đó cho phép fork
Dạo này hầu hết các công cụ đều có sẵn những theme mặc định được làm khá tốt, điều đó thật hay
Nếu muốn giảm những rủi ro như vậy và hạn chế tối đa số extension/add-on cài đặt, đây là một lựa chọn khá thực tế
Tất nhiên, việc phần mềm có thể được theme hóa đến mức này, và trong một số trường hợp có thể cải thiện tính dễ dùng và khả năng tiếp cận, cũng là điều tốt
Tuy nhiên các yêu cầu tính năng liên quan đến giới hạn quyền cần được xử lý
Rõ ràng nó không chỉ gồm các mã màu và định nghĩa đơn giản
Có lẽ cần siết chặt hệ thống theme hơn nữa