Plugin WP-Optimize accusato di truffa PageSpeed ​​e altri strumenti di test delle prestazioni

Pubblicato: 2022-08-30

Gijo Varghese, uno sviluppatore che si definisce un "appassionato di prestazioni web", ha scioccato gli utenti di WordPress in tutto il mondo durante il fine settimana quando ha twittato uno screenshot di come WP-Optimize stia esplicitamente impedendo il caricamento di file JavaScript selezionati quando gli utenti testano i loro siti attraverso prestazioni popolari strumenti di test.

"Quando un sito viene caricato, i file JavaScript vengono caricati solo quando lo user-agent/browser non è Lighthouse/GTmetrix/Headless Chrome/Pingdom", ha affermato Varghese. “No JS = punteggi alti. Ma per gli utenti reali, questi file JS vengono caricati!

Varghese ha confermato che stava testando la versione gratuita di WP-Optimize, utilizzata su oltre un milione di siti WordPress. UpdraftPlus ha acquisito WP-Optimize nel 2016 e afferma che lo strumento "ha tutto ciò di cui hai bisogno per mantenere il tuo sito web veloce e completamente ottimizzato". Una versione commerciale viene promossa anche tramite il plug-in gratuito ospitato su WordPress.org.

"Dimmi, UpdraftPlus, come dovrei continuare a fidarmi della tua azienda con i backup dei miei clienti quando usi queste pratiche ingannevoli e fraudolente?" ha affermato un cliente Adam Lowe in risposta alla scoperta da parte di Varghese del plug-in che non carica JS per gli strumenti per le prestazioni.

"Wow, tutto quello che posso dire è che totale delusione", ha detto il proprietario e sviluppatore dell'agenzia WordPress Brian Jackson.

Questo tipo di inganno è stranamente simile a una truffa segnalata da qualcuno che ha contratto un freelance di prestazioni su Upwork che ha manipolato artificialmente i risultati di Google Pagespeed. Altri partecipanti alla discussione su Twitter lo hanno paragonato allo scandalo delle emissioni di Volkswagen, in cui la casa automobilistica è stata trovata ad attivare i suoi controlli sulle emissioni solo durante i test di laboratorio per soddisfare i requisiti dell'EPA dopo una violazione. I veicoli su strada hanno emesso fino a 40 volte più ossidi di azoto durante la guida, rispetto a come si sono comportati nei test di laboratorio truccati.

Varghese e molti altri partecipanti alla conversazione hanno concluso che questo è il motivo per cui i proprietari di siti dovrebbero concentrarsi su ciò che stanno vivendo gli utenti del mondo reale, anziché sui punteggi dei test degli strumenti di performance.

Anche quando si concentrano sulle esperienze degli utenti reali, i proprietari dei siti spesso si affidano ai test per diagnosticare i problemi e vedere come è possibile migliorare le prestazioni di un sito. Non si aspettano che un plug-in nasconda i file JS dagli strumenti per le prestazioni. Ingannare i test ha eroso la credibilità di WP-Optimize.

"Oh. Se è vero, questo è tanto miope quanto imperdonabile", ha affermato Johnathon William, cliente di UpdraftPlus. "E mi chiedo se posso fidarmi del loro altro prodotto, UpdraftPlus, che utilizzo per eseguire il backup di diversi siti client".

Ho contattato UpdraftPlus e lo sviluppatore principale David Anderson ha detto che la società non era a conoscenza del problema con il codice, ma ha riferito parte del retroscena. UpdraftPlus è stato brevemente in trattative con l'autore del plug-in Fast Velocity Minify sulla possibilità di unire le forze, in cui manterrebbe il modulo di minimizzazione all'interno di WP-Optimize e guadagnerebbe più utenti. Alla fine non sono riusciti a raggiungere un accordo, ma durante quel periodo gli sviluppatori di WP-Optimize hanno biforcato e adattato Fast Velocity Minify sotto GPL. Gli sviluppatori che hanno lavorato a quell'adattamento non sono più con l'azienda.

"Nel commit nel nostro repository di origine, 2,5 anni fa (gennaio 2020), il commit era etichettato 'Resolve' Add CSS and JS Minification GPL code from 'Fast Velocity Minify' - Part 6'", ha detto Anderson. “Parte di una serie di fusioni iniziali di codice che è stato rifattorizzato per essere più pulito e utilizzare le nostre preferenze di stile di codifica (ma non modificare alcuna funzionalità). Quindi l'apparente intenzione dell'unione di quelle righe era di riportare il codice rifattorizzato senza apportare modifiche in quella fase.

“Secondo la cronologia del commit (cioè la funzione 'git colpa') non sono state apportate modifiche a quel codice da allora, cioè è come importato. (La cronologia di WP Optimize è pubblica anche in WordPress SVN).”

Dopo un esame superficiale del codice, Anderson ha concluso che il suo team potrebbe aver bisogno di riesaminarlo, poiché non era a conoscenza di ciò che era stato aggiunto due anni fa.

"Mentre provo a tracciare quella funzione attraverso il codice all'interno dei plug-in, l'intenzione a prima vista sembra essere che se il visitatore del sito Web è un 'bot', il codice che è inutile per i bot non verrà eseguito, " Egli ha detto.

“Tuttavia, detto questo, 1) i nomi dei bot sembrano essere fortemente offuscati/redatti, il che è strano (perché?) e 2) ci sono molti bot più ovvi che non sono elencati lì, come il Googlebot stesso. Se quella funzione fosse stata sottoposta a me per la revisione oggi, mi chiederei sicuramente perché è così. Non mi dispiace rileggermi 32 mesi fa, ma ricordo che si trattava di una lunga serie di grandi patch, quindi non veniva analizzata da vicino riga per riga. Sapevamo di aver identificato FVM come un buon plugin e il nostro obiettivo principale era adattarlo alla nostra struttura e al nostro stile, e queste erano le cose che stavo guardando personalmente come revisore finale".

In sintesi, il team di sviluppo di UpdraftPlus non era a conoscenza di questo codice fino a quando il thread di Twitter non è stato pubblicato durante il fine settimana.

"Sono certamente felice di averlo portato alle nostre intenzioni", ha detto Anderson. "Il codice associato commenta un frammento correlato nella sua fonte originale che ha lo scopo di prevenire richieste non necessarie di bot, ma a un esame più attento di quello che quella riga ha ottenuto in quel momento, è qualcosa che vorremmo esaminare, poiché sembra discutibile/strano, e lo faremo assegnandolo a un membro del team che è il nostro esperto di ottimizzazioni JavaScript".

Anderson ha anche affermato che se gli esperti di ottimizzazione di JavaScript non riescono a trovare uno scopo legittimo per il codice, "verrà sicuramente rimosso", con una divulgazione chiara e inequivocabile per il ragionamento alla base.

Nel frattempo, UpdraftPlus ha pubblicato un avviso nel forum di supporto del plugin per informare gli utenti che il codice è attualmente sotto inchiesta.

"Per essere chiari e tranquillizzare gli utenti: il codice in questione non è pericoloso, un virus, un'infezione, utile agli hacker o qualcosa del genere", ha detto Anderson. "L'accusa è che il suo unico scopo nell'esistere sia effettivamente quello di imbrogliare i test di velocità. Tale codice, in tal caso, non appartiene a WP Optimize e lo rimuoveremo con una nuova versione. L'integrità dei nostri prodotti e la fiducia dei nostri clienti sono essenziali per noi (e mettere deliberatamente cose in codice open source che compromette che è, francamente, una cosa stupida da fare)."