Nhiều người dùng WordPress từng gặp trường hợp các phần mềm diện Virus (AV: Anti-Virus) hay Google Drive cảnh báo Virus và chặn download khi tải theme, plugin WordPress từ Google Drive hoặc từ link trên mạng.

Thậm chí tải từ Server của nhà phát triển, hay Themeforest cũng bị cảnh báo viruses và block không cho download.

Nguyên nhân là gì?

Vì sao theme, plugin bị cảnh báo Viruses?

Chúng ta trở lại một điều cơ bản: mã độc cũng là một loại phần mềm như mọi phần mềm khác, và nó thường kí sinh như một phần của các phần mềm – source code chính thống, nhờ vậy khả năng phát tán của nó mới hiệu quả.

Có 2 trường hợp khi Theme, Plugins bị cảnh báo Viruses:

  1. Theme, Plugin đã bị chèn mã độc và mã độc này bị các phần mềm AV phát hiện, mã độc này thường do hacker cài vào bản gốc của theme, plugin rồi phát tán lại trên mạng.
  2. Theme, Plugin không hề có mã độc, nhưng chứa một số đoạn mã bị hiểu nhầm là Viruses.

Dù có cơ sở dữ liệu viruses khổng lồ, thì hệ thống quét Viruses của Google Drive, VirusTotal hay các phần mềm AV như Windows Defender, AVG, (đặt biệt là BKAV) … cũng không thể hoàn hảo, có lúc bị nhầm lẫn và cảnh báo sai.

a. Qui trình Quét mã độc của Anti-Virus Software

Với WordPress, mã độc thường được chèn vào các file PHP và JS (Javascript) có sẵn hoặc thêm một file mới trong thư mục theme, plugin.

Khi quét viruses, các phần mềm/ dịch vụ quét viruses sẽ giải nén file theme, plugin (file .zip) và quét nội dung của toàn bộ các file trong thư mục đã giải nén – sau đó:

  1. Đối chiếu với hệ thống dữ liệu Viruses có sẵn để phát hiện file nào chứa các đoạn mã ‘nghi’ là virus, và đoạn mã đó thuộc loại viruses nào (có tên họ cụ thể, ví dụ Trojan xyz, Adware abc, Spyware sml….)
  2. Việc đối chiếu và cảnh báo viruses không chỉ dựa vào sự so sánh chính xác 100% với các viruses có trong database của phần mềm AV, mà nó còn dựa vào việc nhận diện các đoạn mã có hành vi giống viruses ( … tham khảo vui anh CSGT cầm một vật giống tiền).

Các hành vi của viruses, cụ thể là mã độc trên Website thường thấy là tính năng tự lây lan, tự gọi một file lạ từ bên ngoài , hay cố tình mã hóa các đường link …

Và sự nhầm lẫn thường đến từ qui trình số 2 – khi theme, plugin chứa các đoạn code ‘có hành vi’ tương tự hành vi của viruses.

b. Tìm hiểu False Postive Notification

Trong lập trình, đối với tác giả của những theme, plugin nổi tiếng thì rõ ràng đó là các Team có tài năng, họ chắc chắn tuân thủ các qui định khắc khe về bảo mật khi code, chỉ có 2 trường hợp thường xảy ra:

Lỗi bảo mật Zero day (0-day Vulnerability)

Lỗi bảo mật phát sinh ngoài dự kiến của coder, vượt qua cả Team Tester và vẫn còn tồn tại khi phần mềm (theme, plugin) đến tay người dùng.

Không tồn tại coder hoàn hảo trên đời, nên trường hợp này thường xuyên xảy ra, đo đó không chỉ phần mềm nói chung, theme & plugin – cả mã nguồn WordPress thường xuyên tung ra các bản update, ngoài việc nâng cấp tính năng thì phần còn lại là vá các lỗi bảo mật, đa số là Zero day.

Tham khảo: Cơn ác mộng Zero-Day Vulnerability

Hài hước là các lỗi bảo mật kiểu này thường các phần mềm diệt Viruses không thể quét vì chẳng có hành vi nào của Viruses trong các đoạn code.

