This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Antispam Expression bzw. Ausdruck Filter funktioniert nicht

Hallo Community,

ich habe ein Problem mit dem Ausdrucks-Filter in der Sophos Antispam. Kurz zur Umgebung:

Hardware: 2 SG210 im HA-Betrieb
Firmware: 9.709-3 (hier gibt es bereits 2 neuere Versionen, aber ich warte auf das Feedback vom Labor des RZ, bevor ich diese ausrolle)

Zur Verbesserung der Spam-Abwehr (so 1-2 Mails pro Woche rutschen noch durch) habe ich den Ausdrucksfilter von Antispam testweise aktiviert und mit dem Wort "Sex" und "Sexe" (französisch) gefüttert und getestet. Das hatte auch scheinbar problemlos funktioniert - hier meine Tests:

Nachdem ich bemerkt habe, dass es genügt das kürzere Wort einzugeben, habe ich "Sexe" wieder entfernt und erneut getestet (das ist die Mail von 12:14 im obigen Screen). Seit dem 22.05. steht also als einziger Ausdruck das Wort "Sex" in dem Ausdruckfilter (ohne Wildcards, Leerzeichen oder ähnlichem).

Problem 1: Alter Ausdruck "Sexe" taucht zufällig 2 Tage später wieder auf:

Wieso die Sophos 2 Tage nach meinen Tests noch den alten Ausdruck auspackt für einen Match ist mir ein Rätsel? Hat hier jemand eine Idee?

Problem 2: Leider gravierender - Große Menge an Mails werde als "false positive" nicht zugestellt

Das Problem habe ich heute morgen bemerkt - der Ausdrucksfilter hat > 20 Mails aussortiert mit der Begründung "expression" -> "sex". Ich habe leider keinen Screenshot erstellt, da ich erstmal die Zustellung dieser Mails angestoßen habe, aber in keiner der Mails war der Ausdruck in irgendeiner Form zu finden.

Aber hier ein Auszug aus dem Log von einer Mail, die wegen des Ausdrucks in Quarantäne gelandet ist:

2022:05:26-09:37:11 thor-1 exim-in[794]: 2022-05-26 09:37:11 SMTP connection from [209.85.221.42]:35400 (TCP/IP connection count = 4)
2022:05:26-09:37:11 thor-1 exim-in[9019]: 2022-05-26 09:37:11 [209.85.221.42] F=<eileennil89@gmail.com> R=<HIDDEN_TARGET_EMAIL> Verifying recipient address with callout
2022:05:26-09:37:12 thor-1 exim-in[9019]: 2022-05-26 09:37:12 1nu83T-0002LT-26 sasi reports probability: 0.104331, version: Antispam-Engine: 4.1.4, AntispamData: 2022.5.19.182717
2022:05:26-09:37:12 thor-1 exim-in[9019]: 2022-05-26 09:37:12 1nu83T-0002LT-26 Greylisting: 209.85.221.42 is a known retry host
2022:05:26-09:37:12 thor-1 exim-in[9019]: 2022-05-26 09:37:12 1nu83T-0002LT-26 <= eileennil89@gmail.com H=mail-wr1-f42.google.com [209.85.221.42]:35400 P=esmtps X=TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128 CV=no S=403268 DKIM=gmail.com id=628f2e26.1c69fb81.29f28.45fd@mx.google.com
2022:05:26-09:37:13 thor-1 smtpd[760]: QMGR[760]: 1nu83T-0002LT-26 moved to work queue
2022:05:26-09:37:13 thor-1 smtpd[9006]: SCANNER[9006]: 1nu83V-0002LG-Ln <= eileennil89@gmail.com R=1nu83T-0002LT-26 P=INPUT S=398400
2022:05:26-09:37:13 thor-1 smtpd[9006]: SCANNER[9006]: id="1001" severity="info" sys="SecureMail" sub="smtp" name="email quarantined" srcip="209.85.221.42" from="eileennil89@gmail.com" to="<HIDDEN_TARGET_EMAIL>" subject="Top-quality translations into Swedish" queueid="1nu83V-0002LG-Ln" size="398400" reason="exp" extra="Sex"
2022:05:26-09:37:13 thor-1 smtpd[9006]: SCANNER[9006]: 1nu83T-0002LT-26 => work R=SCANNER T=SCANNER
2022:05:26-09:37:13 thor-1 smtpd[9006]: SCANNER[9006]: 1nu83T-0002LT-26 Completed

