6 điểm bởi GN⁺ 8 ngày trước | 7 bình luận | Chia sẻ qua WhatsApp
  • Cùng một kẻ tấn công đã mua lại hơn 30 plugin WordPress, rồi chèn mã cửa hậu ngay từ commit đầu tiên, làm lây nhiễm chuỗi cung ứng
  • Mã độc nằm im khoảng 8 tháng rồi được kích hoạt vào đầu tháng 4/2026, chèn liên kết spam và chuyển hướng vào nhiều trang web
  • WordPress.org trong ngày 7/4/2026 đã đóng vĩnh viễn 31 plugin liên quan chỉ trong một ngày và phát hành cập nhật bắt buộc
  • Kẻ tấn công đã mua danh mục ‘Essential Plugin’ trên Flippa với số tiền 6 chữ số, sau đó dùng smart contract Ethereum để che giấu miền C2
  • Vụ việc này là sự tái diễn của một cuộc tấn công chuỗi cung ứng quy mô lớn tương tự vụ ‘Display Widgets’ năm 2017, cho thấy sự thiếu hụt trong quản trị niềm tin của hệ sinh thái plugin WordPress

Trường hợp tấn công chuỗi cung ứng plugin WordPress

  • Hơn 30 plugin WordPress đã bị cài cửa hậu sau khi bị cùng một kẻ tấn công thâu tóm
  • Kẻ tấn công mua danh mục ‘Essential Plugin’ trên Flippa với số tiền 6 chữ số, rồi thêm mã độc ngay ở commit đầu tiên
  • Cửa hậu nằm im trong 8 tháng trước khi được kích hoạt vào đầu tháng 4/2026, làm lây nhiễm hàng loạt trang web
  • WordPress.org trong ngày 7/4/2026 đã đóng vĩnh viễn 31 plugin liên quan chỉ trong một ngày
  • Vụ việc này được đánh giá là sự lặp lại của mô hình tấn công chuỗi cung ứng tương tự sự cố ‘Display Widgets’ năm 2017

Phát hiện tấn công và phản ứng ban đầu

  • Lần nhiễm đầu tiên được xác nhận qua cảnh báo bảo mật wp-admin trên một website khách hàng
    • Nhóm plugin WordPress.org cảnh báo plugin “Countdown Timer Ultimate” có chứa mã cho phép truy cập trái phép
    • WordPress.org đã phát hành cập nhật bắt buộc (v2.6.9.1), nhưng một số website khi đó đã bị xâm phạm
  • Kết quả kiểm tra bảo mật cho thấy mô-đun wpos-analytics của plugin kết nối tới analytics.essentialplugin.com để tải file wp-comments-posts.php, từ đó thực hiện chèn hàng loạt mã PHP vào wp-config.php

Cách mã độc hoạt động

  • Mã được chèn sẽ nhận liên kết spam, chuyển hướng, trang giả mạo từ máy chủ C2 và chỉ hiển thị cho Googlebot
  • Kẻ tấn công dùng smart contract Ethereum để quản lý động miền C2
    • Vì truy vấn miền thông qua blockchain RPC endpoint nên không thể chặn chỉ bằng cách chặn tên miền thông thường
  • Bản cập nhật bắt buộc của WordPress.org chỉ vô hiệu hóa chức năng gọi về máy chủ của plugin, còn mã độc trong wp-config.php vẫn còn nguyên

Truy vết thời điểm nhiễm qua phân tích bản sao lưu

  • Sử dụng bản sao lưu restic của CaptainCore để so sánh kích thước file wp-config.php tại 8 mốc thời gian
    • Từ 04:22 đến 11:06 UTC ngày 6/4/2026, kích thước file tăng từ 3.345 byte lên 9.540 byte
    • Xác nhận việc lây nhiễm xảy ra trong khoảng 6 giờ 44 phút này