Lỗi chỉ được phát hiện khi hacker khai thác nó và tấn công, trường hợp còn lại là phát hiện từ người dùng, chuyên gia bảo mật hay chính đội ngũ coder, tester.

Tham khảo: Các sự cố bảo mật nghiêm trọng trên WordPress

Vậy nếu theme, plugin bị cảnh báo viruses, thì hầu hết không phải do lỗ hổng bảo mật.

False Positive là gì?

Đây là cái bài viết muốn đề cập.

Themes và Plugins OK, chưa có vấn đề gì về bảo mật, và cũng không chứa mã độc. Nhưng lại bị các phần mềm, dịch vụ quét viruses cảnh báo là có mã độc (malware, viruses..).

Trường hợp ngày người ta gọi là Cảnh báo False Positive – hay báo động nhầm.

Như kiểu anh chồng cầm bó hoa trèo cửa sau vào nhà để gây bất ngờ, còn chị vợ thì nấp dưới gầm giường gọi 113 kêu cứu!

Đối với Theme, Plugin WordPress, False Positive rất hay gặp, cả những theme và plugin nổi tiếng như Porto, Eduma, Revolution Slider, Visual Composer … cũng từng nếm trải cảm giác bị cảnh báo chứa Viruses.

Nguyên nhân cảnh báo False Positive

Có 2 nguyên nhân phổ biến:

1. Theme, Plugin có code Base64

Tác giả sử dụng phương thức mã hóa Base64, mã hóa Base64 là phương thức mã hóa nhằm giúp truyền tải dữ liệu trên mạng dễ dàng hơn.

Base64 trước đây chủ yếu được sử dụng trong việc mã hóa và truyền tải email vì giao thức SMTP không cho phép gởi file trực tiếp. Hiện nay Base64 đã sử dụng rộng rãi hơn: dùng mã hóa các tập tin đa phương tiện (hình ảnh, âm thanh, video,…) ứng dụng vào việc truyền tải hình ảnh trên website.

Vì hầu hết các đoạn mã độc đều được hacker dùng base64 che dấu, nên các phần mềm diệt Viruses và các công cụ check Theme/ Plugin thường ‘mẫn cảm’ với code đã mã hóa Base64 trong theme, plugin.

Base64 hack

Thực tế, rất nhiều theme, plugin vẫn đang sử dụng base64 để mã hóa một số đoạn code vì thế mạnh của nó khi truyền tải dữ liệu trên mạng. Tuy nhiên, đôi khi các đoạn mã này bị cảnh báo nhầm là Viruses và tác giả phải chỉnh sửa lại cho vừa lòng các AV Software.

  • Trường hợp này đã từng xảy ra ở Bloom Opt-in của ElegantThemes năm 2017 (VHW từng bị nghi ngờ là bán plugin chứa mã độc cũng vì cái Bloom này).
  • Đầu năm 2018, plugin MTS Social Locker của MTS cũng gặp tình trạng tương tự và tác giả phải tung ra bản update nhanh để khách hàng an tâm sử dụng.
  • Hay cuối năm 2018, hàng loạt theme bị cảnh báo Viruses vì tích hợp Revolution Slider, nguyên nhân là Revolution Slider phiên bản 5.4.8.1 có một file JS dùng mã hóa Base64 và bị hiểu nhầm là viruses.

Tai nạn của Revolution Slider gây nhiều mệt mỏi cho các tác giả theme vì có hàng nghìn nhà phát triển tích hợp plugin nào vào theme dưới dạng Developer License.

Tất nhiên sau cảnh báo của hàng loạt người dùng vì bị báo viruses khi tải theme từ chính Server của tác giả và Themeforest, plugin Rev cũng update nhanh chóng để các nhà phát triển theme tích hợp bản để người dùng an tâm sử dụng.

Với các tác giả ‘lười’ update Themes, thì họ vẫn để Revolution Slider bản cũ và hiện nay chúng ta vẫn còn gặp tình trạng nhiều theme khi tải về bị cảnh báo viruses, như trường hợp của Schule theme đề cập ở cuối bài này.

