최근 스팸 물결 차단

며칠째 대량의 스팸 공격을 받고 있습니다. https://ask.learncbse.in/ 같은 다른 사이트들은 일단 포기한 상태인 것 같습니다 :thinking:

여기서 찾고 있는 변형은 단 하나입니다:

콘텐츠가 자주 바뀌고 이메일 주소와 IP 주소도 계속 변하기 때문에 차단해도 스팸 양은 줄지만, 아직 근본적인 해결책을 찾지 못했습니다. 프라이버시 문제로 인해 모든 데이터를 Akismet에 전송하고 싶지 않습니다.

아래 네트워크들을 차단하면 해결될 것 같지만, 이는 인도 인구의 상당 부분(또는 일부)을 차단하는 결과가 될 수 있습니다.

AS55836: Reliance Jio Infocomm Limited
AS9498: Bharti Airtel Ltd.
AS45609: Bharti Airtel Ltd.
AS24560: Bharti Airtel Ltd.

특정 단어를 관리자 → 커스터마이즈 → 감시 단어 → 승인 필요에 추가해 보셨나요?

스크린샷을 보면, 다음 단어들을 추가해 보시는 것을 추천합니다:

  • cash
  • credit
  • money
  • loan
  • toll-free
  • customer care
  • care number
  • 0779*
  • helpline
  • :point_left:

사용자에게는 다소 번거로울 수 있지만, 저는 Discourse가 Firebase 클라우드 함수(무료)로 웹훅을 보내도록 설정해 두었습니다. 이 함수가 제 휴대폰으로 Slack 채팅방에 알림을 보내주므로, 깨어 있는 상태라면 보통 60초 이내에 휴대폰에서 승인 대기 중인 게시물을 승인할 수 있습니다.

힌트 주셔서 감사합니다. 하지만 https://ask.learncbse.in/ (제 인스턴스가 아니지만 제가 맞서 싸우고 있는 스팸 게시글들과 거의 유사합니다)을 확인해 보시고, 지난 며칠간의 게시글을 스크롤해 보세요. 그들은 각 키워드의 수많은 조합과 변형을 사용하고 있습니다. 저는 각 키워드에 대해 수많은 정규식(regex)을 만드는 작업을 진행 중인데, 그들은 어디에나 “.”, “,”, "|"를 추가하고, "0"을 "O"로, "e"를 "3"으로 대체하거나, 단어 중간에 (지금까지 확인된 바로는) 랜덤한 문자를 삽입하는 등 온갖 수법을 쓰고 있기 때문입니다. 이런 유형의 스팸에 맞서 싸우는 것은 정말로 어렵습니다.

혹시 랜덤한 링크를 클릭하고 싶지 않으시면, 지난 몇 시간 동안의 스크린샷을 첨부합니다. 하지만 이는 단지 지난 몇 시간 동안의 내용일 뿐이며, 시간대에 따라 스팸의 형태가 많이 변합니다:

확인 차 여쭤보는데, min first post typing time 관리자 설정을 사용하시나요? 저희가 실수한 부분을 많이 잡아내는 데 꽤 유용하다고 느껴서요.

네, 힌트 감사합니다. 이미 설정해 두었지만, 봇이 몇 분만 기다리는 건 그렇게 어려운 일이 아니라고요 :slight_smile:

이 스팸은 다른 주제에서 다루는 AI 기반 답변/콘텐츠와 유형이 다른 것 같아서 따로 분리했습니다. :+1:

최근 스팸 탐지를 위한 새로운 AI 기반 도구를 도입했는데, 상당히 효과적인 것으로 입증되었습니다:

팁은 감사하지만, 스팸을 하는 다른 LLM과 우리 디스커스를 두고 싸우기 위해 LLM을 설정하는 것은 우리 용도에는 너무 비쌉니다.

스패머라면 더 많은 사용자/게시물을 생성하기만 하면 조직의 비용을 쉽게 올릴 수 있으므로, 어떤 것을 달성하고 싶은지에 따라 더 많은 게시물을 생성하는 동기가 될 수도 있습니다 :slight_smile:

안녕하세요,

Akismet을 사용해 보셨나요? 그 솔루션이 사용자에게 적합할 것 같습니다.

(개인 사용은 무료, 상업적 사용은 불가 - 본인의 사용 목적을 어떻게 분류해야 할지 모르겠네요)

여기서는 모든 사용자의 첫 게시글을 승인하도록 요구하는 것이 조금이라도 도움이 될까요? 그렇게 하면 적어도 게시글이 공개적으로 포럼에 올라가는 일은 없을 테고, 매일 실제 사용자가 대량으로 가입하지 않는 한 최소한 일부는 도움이 될 것이라고 생각합니다.

팁들 감사합니다.