und hier die Mail dazu:

Date:	Thu, 26 May 2022 00:37:10 -0700 (PDT)
From:	eileennil89@gmail.com
To:	<Hidden_Target_Email>
Subject	Top-quality translations into Swedish

Hi Dear,

I am Eileen Nilsson, English <> Swedish Freelance translator.

I provide the following services :

Translation

Proofreading

Subtitling

Transcription

I am a skilled translator in many areas: Economics, Geography, Education, Food & Drink, Mathematics, Statistics, Social Science, Management, Finance (general), Marketing / Market, Tourism & Travel.

My rates are 0.08 USD per word for translation,0.04 USD per word for proofreading.

I accept via PayPal.

Looking forward to your cooperation.

Regards,

Eileen

In keiner der Mails die fälschlicherweise aussortiert wurden konnte ich den Ausdruck "Sex" finden. Viele Mails waren auch einfache Lesebestätigungen und wurden aussortiert!

Ich habe den Ausdruck jetzt wieder entfernt und bin erstmal extrem verwirrt/enttäuscht, wie ein primitiver Ausdruck nach Anleitung von https://support.sophos.com/support/s/article/KB-000034484?language=en_US#basicsearch

zu solch einem Ergebnis führen kann!

Hat jemand ähnliche Erfahrungen gemacht bzw. gibt es eine Lösung für diese m.E. recht einfache Anforderung?

Ich freue mich auf euer Feedback
Grüße Thomas