Thời điểm chèn cửa hậu và cấu trúc mã

  • Ở phiên bản plugin 2.6.7 (8/8/2025), 191 dòng mã mới được thêm vào để cài cửa hậu
    • Changelog ghi là “xác nhận tương thích với WordPress 6.8.2”
  • Các chức năng chính của phần mã được thêm vào
    1. fetch_ver_info() xử lý dữ liệu từ máy chủ của kẻ tấn công bằng @unserialize()
    2. version_info_clean() thực thi tên hàm nhận từ dữ liệu từ xa
    3. Tạo REST API endpoint có thể gọi không cần xác thực (permission_callback: __return_true)
  • Cấu trúc này cho phép thực thi hàm tùy ý (RCE), tồn tại ở trạng thái không hoạt động suốt 8 tháng rồi được kích hoạt vào ngày 5~6/4/2026

Quá trình thâu tóm plugin

  • Đội ngũ phát triển ban đầu là WP Online Support tại Ấn Độ, phát triển plugin từ năm 2015
    • Sau đó đổi thương hiệu thành Essential Plugin và vận hành hơn 30 plugin miễn phí và trả phí
  • Cuối năm 2024, khi doanh thu giảm 35~45%, họ đã rao bán toàn bộ doanh nghiệp trên Flippa
  • Đầu năm 2025, một người tên ‘Kris’ với kinh nghiệm trong marketing SEO, tiền mã hóa và cờ bạc trực tuyến đã mua lại
    • Flippa đã đăng thương vụ này lên blog như một case thành công vào tháng 7/2025
  • Ngay ở SVN commit đầu tiên sau thương vụ (8/8/2025), mã cửa hậu đã được thêm vào
  • Vào ngày 5~6/4/2026, analytics.essentialplugin.com bắt đầu phân phối payload độc hại tới tất cả website
  • Ngày 7/4/2026, WordPress.org đã đóng vĩnh viễn toàn bộ plugin của Essential Plugin (31 plugin)

Danh sách plugin bị đóng

  • Hơn 30 plugin như Accordion and Accordion Slider, Countdown Timer Ultimate, Popup Anything on Click, WP Blog and Widgets, WP Team Showcase and Slider
  • Không còn kết quả khi tìm tác giả đó trên WordPress.org
  • analytics.essentialplugin.com hiện trả về phản hồi {"message":"closed"}

Các trường hợp tương tự trước đây

  • Năm 2017, một người tên ‘Daley Tias’ đã mua plugin Display Widgets (200.000 lượt cài đặt) với giá $15,000 rồi chèn mã spam
  • Sau đó tiếp tục lây nhiễm hơn 9 plugin bằng cùng một cách
  • Vụ việc lần này được xác nhận là tái hiện cùng thủ pháp đó ở quy mô lớn hơn (hơn 30 plugin)

Khôi phục thiệt hại và vá lỗi

  • Bản cập nhật bắt buộc của WordPress.org chỉ là biện pháp tạm thời
    • Bản thân mô-đun wpos-analytics vẫn còn tồn tại
  • Đã tự tạo bản vá loại bỏ hoàn toàn mô-đun cửa hậu
    • Trong 22 website khách hàng, phát hiện plugin của Essential Plugin trên 12 website và trực tiếp vá 10 website
    • Bản vá xóa thư mục wpos-analytics, bỏ hàm loader, và thêm -patched vào tên phiên bản
  • Ví dụ: Countdown Timer Ultimate, Popup Anything on Click, WP Testimonial with Widget

Cách tự vá thủ công

  • Xóa thư mục wpos-analytics/
  • Trong file plugin chính, xóa khối “Plugin Wpos Analytics Data Starts” hoặc wpos_analytics_anl
  • Thêm -patched vào header Version: rồi nén lại
  • Cài đặt bằng wp plugin install your-plugin-patched.zip --force
  • Nếu kích thước file wp-config.php tăng khoảng 6KB thì xem như đang ở trạng thái nhiễm hoạt động và cần khôi phục toàn bộ

