Mots regardés vers

J’ai eu au moins deux sites touchés par une vague de spam qui semble conçue pour empoisonner les LLM. La même attaque a également été signalée ici au moins une fois (Anyone else currently undergoing mass spam attack?). La meilleure solution est de configurer Discourse AI - Spam detection, que je recommande, mais c’est un peu gênant. Voici une solution temporaire que vous pouvez implémenter et qui ne prendra que quelques minutes.

Cela suppose que vous disposez d’un système d’exploitation de type Unix (par exemple, Linux ou Mac). Si vous utilisez Windows et que vous pouvez copier/coller dans un terminal, vous pouvez vous connecter en SSH à votre serveur Discourse et coller ceci.

Ce qu’il fait, c’est créer un ensemble de mots surveillés générés à partir d’une attaque récente que j’ai vue. Si vous êtes à l’aise avec nano ou un outil similaire, vous pouvez le modifier avant de l’exécuter. Sinon, vous pouvez exécuter ce script, puis supprimer les mots que vous n’aimez pas en un clic par mot.

Les mots bloqués peuvent être très ennuyeux car ils empêcheront les utilisateurs légitimes de créer des publications contenant ces mots. Regardez donc attentivement pour vous assurer qu’aucun de ces mots n’est susceptible d’apparaître dans des publications légitimes sur votre forum !

Entrez l’URL de votre site, votre clé API et votre nom d’utilisateur API dans les champs ci-dessous (ils ne seront que dans votre navigateur, mais vous pouvez simplement le copier tel quel et modifier le fichier si vous préférez), puis copiez/collez le bloc de code dans un terminal. Il créera upload_watched_words_full.sh et le rendra exécutable. Vous pourrez ensuite l’exécuter avec ./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="

# High-confidence block words
BLOCK_WORDS=(
  "customer service number"
  "contact number"
  "support number"
  "refund phone number"
  "toll free"
  "24/7 support"
  "helpline"
  "call us"
  "live representative"
  "technical support"
  "lufthansa"
  "royal caribbean"
  "coinbase"
  "robinhood"
  "reservation number"
  "booking number"
  "flight cancellation"
  "name change fee"
  "║"
  "⇆"
  "★"
  "®️"
  "™️"
)

# Medium-risk flag words
FLAG_WORDS=(
  "customer service"
  "customer support"
  "support team"
  "help desk"
  "hotline"
  "agent"
  "representative"
  "contact us"
  "phone support"
  "service center"
)

# Require-approval words
REQUIRE_APPROVAL_WORDS=(
  "urgent"
  "immediate action"
  "act now"
  "limited time"
  "exclusive offer"
  "approve this"
  "verify account"
)

# Function to send words in batch
add_words () {
  local ACTION="$1"
  shift
  local WORDS=("$@")

  # Build words[] parameters
  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 "Uploading ${ACTION} words..."
  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 "\nDone."
}

# Upload block words
add_words "block" "${BLOCK_WORDS[@]}"

# Upload flag words
add_words "flag" "${FLAG_WORDS[@]}"

# Upload require-approval words
add_words "require_approval" "${REQUIRE_APPROVAL_WORDS[@]}"
EOF

# Make the script executable
chmod +x upload_watched_words_full.sh

echo "Script 'upload_watched_words_full.sh' created and made executable."

8 « J'aime »

Mais Watched word Approval doesn't work if a user edits the reply ?

Eh bien, je n’y ai pas prêté attention. Mon espoir naïf est que les spammeurs ne sauront pas le faire. :person_shrugging:

1 « J'aime »

Les bots que nous avions il y a quelques années publiaient du charabia comme dhfhstyhjfhhr comme titre de sujet pour créer des fils de discussion et contourner le filtre de mots-clés, puis ils le modifiaient pour le vrai message de spam « meilleurs casinos en ligne ». :expressionless_face:

2 « J'aime »

C’est bizarre que la modification du message passe outre les mots surveillés.

Peut-être que ce lot de spammeurs ne pensera pas à le faire. Ou peut-être que cela n’aidera pas du tout. :person_shrugging:

1 « J'aime »

Merci Jay, excellent script, merci de l’avoir créé. Quelqu’un qui l’a utilisé a-t-il constaté qu’il fonctionnait - en termes de solution de contournement pour « modifier les publications » ? Les bots modifient-ils les publications ou se contentent-ils d’envoyer le texte directement ?

Je ne sais pas, mais si c’est un problème, vous pourriez modifier les paramètres pour que certains utilisateurs ne puissent pas modifier les publications (Groupes autorisés à modifier les publications), peut-être en exigeant le niveau TL2 et en ajustant les paramètres pour qu’il soit plus ou moins facile d’atteindre le niveau TL2.

Pour les utilisateurs réguliers, en particulier les nouveaux, ne pas pouvoir modifier une publication n’est probablement pas un gros problème, et ce n’est peut-être même pas quelque chose qu’ils attendent.

1 « J'aime »

Bon point. Je vais modifier cela pour que tl_0 ne puisse pas modifier les publications.

Examen d’une publication récente :

On dirait qu’elle était initialement du charabia, puis qu’elle a été modifiée en spam, ce qui aurait contourné les Mots surveillés, d’après ce que je comprends.

Étant donné que les modifications de publications, passant d’un charabia anodin à du spam, font partie du modus operandi des bots dans leurs efforts pour déjouer les filtres anti-spam, l’équipe de Discourse pense-t-elle que tl_0 ne devrait pas pouvoir modifier les publications par défaut ?

4 « J'aime »

Wow. Je suis surpris que la valeur par défaut inclue TL0.

Bon à savoir que ces spammeurs utilisent cette astuce.

Je pense que le module de spam IA l’aurait détecté.

2 « J'aime »

Oh, absolument. Cependant, bien que ce ne soit pas très cher, c’est un peu pénible de devoir configurer l’IA sur chaque Discourse pour repousser le spam. Beaucoup de mes forums n’en auraient pas besoin (ou ne le voudraient pas) pour les autres fonctionnalités d’IA de Discourse qui sont assez utiles.

1 « J'aime »

La solution ici n’est pas d’empêcher tl0 ou tout autre groupe de modifier des publications.
La solution consiste à faire en sorte que la modification d’une publication ne contourne aucune protection du site. Une publication modifiée pourrait (comme nous l’avons vu) contenir du spam, de la haine ou d’autres comportements indésirables. Si les publications modifiées contournent les mots surveillés et d’autres filtres, cela deviendra certainement une approche standard non seulement pour les bots, mais aussi pour les humains qui souhaitent contourner les protections du site.

3 « J'aime »

D’accord. Il semble bizarre que cela ne fonctionne pas ainsi. Et si je comprends bien, cela fait longtemps que ça ne fonctionne pas.

Oh, c’est le « comportement attendu » :

Je parie que c’est comme ça que c’est arrivé, peut-être.

Il semble que les mots surveillés pourraient simplement être appliqués avant la sauvegarde (before_save), mais je n’ai pas regardé le code.

2 « J'aime »

Il est question de ce que signifie que certains types de mots surveillés s’appliquent à une modification. Mais il est également clair que cette limitation réduit considérablement la valeur des mots surveillés.

Je m’attendrais à ce qu’il soit utile de proposer une spécification sur ce qui devrait exactement se passer pour chaque type en cas de modification ; cela rendrait la demande de fonctionnalité plus réalisable. Je n’ai pas fait ce travail, bien que j’aie passé du temps occasionnellement à réfléchir à des cas spécifiques.

3 « J'aime »