This thread was automatically locked due to age.
Parents
  • Update:

    Ich habe testweise ein paar Mails heruntergeladen, um den kompletten Inhalt incl. Header zu analysieren und konnte z.B. in DKIM-Signaturen fündig werden:

    DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; s=mailing; d=newsletterversand.zeit.de;
    h=Date:From:Reply-To:To:Message-ID:Subject:MIME-Version:Content-Type:X-ulpe:
    List-Id:X-CSA-Complaints:List-Unsubscribe:List-Unsubscribe-Post:Feedback-ID;
    i=ZEIT-Brief@newsletsterversand.zeit.de;
    bh=z3psExyOVCcuOxOEPb0VSWbZG8IDPKe+ZNa+DaDk49w=;
    b=Sihjd2TEQcUmGDcbR1CCMEMMm55Um167Xfbqxow26tEbdwrEb66rRX/XDS5jtke+hw0Db7w+r4Ld
    goT/CHXQe90eZ3h0Db43N094ISdgj5E91OTRsJu30dcGpugLek4EJNF9Qa5aE2ipDLIqizVj2VjO
    DTsK0+nDDtZUL8o0kuc=

    Auch in Base64-encoded Inhalten hat er zugeschlagen. Das würde ein paar der Funde erklären.

    Bei einer weiteren Stichprobe habe ich auch den Ausdruck in einer URLs festgestellt:

    r.newsletter.chateaugrezan-famillecrospujol.com/.../KLKTRR8ccvjr=
    aI3VDCbKRyGIY-Rc0vsCFTuPkCg2TWykZsEXrDYUXOmLA4DxjF8ZzSbh1TKw5syK6lrKYlW52PxS=
    je7waztnySqw-EV3HaO33ghoB1jfUVGK597YToaBYbteKWHTucW_aSIs0-trd-ad7Bkvh2X4JmM=
    0lDubc0jcbt-_v88crWJ3VppbsiOfQS4IzJtHR75a7q2fU0OHIR94eA8BPZZ0DFFk84qqewPafx=
    wb1vBStbLf0_m_9Dm3rCwQ7W62xuvPHGHpE_z7E5CslxWWOeNVcIz35wNGq

    Wie arbeitet der Expression-Filter genau? Geht er über den kompletten Nachrichtenquelltext und sucht primitiv nach den angegebenen Expressions oder ist er intelligenter und untersucht nur den Nachrichteninhalt (ohne Header, Base64-encoded Bilder, URLs, etc.).

    Sofern er den kompletten Quelltext (und nicht wie im Admin-Panel angegeben) den Nachrichteninhalt untersucht, macht es den Filter für kurze Wörter (wie in meinem Falle "Sex") irgendwie unbrauchbar für einfache Ausdrücke - Nach nur 3 Tagen hat er über 20 korrekte Mails rausgefischt.

    Kann hier jemand "Licht ins Dunkel" bringen? Gibt es einen eleganten Weg, um den Ausdruck besser zu formulieren (z.B. \bSex) um das Verhalten zu verbessern?

    Freue mich auf euer Feedback.
    Grüße Thomas

  • Hallo Thomas,

    offensichtlich wird auch der Header geprüft.

    Wäre ja auch ungünstig, wenn der im Header befindliche Subject nicht einbezogen würde.

    Wenn der Body mit einem "Stichwort" beginnt, könnte u.U. "Stichwort.*sex" dafür sorgen, dass erst ab dem Stichwort gesucht wird ... müsste man testen.

    Sonst würde ich in den Suchstring das/die Leerzeichen einbeziehen. " sex "   bzw "\x20sex\x20"  (\x20 müsste ein Leerzeichen darstellen) 


    Dirk

    Systema Gesellschaft für angewandte Datentechnik mbH  // Sophos Platinum Partner
    Sophos Solution Partner since 2003
    If a post solves your question, click the 'Verify Answer' link at this post.

  • Hallo Dirk,

    danke für dein Feedback. 

    Wäre ja auch ungünstig, wenn der im Header befindliche Subject nicht einbezogen würde.

    ..beim Subject bin ich bei dir, aber der komplette Quelltext incl. Signaturen, Server-Header, etc. hätte ich jetzt nicht erwartet. Aber gut, scheint so zu sein, muss man im Konzept beachten.

    Wenn der Body mit einem "Stichwort" beginnt, könnte u.U. "Stichwort.*sex" dafür sorgen, dass erst ab dem Stichwort gesucht wird ... müsste man testen.

    Mit asterisk (*) hatte ich es noch nicht probiert, aber ich habe mir die regex nochmal durchgeschaut und denke die Lösung müsste sein, über Anchors zu arbeiten.

    "\bsex" müsste dann zumindest zur Lösung führen, dass der String "sex" in Signaturen, URLs, usw. nicht mehr matched.

    Das macht das ganze zwar etwas umständlicher, da ich gehofft hatte, damit auch "Bi-Sexual", "Homosexual", etc. zu erwischen, aber das scheint dann über einen einfachen Ausdruck nicht zu klappen.

    Ich gehe heute nochmal neu ins Rennen mit der folgenden Liste der Ausdrücke:

    \bsex
    \bbisex
    \bbi-sex
    \bhomosex
    \bhomo-sex

    Somit müsste der Ausdrucksfilter einen match haben, wenn die Ausdrücke am Wortanfang vorkommen (das müsste nach meinem Verständnis auch einen Satzanfang einbeziehen).

    Exemplarisch müsste "\bsex" nach meinem Verständnis die folgenden Beispiele beinhalten:

    Sex
    sex
    Sexe
    sexual content
    sexuelle Machenschaften

    Aber nicht:

    z3psExyO (wie aus dem DKIM oben) und
    ykZsEXrD (wie in der URL oben)

    Ich probiere das mal aus. Falls jemand eine bereits erarbeitete Liste von "bösen" Ausdrücken hat, nehme ich diese auch gerne als Vorlage Grin

    Grüße Thomas

  • Halt uns bitte über das Ergebnis auf dem Laufenden ...


    Dirk

    Systema Gesellschaft für angewandte Datentechnik mbH  // Sophos Platinum Partner
    Sophos Solution Partner since 2003
    If a post solves your question, click the 'Verify Answer' link at this post.

  • Hier mal ein erstes Ergebnis nach knapp 1 Tag.

    Die ersten beiden sind mein Test und die oberste ein wirklicher Spam, bei dem der Ausdruck geklappt hatte. Sieht auf den ersten Blick gut aus.

    Zum Vergleich - mit dem Ausdruck ohne \b hatte ich innerhalb von 2,5 Tagen bereits über 20 false-positives gehabt.

    Das einzige was mich an der Lösung noch stört ist, dass er immer alle Ausdrücke anwendet und dann mehrere matchen (siehe erste Mail von 11:14). Ich schaue mal, ob ich hier noch die Zeit finde, um den Ausdruck in einer großen regex zu formulieren. Das müsste ja relativ einfach klappen.