2. False Positive vì Minify code JS

Minify là kỹ thuật ‘tối giản code’, áp dụng cho code HTML và JS rất phổ biến, minify một đoạn code là xóa các khoản trống trong code nhằm giảm size của file code, nhờ đó tăng tốc độ tải.

Kỹ thuật minify áp dụng thường xuyên khi dùng các plugin tăng tốc caching như WP-Rocket, W3 Total Cache, LiteSpeed Cache hay SwiftPerformance…

Minify JS

Minify cũng thường khiến một số đoạn code JS bị nghi là có ‘hành vi viruses’, vì khi quét virus các phần mềm AV quét nguyên file minify chứ không thể bung trở lại với các khoản trống trước khi tối ưu được.

Nếu gặp trường hợp này, tác giả phải sửa lại bằng cách thêm các phương thức xác thực giá trị – thêm các điều kiện thực thi… nói chung là nhiều trường hợp khác nhau.

Làm sao để sau khi minify, đoạn code đó không còn dấu hiệu của ‘hành vi giống virus’ nữa (xem trường hợp của Redux Framework bên dưới).

Một số trường hợp False Positive

Trong quá trình support Members của wpbanquyen.com, VHW Team cũng gặp các trường hợp False Positive khiến Members hoang mang và phải bỏ thời gian tìm hiểu cặn kẽ để kịp thời thông tin trấn an dư luận.

Trường hợp Revolution Slider 5.4.8.1

Các theme tích hợp Revolution Slider (rev slider), phiên bản 5.4.8.1 ( ra mắt ngày 5/12/2018) khi nén bị cảnh báo Trojan.

Xem kết quả Virus Total Rev Slider 5.4.8.1

Rất nhiều theme nếu chưa update bản mới từ 5/12/2018 sẽ bị cảnh báo Virus khi quét VirusTotal hoặc khi tải về từ Google Drive, vì các theme này vẫn đính kèm phiên bản Rev Slider 5.4.8.1, chứ chưa update bản mới.

Thực ra Revolution Slider 5.4.8.1 không hề có virus, vấn đề là một file JS của plugin này có sử dụng Base64 để mã hóa code, mà thủ phạm cụ thể là file này:

revslider\includes\gutenberg-blocks\assets\js\editor.blocks.js

Nó là file hỗ trợ Revolution Slider trong Gutenberg Editor, có vẻ vì cuối 2018 tác giả của Rev Slider quá vội vàng tung version mới để tương thích với Gutenberg Editor, nên đã không check kỹ code và fix lại tránh gây hiểu nhầm cho khách hàng.

Những plugin tích hợp với Developer License như Revolution Slider, Visual Composer, ConvertPlug, LayerSlider… được sử dụng rộng rãi – nhất là các theme trên Themeforest, và trong quá khứ không ít plugin này bị cảnh báo viruses gây ra nhiều thiệt hại ‘liên đới’ cho các theme có tích hợp chúng.

Tham khảo: Tìm hiểu Plugin tích hợp & Developer License

Riêng vấn đề của Revolution Slider 5.4.8.1, rất nhiều theme ở Themeforest ‘bị oan’, cũng vì cái file js đó, điển hình là:

  • Ronneby – một trong những theme bán chạy nhất mọi thời đại ở Themeforest – bạn có thể xem chi tiết ở phần comment support tại đây!
  • Decibel – một trong những theme Bestselling cho Music Web – xem chi tiết ở trang này.
  • Mới đây là trường hợp một Member của WPBQ không tải theme TheArk được từ Google Drive vì cảnh báo viruses (sau khi update lên latest thì đã ok).

Trường hợp gần đây nhất được một Members thông báo, là theme LMS Schule của cmsmasters, theme này dùng Framework riêng của chính cmsmasters và bản latest là từ cuối 2018.

Như bạn thấy, code gốc được tải từ tài khoản Envato Elements:

Quét viruses total ra ngay kết quả là trojan:

Link xem kết quả quét VT

