Ho visto almeno due siti colpiti da un’ondata di spam che sembra progettata per avvelenare gli LLM. Lo stesso attacco è stato segnalato qui almeno una volta (Anyone else currently undergoing mass spam attack?). La soluzione migliore è configurare Discourse AI - Spam detection, che consiglio vivamente, ma è un po’ complicato. Ecco una soluzione temporanea che puoi implementare e che richiederà solo pochi minuti.
Si presume che tu disponga di un sistema operativo simile a Unix (ad esempio, Linux o Mac). Se usi Windows e puoi copiare/incollare in un terminale, puoi connetterti via SSH al tuo server Discourse e incollare questo codice.
Ciò che fa è creare un set di parole monitorate generato da un recente attacco che ho visto. Se hai dimestichezza con nano o simili, puoi modificarlo prima di eseguirlo. In caso contrario, puoi eseguire questo script e poi eliminare le parole che non ti piacciono con un clic per parola.
Le parole bloccate possono essere molto fastidiose poiché impediranno agli utenti legittimi di creare post con quelle parole, quindi dai un’occhiata per assicurarti che nessuna di queste parole sia probabile che appaia in post legittimi sul tuo forum!
Inserisci l’URL del tuo sito, la chiave API e l’utente API nelle caselle sottostanti (saranno solo nel tuo browser, ma puoi semplicemente incollarlo così com’è e modificare il file se preferisci) e poi copia/incolla il blocco di codice in un terminale. Verrà creato upload_watched_words_full.sh e reso eseguibile. Puoi quindi eseguirlo con ./upload_watched_words_full.sh.
cat <<'EOF' > upload_watched_words_full.sh
#!/usr/bin/env bash
# Usage: ./upload_watched_words_full.sh
DISCOURSE_URL="=URL="
API_KEY="=API_KEY="
API_USERNAME="=API_USERNAME="
# Parole bloccate ad alta confidenza
BLOCK_WORDS=(
"servizio clienti numero"
"numero di contatto"
"numero di supporto"
"numero di telefono per rimborso"
"numero verde"
"supporto 24/7"
"linea di assistenza"
"chiamaci"
"rappresentante dal vivo"
"supporto tecnico"
"lufthansa"
"royal caribbean"
"coinbase"
"robinhood"
"numero di prenotazione"
"numero di prenotazione"
"cancellazione volo"
"commissione cambio nome"
"║"
"⇆"
"★"
"®️"
"™️"
)
# Parole segnalate a rischio medio
FLAG_WORDS=(
"servizio clienti"
"supporto clienti"
"team di supporto"
"help desk"
"hotline"
"agente"
"rappresentante"
"contattaci"
"supporto telefonico"
"centro assistenza"
)
# Parole che richiedono approvazione
REQUIRE_APPROVAL_WORDS=(
"urgente"
"azione immediata"
"agisci ora"
"tempo limitato"
"offerta esclusiva"
"approva questo"
"verifica account"
)
# Funzione per inviare parole in batch
add_words () {
local ACTION="$1"
shift
local WORDS=("$@")
# Costruisci i parametri words[]
local DATA=""
for w in "${WORDS[@]}"; do
DATA+="words%5B%5D=$(printf '%s' "$w" | jq -s -R -r @uri)&#"
done
DATA+="replacement=&action_key=${ACTION}&case_sensitive=false&html=false"
echo "Caricamento parole ${ACTION}..."
curl -s -X POST "${DISCOURSE_URL}/admin/customize/watched_words.json" \
-H "Api-Key: ${API_KEY}" \
-H "Api-Username: ${API_USERNAME}" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data "$DATA"
echo -e "\nFatto."
}
# Carica parole bloccate
add_words "block" "${BLOCK_WORDS[@]}"
# Carica parole segnalate
add_words "flag" "${FLAG_WORDS[@]}"
# Carica parole che richiedono approvazione
add_words "require_approval" "${REQUIRE_APPROVAL_WORDS[@]}"
EOF
# Rendi lo script eseguibile
chmod +x upload_watched_words_full.sh
echo "Script 'upload_watched_words_full.sh' creato e reso eseguibile."
I bot che avevamo qualche anno fa pubblicavano sciocchezze come dhfhstyhjfhhr come titolo dell’argomento per generare thread e superare il filtro delle parole chiave, poi lo modificavano nel vero messaggio di spam “migliori casinò online”.
Grazie Jay, ottimo script, grazie per averlo creato. Qualcuno che l’ha usato ha riscontrato che ha funzionato - in termini di soluzione alternativa per “modificare i post”? I bot stanno modificando i post o stanno solo inviando il testo direttamente?
Non lo so, ma se questo è il problema, potresti modificare le impostazioni in modo che alcuni utenti non possano modificare i post (Gruppi autorizzati alla modifica dei post), magari richiedendo TL2 e regolando le impostazioni per rendere più facile/difficile raggiungere tl2.
Per gli utenti normali, specialmente quelli nuovi, non essere in grado di modificare un post probabilmente non è un grosso problema, e potrebbe anche non essere qualcosa che si aspettano.
Sembra che inizialmente fosse solo spazzatura e poi sia stato modificato in spam, questo avrebbe aggirato le Parole Monitorate per quanto ne capisco.
Dato che le modifiche ai post da innocuo gergo a spam stanno diventando parte del modus operandi dei bot nei loro sforzi per contrastare i filtri antispam, il team di Discourse pensa che tl_0 non dovrebbe essere in grado di modificare i post per impostazione predefinita?
Oh, certo che lo avrebbe fatto. Tuttavia, sebbene non sia super costoso, è un po’ complicato dover configurare l’IA su ogni Discourse per respingere lo spam. Molti dei miei forum non ne avrebbero bisogno (o non lo vorrebbero) per nessuna delle altre funzionalità AI di Discourse, che sono piuttosto utili.
La soluzione qui non è impedire a tl0 o a qualsiasi altro gruppo di modificare i post.
La soluzione è fare in modo che la modifica di un post non aggiri alcuna protezione del sito. Un post modificato potrebbe (come abbiamo visto) contenere spam, odio o altri comportamenti indesiderati. Se i post modificati aggirano le parole monitorate e altri filtri, questo diventerà sicuramente un approccio standard non solo per i bot ma anche per gli esseri umani che vogliono aggirare le protezioni del sito.
C’è una questione su cosa significhi per alcuni tipi di parole monitorate applicarsi a una modifica. Ma è anche chiaro che questa limitazione riduce notevolmente il valore delle parole monitorate.
Mi aspetterei che fosse utile proporre una specifica su cosa dovrebbe accadere esattamente per ogni tipo in caso di modifica; renderebbe la richiesta di funzionalità più attuabile. Non ho fatto quel lavoro, anche se ho dedicato del tempo occasionale a pensare a casi specifici.