그것도 생각해 봤지만, 저희는 프라이버시 및 보안 제품이라 사용자를 최대한 보호해야 합니다. 콘텐츠는 공개적이지만, 제가 https://meta.discourse.org/t/discourse-akismet/109337을 올바르게 이해했다면 IP 주소/에이전트/리퍼러/이메일은 공개되지 않습니다. 이 정보는 Akismet로 전송되므로(사실상 개인정보 처리방침을 읽어볼 수도 있지만, 이미 개요만으로도 결정에 충분한 정보입니다).

좋은 아이디어네요. 하루에 약 2명의 가입자만 있으니 큰 부담은 되지 않을 것 같지만, 승인을 기다리는 것은 최고의 경험은 아닙니다. 하지만 잘 설명해 준다면 현재로서는 최선의 선택일 수 있습니다.

네, 불행히도 맞습니다. Akismet으로 개인정보 보호 정책과 일치하지 않을 수 있는 추가 데이터를 전송합니다. 그런 경우, @Firepup650님의 제안이 가장 좋은 방법입니다.

참고로, 제 Geo Blocking plugin 플러그인은 소스 AS 네트워크를 기반으로 Discourse 접근을 거부할 수 있습니다. 실제로 이러한 유형의 스팸의 상당 부분이 해당 네트워크, 특히 AS45609에서 유래하는 것으로 보입니다.

인도의 절반을 차단하고 싶지 않다면, 해당 플러그인의 일부 기능을 재사용하여 승인 로직에 네트워크 또는 IP 기반 규칙(예: “해당 네트워크에서 온 새 게시글에 대해 승인 요구”)을 추가하는 것이 얼마나 어려운지 조사해 볼 가치가 있을 것입니다.

해당 예시 사이트에서 여러 페이지를 탐색해 보았는데, Discourse의 정규 표현식이 유니코드 범위를 지원할 수 있다면, 감시 단어(watched words) 기능을 통해 거의 모든 사례를 차단할 수 있을 것 같습니다.

일반 사용자는 다음과 같은 요소를 거의 사용하지 않습니다:

  • 연속된 슬래시 2개 이상
  • 특수한 구두점, 예: ^ (수학 사이트가 아닌 한)
  • 드문 유니코드 범위:
    • ✓ (기타 기호)
    • ∆ (그리스어 및 코プト어)
    • ❽, ➁, ❸, 3, ❷ (뎅뱃(Dingbats))
    • 𝘾, 𝙪, 𝙨, 𝙩 (수학용 알파벳 및 숫자 기호)

Discourse가 이를 지원한다면 ChatGPT가 이러한 요소들을 위한 정규 표현식을 작성할 수 있을 것입니다.

또 다른 아이디어는 Bot Fight Mode 기능 (무료)을 갖춘 Cloudflare를 사용해 모든 봇에 대한 챌린지를 시도해 보는 것입니다.

오, 그거 완벽한 해결책이겠네요. 코드를 살펴보고겠습니다. 감사합니다!

여기서 문제는 이 봇이 Discourse가 어떻게 작동하는지를 어떻게 알고 있다는 점입니다. 다음 시나리오를 보겠습니다. ‘승인 필요’ 섹션에서 ❽를 감시하고 있습니다. 문제는 이러한 봇들이 먼저 랜덤한 텍스트를 생성한 다음 실제 내용으로 수정한다는 것입니다. 게시글 수정은 ‘승인 필요’ 목록과 대조되어 검사되지 않습니다. 예를 들어

VS

(여기서는 게시글 생성 시 ❽를 직접 추가했습니다)

즉, 유일한 선택지는 이를 차단 섹션에 추가하는 것입니다. 하지만 너무 많은 단어와 문자를 차단하면 정상적인 사용자가 유효한 게시글을 작성할 때 혼란스러운 메시지를 받게 되는 문제가 쉽게 발생할 수 있습니다. 대부분의 문제가 여기서 비롯된다고 생각합니다. 제 생각에는 이것이 버그이며, 게시글을 수정할 때도 변경 사항이 게시될 때 수정된 내용이 ‘승인 필요’ 목록과 대조되어 검사되어야 합니다.

그렇다면 감시 단어는 도움이 되지 않을 것 같습니다. 아직 그런 스팸 공격을 받은 적은 없지만, 사용자들이 이를 파악하기 시작했기 때문에 우려하고 있습니다.

내 포럼 중 하나가 같은 유형의 스팸 공격을 받은 것 같습니다. 감시 단어 목록에 스팸 단어가 아직 없었기 때문에 편집 트릭을 사용했는지 알 수 없어요.

모두 안녕하세요 :waving_hand:

이 기능의 개념 증명(PoC)을 만들었습니다. 관심 있으시면 한번 확인해 보세요.

잘하셨어요 @juanjosegzl! 이걸 PR로 기꺼이 받아들이겠습니다! :rocket:

감사합니다 @RGJ. 방금 PR을 열었습니다.

안녕하세요 @juanjosegzl,

최근 PR으로 인해 플러그인이 깨졌습니다. 이제 모든 사용자의 게시물이地理位置에 관계없이(모더레이터 포함) 모더레이션 확인을 요구합니다. 우회 방법이나 수정 예정일이 있을까요?