Reply
  • Hier mal ein erstes Ergebnis nach knapp 1 Tag.

    Die ersten beiden sind mein Test und die oberste ein wirklicher Spam, bei dem der Ausdruck geklappt hatte. Sieht auf den ersten Blick gut aus.

    Zum Vergleich - mit dem Ausdruck ohne \b hatte ich innerhalb von 2,5 Tagen bereits über 20 false-positives gehabt.

    Das einzige was mich an der Lösung noch stört ist, dass er immer alle Ausdrücke anwendet und dann mehrere matchen (siehe erste Mail von 11:14). Ich schaue mal, ob ich hier noch die Zeit finde, um den Ausdruck in einer großen regex zu formulieren. Das müsste ja relativ einfach klappen.

Children
  • Update: 

    1. Wurf für eine regex:

    \b(bi|homo|metro)?-?sex

    Laut regex-Tester passt das und hat einen match bei:

    SeX
    sexual
    bi-sexual
    homosexual
    metro-Sexual
    sexual content

    ..Diese regex werde ich am WE mal einspielen und intensiv testen. Wenn sie passt, werde ich das Pattern als Vorlage für weitere Ausdrücke verwenden.

  • Update:

    Nachdem ich jetzt knapp 2 Wochen mit diesen Ausdrücken im live-Betrieb das Verhalten beobachtet habe, muss ich sagen - ich schalte den Ausdrucksfilter wieder komplett ab.

    Das Verhalten, dass er den kompletten Header incl. der Base64-Inhalte der Mail vergleicht, hat das bei unserem Szenario zu vielen false-positives geführt, sodass wichtige Mails ebenfalls in Quarantäne gelandet sind und die Benutzer sich schon beschweren.

    Evtl. ist der Filter für längere Ausdrücke geeignet (die Wahrscheinlichkeit einen Treffer zu landen wird ja immer geringer, umso länger der Ausdruck ist), aber gerade im Falle von "Sex" klappt das leider nicht.

    So long..

  • kleiner Nachtrag:

    Ich habe heute die false-positives nochmals angeschaut und habe festgestellt, dass das Problem in den regulären Ausdrücken zu finden ist. Hier scheint die UTM die Ausdrücke nicht korrekt auszuwerten. Der Ausdruck:

    \bsex

    schlägt leider auch zu, wenn das Wort "sex" nicht am Wortanfang steht. Alle Stichproben von heute der false-positives hatten den String "sex" lediglich in base64-Objekten und NICHT am Wortanfang wie in der Doku beschrieben.

    Konnte jemand ein ähnliches Verhalten feststellen? Ist das ein Bug in der aktuellen Firmware?

    Naja, falls jemand trotzdem nochmal einen Versuch starten möchte, dann kann er mit diesem Ausdruck (Zusammenfassung von oben) ins Rennen gehen:

    \b(bi|homo|metro)?-?sex

    Freue mich auf Feedback, falls jemand die Zeit/Lust hat, den Ausdrucksfilter zu testen.