Vấn đề niềm tin trong hệ sinh thái plugin WordPress

  • Trong 2 tuần gần đây đã xảy ra liên tiếp các cuộc tấn công chuỗi cung ứng
    • Mua lại plugin đáng tin cậy rồi chèn mã độc
    • Kế thừa nguyên quyền commit trên WordPress.org và phát hành mà không qua xác minh
  • WordPress.org không có quy trình giám sát thay đổi chủ sở hữu hay rà soát lại mã nguồn
    • Không có thông báo cho người dùng hoặc tính năng review tự động khi thêm committer mới
  • Phản ứng của nhóm plugin là nhanh, nhưng việc chèn cửa hậu đã không bị phát hiện suốt 8 tháng
  • Người vận hành website WordPress nên kiểm tra danh sách plugin và gỡ bỏ hoặc vá ngay các plugin thuộc Essential Plugin, đồng thời обязательно kiểm tra file wp-config.php

7 bình luận

 

WordPress tôi đã dùng hàng chục năm..
Tôi chỉ dùng số plugin tối thiểu, nhưng dù vậy lúc nào cũng thấy bất an.
Dù thế, nó vẫn tiện hơn so với static nên tôi chưa muốn chuyển đi!

 
tangokorea 7 ngày trước

Đúng là như vậy. Đã tăng vọt hẳn lên.

 

WordPress đúng là... cứ liên tục phát sinh vấn đề. Nếu bạn đã đang sử dụng thì hãy tham khảo các bài liên quan như EmDash.
Tôi đã bỏ rồi và chuyển hẳn sang trang tĩnh.

 
colus001 7 ngày trước

Tôi đã thử cài EmDash, nhưng trước hết là nó quá chậm. TTFB mặc định đã khoảng 3 giây, nên khiến tôi tự hỏi liệu thứ này có thực sự được tạo ra để dùng hay không.

 

Ồ, ra là vậy. Thế thì tôi cứ hài lòng với bản tĩnh thôi haha

 
tangokorea 7 ngày trước