Khi giải nén và chỉ test file theme schule.zip, thì không còn cảnh báo viruses (xem kết quả) , vậy đoạn code bị cảnh báo nằm ở các file đính kèm (plugins, demo, docs) trong Full package.

Khi download Full package từ Google Drive, sẽ gặp cảnh báo viruses.

Sau khi VHW Team liên hệ với tác giả, thì tác giả xác nhận Theme Schule có tích hợp Rev Slider bản 5.8.4.1, và chính plugin này khiến Full pack bị hiểu nhầm là viruses.

Xem chi tiết ở cuối phần comment trang này.

Update:

Tin vui là cmsmaster đã update Schule 1.0.5 lên bản mới (1.0.6) chỉ 1 ngày sau khi nhận report từ VHW Team, chủ yếu là update các plugin tích hợp, trong đó có Rev Slider.

Trường hợp của Redux Framework

Trường hợp điển hình False Positive vì Minify JS là plugin Redux Framework, một plugin cực kỳ nổi tiếng để tích hợp Option Theme nhanh.

Redux Framework thậm chí còn gây phiền hà hơn vụ Revolution Slider, vì số lượng theme nổi tiếng sử dụng Redux Framework nhiều vô kể, và vụ việc cũng được xử lý chậm hơn so với Rev Slider (có thể vì Redux Framework là plugin free, còn Rev Slider là trả phí).

Hàng loạt theme khủng mang tiếng oan có thể kể đến Porto, Total, Legenda, Education Pack…Bạn có thể tham khảo:

Người dùng cảnh báo viruses trên WP Repository

Theme Porto bị cảnh báo viruses khi tải về từ Google Drive

Nguyên nhân trong phiên bản cũ (2017) , file này được nén JS:

redux-framework/ inc/ fields/ editor/ fiel_editor.min.js

File này không hề có mã độc, quét viruses phiên bản chưa minify của nó trong cùng thư mục không hề bị cảnh báo viruses:

redux-framework/ inc/ fields/ editor/ fiel_editor.js

Khi minify (bỏ khoản trống trong code) thì một đoạn mã sẽ gây hiểu nhầm vì hành vi khá giống với quá trình tự động của các đoạn mã trojan. Cụ thể file bị cảnh báo là:

redux-framework/ inc/ fields/ editor/ fiel_editor.min

Mục đích tích hợp TinyEditor vào theme option. File cũ:

setTimeout(
function() {
for ( var i = 0; i < tinymce.editors.length; i++ ) {
redux.field_objects.editor.onChange( i );
}
}, 1000
);

File mới:

setTimeout(
function() {
if (typeof(tinymce) !== ‘undefined’) {
for ( var i = 0; i < tinymce.editors.length; i++ ) {
redux.field_objects.editor.onChange( i );
}
}
}, 1000
);

Phiên bản mới – Redux Framework đã thêm điều kiện if (typeof(timymce) !==’undefined’) { … } trước khi thực hiện vòng lặp for, việc này giúp khi nén code, file này không còn bị hiểu nhầm là Virus nữa!

 

c. Kinh nghiệm Quét Virus Themes & Plugins

Bình thường nến bạn dùng theme bằng cách tải trực tiếp từ tác giả, WP Repository hoặc theme Marketplaces uy tín như Themeforest, TemplateMonter…thì khả năng bị chèn mã độc rất thấp – trừ các tác giả không có tiếng tăm gì hoặc sản phẩm ít người dùng và review trên WP Repository.

Lưu ý, ở đây nói về code chứa mã độc chứ không phải khẳng định về độ an toàn bảo mật của theme, plugin, vì không có theme, plugin nào an toàn tuyệt đối.

Tham khảo: Các sự cố bảo mật nghiêm trọng trên WordPress

Bạn chỉ thật sự cần quét viruses theme, plugin nếu tải chúng từ bên thứ 3, tức là mua từ các trang Reseller (mua đi bán lại) hoặc ‘nhắm mắt’ tải từ các trang chia sẻ free trên mạng (rất không nên >>>) hay được share lại bởi ‘bạn bè xã hội’.

