1 điểm bởi GN⁺ 2025-02-27 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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.json trong .vscode hoặ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-you trê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_compromised và 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 .vscode như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 đó trong extensions.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.9 trong .vscode-insiders/extensions và bỏ đối tượng tương ứng trong extensions.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ục equinusocio.vsc-material-theme, rồi dùng rm -rf equinusocio.vsc-material-theme-34.7.9 để xóa thư mục tiện ích

1 bình luận

 
GN⁺ 2025-02-27
Ý 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-...

    • VSCode không gỡ được extension này. Khi hiện prompt yêu cầu gỡ và tôi xác nhận, cửa sổ được refresh nhưng extension vẫn còn, rồi cùng prompt “có vấn đề” lại hiện lên, dẫn tới vòng lặp vô hạn
      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.json
      VSCode 1.97.2, commit e54c774e0add60467559eb0d1e229c6452cf8447
    • Mong bạn giải thích sự mâu thuẫn này. Nếu phải dựa vào cộng đồng để báo cho Marketplace về vấn đề, chẳng phải Microsoft chưa đầu tư đủ để tự audit các extension phổ biến sao?
      Tô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
    • Có thể cũng cần theo dõi các bản upload lại
      https://marketplace.visualstudio.com/items?itemName=t3dotgg....
    • Tôi muốn xem xét liệu phía Open VSX có thể đánh dấu extension này là độc hại hay không. Không biết bạn có biết khoảng phiên bản nào chứa mã độc không
      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
    • Dương tính giả thực sự rất khó xử lý, và khi xảy ra thì gây tác động lớn
      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-lock
    Nếu ai khác muốn audit, repository ở đây: https://github.com/t3dotgg/vsc-material-but-i-wont-sue-you

    • Việc một theme có thể tích lũy cả mã analytics và nhiều dependency tự nó đã có vẻ vô lý. Theme thường nên là một gói màu sắc/style tự chứa
      Đ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
    • Tôi không hiểu vì sao không có lấy một screenshot nào cho thấy nó trông thế nào, cả trong repository lẫn trên trang Marketplace. Tôi bỏ sót gì à?
  • 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...

    • Hãy cẩn thận với điều mình mong muốn
      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

    • Pantone chắc sẽ muốn nói vài lời
    • Có người gọi anh ta là lunatic, nhưng đây là vấn đề bảo mật. Không nên chỉ mặc định rằng một người đưa thành công mã độc vào IDE của các developer trên toàn thế giới là bất ổn hay điên rồ
      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ác giả ban đầu nói rất nhiều về chi phí phát triển/bảo trì, nên tôi tò mò rốt cuộc có gì cần bảo trì
      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ống
      TypeScript: 32 file, 2026 dòng, 1650 dòng code, 243 dòng comment, 133 dòng trống
      HTML: 2 file, 59 dòng, 49 dòng code, 1 dòng comment, 9 dòng trống
      Tổ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/specific
      Phầ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.ts
      Vậ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
    • Người tạo extension thay thế có vẻ là tech YouTuber theo (https://m.youtube.com/@t3dotgg)
    • Ồ, đó là tôi. Thành thật mà nói, việc người này hơi phát điên cũng không làm tôi ngạc nhiên
  • 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ó vẻ bất cứ thứ gì phổ biến và có khả năng kiếm tiền đều sẽ thành ra như vậy
  • 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

    • Nói chung, các đóng góp thường được giả định là được cung cấp theo giấy phép hiện tại
      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ó RedisTerraform. 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
    • Ngay từ đầu, Material có thực sự là tác phẩm của anh ta không?
    • Tương tự như nhiều dự án mã nguồn mở do công ty chủ yếu quản lý, như Red Hat hay Terraform, chuyển sang phi thương mại
  • 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ý

    • Bản thân việc theme có thể trở thành rủi ro bảo mật đã khá đáng ngạc nhiên
      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