Có vẻ điều này khiến người ta nghĩ rằng việc quản lý các trang tĩnh bằng AI có thể thay thế những CMS cũ kỹ bị bao phủ bởi mã legacy.

 
Ý kiến trên Hacker News
  • Phản ứng thái quá với Mythos lúc nào cũng buồn cười
    Công nghệ phát hiện lỗ hổng tự động có thể làm rung chuyển ngành bảo mật, nhưng đó không phải điều thực sự đáng lo
    Stack công nghệ và cơ chế quản trị doanh nghiệp hiện nay vốn đã lỗi thời
    Nếu phải chỉ ra thủ phạm chính khiến tình hình tệ hơn thì đó là tiền mã hóa. Nó đã biến việc hack thành một ngành công nghiệp trị giá hàng chục tỷ đô, thậm chí còn lôi kéo cả các quốc gia như Triều Tiên
    Giờ đây, người ta có thể đơn giản mua lại các dependency hoặc trả tiền cho nhân viên để họ “mắc lỗi”
    Chúng ta có thể viết phần mềm gần như không có lỗi, nhưng lại không có kế hoạch nào để giữ an toàn cho các tập đoàn lớn trong môi trường này
    Các tác nhân LLM tự trị sẽ được dùng bởi các nhóm ransomware, nhưng chẳng cần phải dùng đến exploit FreeBSD

    • Tôi nghi ngờ nhận định “có thể dùng phần mềm gần như không có lỗi”
      Thực tế là tuần nào tôi cũng gặp bug ở PrimeVue, Vue, Spring Boot, Oracle driver, Ansible, Nvidia driver và nhiều thứ khác
      Một cách thực tế thì code hoàn toàn không lỗi có lẽ chỉ khả thi với máy bay hay tàu vũ trụ
      Hầu hết lập trình viên không phải là không muốn viết code không lỗi, mà thường là không thể vì các ràng buộc của môi trường
    • Cũng từng có những nhóm hack giành được quyền truy cập nội bộ chỉ bằng cách hối lộ nhân viên, như trường hợp LAPSUS$
      Đây không phải lý thuyết mà là thực tế. Với năng lực tài chính cấp quốc gia, việc mua chuộc người trong cuộc còn dễ hơn nhiều
    • Tôi xem đây là vấn đề của văn hóa tổ chức hơn là công nghệ
      Các dự án OSS có ít “bug WTF” hơn phần mềm doanh nghiệp lớn
      Trong môi trường phát triển một mình, người ta sẽ không làm những sai lầm ngớ ngẩn, nhưng trong tổ chức thì chúng vẫn được phát hành nguyên xi vì quy trình phê duyệt hoặc thông lệ
      Chính nền văn hóa lệch chuẩn không cho phép đặt câu hỏi “đây đã là tốt nhất chưa?” mới là thứ sản sinh ra bug hàng loạt
      Với nhóm nhỏ thì dễ thay đổi, nhưng ở tổ chức lớn thì chi phí rất cao
    • Nếu kẻ tấn công có thể cập nhật domain C2 thông qua smart contract Ethereum, tôi tự hỏi liệu tường lửa có phải chặn mọi endpoint Ethereum hay không
    • Như bài viết của The Register đã nói, việc kẻ tấn công xem chuỗi cung ứng như một đối tượng của phân tích chi phí-rủi ro là một chiến lược hợp lý
  • Nhìn vào các dự án web thì lúc nào cũng bắt đầu bằng “npm install”, rồi hàng chục thư viện được cài tự động
    Ngay cả tác giả cũng thường không biết có những dependency bắc cầu nào được kéo vào
    Với cấu trúc như vậy, gần như không có khả năng xác minh được các cuộc tấn công chuỗi cung ứng

    • Vì lý do này nên tôi tránh package bên ngoài nhiều nhất có thể
      Gần đây tôi đã viết công cụ đồng bộ thời tiết chỉ bằng thư viện chuẩn Python
      Không cần đến package ngoài như requests mà vẫn hoàn toàn đủ dùng, và tôi có được sự bình yên của việc không có dependency
    • Có câu “đừng phát minh lại bánh xe”, nhưng vẫn cần một điểm cân bằng hợp lý
      Những logic cốt lõi như mã hóa thì không nên tự triển khai, nhưng phụ thuộc vào thư viện cho cả những chức năng đơn giản thì là quá mức
    • Đây không chỉ là vấn đề của web mà là vấn đề chung của mọi hệ sinh thái như maven, Python, Ruby
    • Lockfile thực ra giúp ích nhiều hơn tưởng tượng
      Nếu phiên bản đã được cố định, thì ngay cả khi package bị bán lại và bị cài backdoor, bạn cũng không bị ảnh hưởng cho tới khi tự cập nhật
      Thứ còn đáng sợ hơn là Dependabot tự động mở PR “phiên bản vá” rồi vô tình đưa rủi ro vào
    • Tệ hơn nữa là thói quen kiểu sudo curl URL | bash
  • Tôi nghĩ chính hệ tư tưởng cập nhật phần mềm mới là vấn đề
    Cập nhật có lợi ích là vá bảo mật, nhưng đồng thời cũng có nguy cơ ép những thay đổi mà nhà phát triển không muốn hoặc trở nên độc hại
    Đặc biệt với các tiện ích mở rộng WordPress do cá nhân phát triển, tôi cho rằng tốt hơn là tuyệt đối không cho phép tự động cập nhật
    Marketplace của wordpress.org không hỗ trợ kiểu cấu trúc này nên rất rủi ro
    Trước đây tôi từng viết một bình luận về tiện ích mở rộng Chrome, và nếu thay Chrome bằng WordPress thì vẫn đúng nguyên vẹn

  • Bề mặt tấn công chuỗi cung ứng của plugin WordPress từ lâu đã rất nguy hiểm
    Lý do là cấu trúc hệ sinh thái khuyến khích cài nhiều plugin nhỏ do từng cá nhân phát triển
    Việc mua lại rồi lạm dụng các plugin đã có sẵn niềm tin là một cách tấn công cực kỳ hiệu quả
    Vì “thông báo cập nhật” tự nó hoạt động như một tín hiệu đáng tin, người dùng thậm chí còn không biết tác giả đã thay đổi
    Cần có hệ thống ký package và minh bạch hóa, nhưng WordPress cải thiện hạ tầng bảo mật rất chậm

    • Đa số người dùng chỉ muốn dùng plugin miễn phí, nên website bị phủ đầy plugin premium+kèm quảng cáo
      Trang quản trị trông như một meme thanh công cụ IE6 vậy
    • Đây cũng là lý do tôi ngừng làm website WordPress cho khách hàng
      Nhiều người chỉ cài bản miễn phí của Securi hoặc Wordfence mà không hề cấu hình, rồi lại kỳ vọng có bảo mật hoàn chỉnh
    • wp.org quá khoan dung với các tác nhân độc hại
      Họ chặn malware rõ ràng, nhưng lại làm ngơ trước kiểu bait-and-switch như chèn widget quảng cáo từ domain bên thứ ba
      Ở mức này thì gần như phải xem là thiết kế có chủ đích
  • Thật đáng tiếc khi dự án trình quản lý package FAIR không thành công
    fair.pm có cấu trúc phân tán lấy cảm hứng từ atproto, nơi bất kỳ ai cũng có thể vận hành mà không cần kho trung tâm
    Package được định danh bằng DID, và các tổ chức như Socket có thể gắn kết quả phân tích dưới dạng “labeler”
    Người dùng có thể chặn các package có gắn nhãn nhất định, hoặc tự vận hành labeler phân tích bảo mật dựa trên AI
    Dù không hoàn hảo, đây vẫn là cách tiếp cận tốt hơn nhiều so với trình quản lý package tập trung

    • Không phải là đã từ bỏ, mà là đã chuyển sang hướng công nghệ
      Hiện dự án đang hợp tác với cộng đồng Typo3 và mở rộng sang các hệ sinh thái khác (người viết là đồng chủ tịch FAIR)
    • Nó có thể trở thành một nền tảng thay thế npm khá thú vị
      Cấu trúc khuyến khích tốt hơn WordPress, nhưng vẫn có thể là chưa đủ
    • Nếu nhiều kho lưu trữ có khả năng bị lấp đầy bởi mã độc SEO, thì không thể chỉ dựa vào công cụ tìm kiếm để tìm kho an toàn
      Phân tán hóa mang lại tự do, nhưng từ góc độ người dùng thì rất bất tiện
    • Tôi tự hỏi FAIR có dành riêng cho WordPress hay không
  • Điểm thú vị của vụ này là các plugin đã được mua lại trên Flippa
    Flippa không phải chợ riêng cho WP mà là marketplace mua bán phần mềm nói chung
    Điều đó làm dấy lên lo ngại rằng các ứng dụng indie hay tiện ích mở rộng được mua lại với ý định tốt rồi sau này có thể bị vũ khí hóa
    Những ứng dụng như vậy còn có giá trị với kẻ tấn công hơn với nhà vận hành thực sự

  • Điều đáng sợ nhất không phải chính backdoor, mà là việc vụ mua lại trông quá bình thường và hợp lệ
    Việc mua một plugin đáng tin rồi đẩy bản cập nhật gần như không thể phân biệt với hoạt động bảo trì hợp pháp
    Người dùng không có bất kỳ tín hiệu nào để nghi ngờ

  • Các thương vụ M&A hạn chế cạnh tranh trên thị trường đôi khi còn cần được chính phủ phê duyệt
    Vậy thì liệu những thương vụ mua lại có ảnh hưởng nghiêm trọng đến bảo mật cũng nên cần quy trình phê duyệt từ marketplace hoặc chính phủ hay không
    Xem bài wiki về Mergers and acquisitions

  • WordPress từng rất tuyệt nhờ plugin, nhưng giờ chính cấu trúc plugin đó lại biến nó thành một hệ sinh thái nguy hiểm
    Tôi đã chuyển sang Hugo, và cũng khuyên người khác tham khảo hướng dẫn chuyển đổi

  • Có vẻ các doanh nghiệp vẫn chưa thực sự nhận ra họ đã đánh mất bao nhiêu quyền kiểm soát khi “thuê ngoài IT”