Nie lubimy spamu tak samo, jak użytkownicy naszych serwerów. Przywiązujemy dużą wagę do blokad i filtrów antyspamowych. Niechciane maile to stały element skrzynek pocztowych. Nasza ekipa administratorów pracuje nad tym, by takie wiadomości przedostawały się w znikomej liczbie. W ostatnich dniach zakończyliśmy wdrażanie nowego skryptu filtrującego o sporej skuteczności. Poniżej krótkie case study.
W nagłówkach wiadomości potencjalny czytelnik natykał się na treść:
X-PHP-Originating-Script: 1001 Option92.php(1483) : eval()’d code
U każdego programisty na widok funkcji eval() włącza się dzwonek alarmowy i popularna regułka o treści Eval is evil. Zła sława polecenia wiąże się z brakiem skutecznego zastosowania funkcji w PHP. Kompilatory zwyczajnie nie obsługują eval(). Dodatkową wadą jest poziom bezpieczeństwa kodu i związana z nim szybkość jego tworzenia. W encyklopedycznym znaczeniu eval() jest m.in. podstawą działania debug console, pozwalającej na lokalne testowanie fragmentów kodu PHP w krótkim czasie.
Treść maila była w polskim języku, jednak formatowanie całości już w głównej mierze z Rosji i USA. Wniosek nasuwał się jeden – automat do spamowania. Jego słabym punktem było ów nagłówek. Po odpowiednim przeszukaniu wiadomości z omawianym nagłówkiem, z łatwością dało się je wyciąć i utworzyć odpowiedni filtr. Poniżej jego treść:
header PHPMAILER_X_SCRIPT2 X-PHP-Originating-Script =~ /eval()/
describe PHPMAILER_X_SCRIPT2 Odnalezienie nagłówka
meta PHPMAILER_ALL2 (PHPMAILER_X_SCRIPT2)
describe PHPMAILER_ALL2 wszystkie polskie regexp
score PHPMAILER_ALL2 50
W pierwszych dwóch regułkach zawarto opcję wyszukiwania nagłówków z jednoczesnym sprawdzaniem zawartości o funkcję eval().
Następnie mamy opis. Po nim dwie reguły przypisujące do zmiennej. Znów opis. Na końcu dodanie punktacji, która ustala dopuszczalną wiadomość, ale oznaczoną już jako spam z przesunięciem do kosza i brakiem dalszej wysyłki. Przy 50-ciu punktach nowa zostanie wycięta nawet w przypadku, gdy będzie zawierać kilka poprawnych elementów. Punktacja sprawia, że im większa jej wartość, tym bardziej prawdopodobne, że chodzi o spam. Przy wartościach od 0 do 6 punktów pojawia się znacznik o prawdopodobnym spamie. Powyżej sześciu następuje już automatyczna wycinka (/dev/null).
Filtr działa już w naszym panelu. Na serwerach hostingowych pobrano i wklejono nowy plik do SpamAssassin, którego zadaniem jest finalne sprawdzanie wiadomości.
Doceniamy coraz lepsze techniki spamu – poprawny DKIM, domena, nawet użytkownik, który loguje się, by wysłać wiadomość z autoryzacją. Jednak wolimy nie spotykać się z tego typu „pracami” 😉
- Smarthost to dobre miejsce dla blogów turystycznych - 27 stycznia, 2021
- Warto dbać o używanie aktualnej wersji PHP. Jak należy ją poprawnie zmienić? - 8 stycznia, 2021
- Podatność wtyczki Contact-form-7 - 18 grudnia, 2020