Lúc này, công cụ quét Virus tốt nhất chính là VirusTotal – một dịch vụ quét viruses hàng đầu thế giới với việc sử dụng tất cả các phần mềm diệt viruses nổi tiếng toàn thế giới (có cả BKAV của anh Quảng Nổ nhà mình nữa).

VirusTotal không chỉ quét file và cảnh báo viruses mà còn lưu lại thông tin file & kết quả quét, để nếu ai đó quét lại file đó lần thứ 2, kết quả cũ sẽ hiển thị liền mà không cần phải quét lại.

Lưu ý trước khi quét VirusTotal:

  1. File nén không được đặt password, vì VT không thể giải nén để quét bên trong
  2. Không quét một đường dẫn tải file, vì VT không thể tải file đó về rồi quét, ví dụ bạn upload file lên Google Drive, Zippyshare hay Mega.nz rồi quét đường dẫn trên VT, thường kết quả luôn OK vì thực sự VT chỉ quét cái trang chứa link chứ không hề quét file trong link đó.

False Postive trên VirusTotal

Vì sử dụng tất cả các AV Software kiểu liên hiệp quốc nên VT ngoài các phần mềm chất lượng của Avast, Avira, BigDefender, Microsoft, Yandex, Kaspersky, Symantec, McAfee… thì còn có các trình duyệt viruses kém hơn như Rising, Jiaming (China), hay BKAV của VN.

Các công cụ Rising, Jiaming, BKAV có tỉ lệ cảnh báo nhầm viruses cao hơn nhiều so với các công cụ khác, đặc biệt là với theme, plugin có dùng mã hóa Base64.

Như trường hợp mới đây BKAV đơn phương tuyên bố Newspaper by Tagdiv có ‘1 con’ virus dù nó được tải về trực tiếp từ Themeforest bởi người mua theme:

Khi gặp cảnh báo có 1 viruses (thường là Trojan hay Webshell) từ một trong các phần mềm kể trên, bạn cứ bình tĩnh nhé!

Trường hợp nghiêm trọng khi cảnh báo Viruses từ VT

Với các theme, plugin có chèn mã độc thực sự, thì thường VirusTotal sẽ check được từ 2 ‘con’ viruses trở lên, và nhiều phần mềm cùng đưa ra cảnh báo viruses.

Lúc này tỉ lệ ‘nhiễm mã độc’ thực sự của theme và plugin đó rất cao. Bạn không nên dùng chúng và nếu sản phẩm đó tải trực tiếp từ tác giả hay Themeforest, WP Repository … thì hãy liên hệ ngay các bên liên quan để làm rõ vấn đề.

VirusTotal không check được hoàn toàn

VirusTotal chỉ có tác dụng giúp phát hiện các theme, plugin bị chèn mã độc nếu các loại mã độc này có trên Database của các công cụ quét viruses. Có 2 thứ mà VT không giúp chúng ta được:

  • Quét bad links: các link xấu trỏ đến các trang spam, trang lừa đảo, web đen… khi chèn vào theme, plugin và đưa lên nội dung Website thì nó sẽ khiến Google đưa Website vào blacklist, bị phạt và không thể rank được. Chưa kể nó còn cảnh báo người dùng site chúng ta nguy hiểm độc hại để họ không vào. VT hầu như không quét được các link này.
  • Quét backdoor ‘tinh vi’: hacker luôn là kẻ đi trước, và các phần mềm AV đi sau để giải quyết các vấn đề mà hacker đã làm, vì vậy luôn có các đoạn mã độc mới mà trình duyệt Viruses chưa có trong dữ liệu cũng chưa dự đoán được hành vi của nó. Nên VT không phải lúc nào cũng phát hiện được 100% malware trong code – nhất là các loại mã độc backdoor – cho phép hacker thâm nhập vào Website âm thầm.

Việc bảo mật Website nói chung và WordPress nói riêng bao gồm rất nhiều phương pháp kết hợp lại để hiệu quả được cao nhất. Hãy tham khảo:

Các phương pháp Bảo mật Website A-Z

Chúc vui vẻ!

LEAVE A REPLY

Please enter your comment!
Please enter your name here