JavaScript - Client-Side Popup

Salve a tutti, oggi mentre facevo dei test su un sito, credo di aver trovato un ‘Problema’, e volevo sapere la vostra opinione al riguardo.

Sul sito in questione sono presenti molti articoli di storie di persone. Se si legge uno di questi articoli e si scrolla in giù per leggere di più su tale articolo, appare un popup che ti obbliga a creare un account e poi a pagare per poter finire di leggere questo e altri articoli.

Per bypassare tale popup (O anche paywall), si può usare un’estensione chiamata NoScript, dove puoi decidere quali file JS ed altri tipi di estensioni eseguire.

Questo ‘bypass’ costituirebbe in sè una vulnerabilità o è un qualche tipo di problema?

So che non si tratta di un qualche Client-Side Filter Bypass per l’upload di file malevoli su un sito, ma nonostante ciò, in questo caso c’è comunque una possibile perdita monetaria da parte dei creatori del sito.

E generalmente parlando, so che ogni cosa andrebbe gestita lato server, e mai lato client (Tra cui questa).

Cosa ne pensate? Sarebbe utile reportare una cosa simile?

1 Like

Segue la mia opinione, premetto però che non sono questioni su cui esistono risposte assolute. In ultima analisi quindi dipende.

Quella che stai descrivendo può essere classificata come vulnerabilità nel momento in cui:

  • è abbastanza intuitivo osservare che non rispetta le “aspettative” che avevano i gestori del sito.
  • ci può essere un danno economico, ergo c’é impatto.

La domanda “che cosa è una vulnerabilità?” è, in generale, molto difficile da rispondere. In ultima analisi però abbiamo sempre del software che ci vuole spinge in una direzione, più o meno chiara ed esplicita, e poi abbiamo il modo in cui quel software è implementato.

Molto spesso succede che le aspettative vanno in una direzione, e il codice va in un’altra. In questi casi, per capire se abbiamo una vulnerabilità oppure no, dobbiamo “fuoriuscire” dal contesto meramente tecnico per andare ad analizzare come la tecnologia è utilizzata nel contesto specifico sotto analisi.

In questo contesto ad esempio, il codice JavaScript viene utilizzato per vincolare la confidenzialità dei dati, e nello specifico per permettere solamente agli utenti che pagano di vedere i dati. Questa è l’aspettativa che viene imposta al JavaScript. Il problema ovviamente è che il browser riceve tutti i dati, a prescindere da quanto si paga, e quindi disabilitando javascript è possibile leggere tutti gli articoli.

Tipicamente queste sono vulnerabilità di design, ovvero del modo in cui il software è costruito. In un penetration test si potrebbe pensare di mettere tale vulnerabilità con una criticità anche abbastanza alta, considerando che va ad impattare direttamente la logica di guadagno del sito.

Non c’é una regola per trovare quest vulnerabilità, in quanto hanno a che fare con la relazione che esiste tra la parte tecnica informatica e la parte più di business del contesto. Sono vulnerabilità anche divertenti tra trovare proprio perché richiedono di mettere assieme tanti aspetti diversi.

Qui finisce la parte tecnica. Spero sia stata chiara.

Rispetto alla tua domanda: “ha senso riportarla oppure no?”, dipende anche qui da molti fattori. Dipende da quanto “security aware” sono i gestori del sito (in italia purtroppo siamo molto, molto indietro), e dipende da quanto tempo vuoi investire in questo. Purtroppo in italia non mi fiderei neanche tanto, considerando che l’ignoranza è talmente elevata che ti potrebbero dare fastidio anche per cose piccole.

Quindi, per finirla: si, sarebbe utile da sapere, ma per capire cose del genere bisogna avere quel minimo di consapevolezza che fin troppo spesso manca, specialmente nelle piccole e medie realtà.

POST-EDIT: per fixare la vuln dovrebbero vincolare l’erogazione dei dati degli articoli in modo tale che solo utenti autenticati e con i corretti privilegi (della serie: quelli pagano), possono scaricarei quei dati.

2 Likes

Grazie mille per la tua risposta, e per avermi fatto capire meglio come si potrebbe definire un qualcosa come una vulnerabilità!

Il sito è (Fortunatamente) americano.
La reporterò e attenderò una risposta. Grazie!