Czy luka CVE-2018-6389 wróciła do WordPress? Łączenie skryptów metodą na atak DoS.

Obrazek dla Czy luka CVE-2018-6389 wróciła do WordPress? Łączenie skryptów metodą na atak DoS.

W 2018 za czasów WordPressa 4.9.2 rozpoznano lukę w WordPress oznaczoną CVE-2018-6389. W skrócie, polegała ona na tym że nieautoryzowany użytkownik (czyli każdy) mógł wywołać funkcje load[] WordPressa i zmusić serwer do każdorazowego łączenia skryptów. Nie byłoby w tym nic dziwnego, dopóki atakująca osoba nie wykorzysta tego jako metodę DoS ( Denial of Service ). Dzięki wielokrotnym zapytaniom może obciążyć serwer, co było zmartwieniem wielu osób. Powstał na to exploity, dlatego WordPress został załatany. Jednak mamy 2023 rok, WordPress 6.3 i temat powrócił.

Co to jest CVE-2018-6389?

W przypadku tego konkretnego CVE ( Common Vulnerabilities and Exposures ) oznaczonego jako CVE-2018-6389 problem polegał na tym, że złośliwy użytkownik mógł wielokrotnie wywoływać zasoby JavaScript i CSS w taki sposób, że każde zapytanie do serwera generowałoby nowe żądanie, a serwer nie byłby w stanie efektywnie obsłużyć dużej ilości takich zapytań jednocześnie. To z kolei mogło doprowadzić do przeciążenia serwera, opóźnień w odpowiedziach lub nawet całkowitego zablokowania witryny, co stanowi typowy scenariusz ataku DoS.

W przypadku ataku DoS poprzez tę podatność, napastnik mógłby celowo spowodować nadmierne obciążenie serwera poprzez wielokrotne żądania zasobów, co doprowadzałoby do wykorzystania dużej ilości zasobów serwerowych i powodowało problemy z dostępem do strony dla prawidłowych użytkowników.

Test podatności CVE-2018-6389.

Spreparuj poniższy URL, podmieniając MOJADOMENA na Twoją domenę. Wklej do paska adresu przeglądarki i uruchom.

MOJADOMENA/wp-admin/load-scripts.php?load=eutil,common,wp-a11y,sack,quicktag,colorpicker,editor,wp-fullscreen-stu,wp-ajax-response,wp-api-request,wp-pointer,autosave,heartbeat,wp-auth-check,wp-lists,prototype,scriptaculous-root,scriptaculous-builder,scriptaculous-dragdrop,scriptaculous-effects,scriptaculous-slider,scriptaculous-sound,scriptaculous-controls,scriptaculous,cropper,jquery,jquery-core,jquery-migrate,jquery-ui-core,jquery-effects-core,jquery-effects-blind,jquery-effects-bounce,jquery-effects-clip,jquery-effects-drop,jquery-effects-explode,jquery-effects-fade,jquery-effects-fold,jquery-effects-highlight,jquery-effects-puff,jquery-effects-pulsate,jquery-effects-scale,jquery-effects-shake,jquery-effects-size,jquery-effects-slide,jquery-effects-transfer,jquery-ui-accordion,jquery-ui-autocomplete,jquery-ui-button,jquery-ui-datepicker,jquery-ui-dialog,jquery-ui-draggable,jquery-ui-droppable,jquery-ui-menu,jquery-ui-mouse,jquery-ui-position,jquery-ui-progressbar,jquery-ui-resizable,jquery-ui-selectable,jquery-ui-selectmenu,jquery-ui-slider,jquery-ui-sortable,jquery-ui-spinner,jquery-ui-tabs,jquery-ui-tooltip,jquery-ui-widget,jquery-form,jquery-color,schedule,jquery-query,jquery-serialize-object,jquery-hotkeys,jquery-table-hotkeys,jquery-touch-punch,suggest,imagesloaded,masonry,jquery-masonry,thickbox,jcrop,swfobject,moxiejs,plupload,plupload-handlers,wp-plupload,swfupload,swfupload-all,swfupload-handlers,comment-repl,json2,underscore,backbone,wp-util,wp-sanitize,wp-backbone,revisions,imgareaselect,mediaelement,mediaelement-core,mediaelement-migrat,mediaelement-vimeo,wp-mediaelement,wp-codemirror,csslint,jshint,esprima,jsonlint,htmlhint,htmlhint-kses,code-editor,wp-theme-plugin-editor,wp-playlist,zxcvbn-async,password-strength-meter,user-profile,language-chooser,user-suggest,admin-ba,wplink,wpdialogs,word-coun,media-upload,hoverIntent,customize-base,customize-loader,customize-preview,customize-models,customize-views,customize-controls,customize-selective-refresh,customize-widgets,customize-preview-widgets,customize-nav-menus,customize-preview-nav-menus,wp-custom-header,accordion,shortcode,media-models,wp-embe,media-views,media-editor,media-audiovideo,mce-view,wp-api,admin-tags,admin-comments,xfn,postbox,tags-box,tags-suggest,post,editor-expand,link,comment,admin-gallery,admin-widgets,media-widgets,media-audio-widget,media-image-widget,media-gallery-widget,media-video-widget,text-widgets,custom-html-widgets,theme,inline-edit-post,inline-edit-tax,plugin-install,updates,farbtastic,iris,wp-color-picker,dashboard,list-revision,media-grid,media,image-edit,set-post-thumbnail,nav-menu,custom-header,custom-background,media-gallery,svg-painter

Jeśli Twoja witryna WordPress zwróci połączony kod JS – jest narażona.

CVE-2018-6389
Jeśli Twój WordPress zwraca coś takiego – jest narażony na podatność.

Jak się zabezpieczyć przed CVE-2018-6389.

W sieci można odnaleźć porady, iż w teorii miało pomóc dodanie do pliku konfiguracyjnego wp-config.php następującej dyrektywy:

define('CONCATENATE_SCRIPTS', false);

Ale wydaje się, że dzięki temu, WordPress przestaje łączyć skrypty – ale tylko w back-endzie czyli w Kokpicie. Dlatego na tę chwilę jedynym rozwiązaniem jest dodanie dyrektywy blokady do pliku .htaccess

<FilesMatch "load-scripts\.php|load-styles\.php">
  Order allow,deny
  Deny from all
</FilesMatch>

Wartość dodaj zaraz przed domyślnym blokiem WordPressa.

CVE-2018-6389 fix
Edycja pliku .htaccess, dodanie blokady.

Plik .htaccess odnajdź w głównym katalogu swojego WordPress. W celu edycji pliku możesz użyć edytora plików w panelu hostingu.

Wklej ponownie spreparowany adres URL. Tym razem WordPress powinien zwrócić błąd 403.

blokada plików 403
Błąd 403 – zablokowany zasób.

Przetestuj poprawność witryny WordPress.

Ważne! Chociaż ten kod może pomóc w zabezpieczeniu witryny przed CVE-2018-6389, istnieje ryzyko, że może on również wpłynąć na działanie witryny, ponieważ uniemożliwi ładowanie skryptów i stylów w ten sposób. Przetestuj wygląd i działanie strony pod kątem błędów renderowania, braku stylizacji, niedziałających interakcji na stronie i innych problemów. Jeśli napotkasz na problemy, cofnij wprowadzone zmiany, coż – pozostaje Ci czekać na oficjalną kategoryczne załatanie problemu przez sam WordPress.

Przegląd prywatności
hitme logo

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.

Ściśle niezbędne ciasteczka

Niezbędne ciasteczka powinny być zawsze włączone, abyśmy mogli zapisać twoje preferencje dotyczące ustawień ciasteczek.

Facebook Pixel

Używamy narzędzia Facebook Pixel, aby śledzić działania użytkowników na naszej stronie internetowej. Facebook Pixel umożliwia nam analizowanie skuteczności reklam oraz tworzenie spersonalizowanych treści marketingowych. Dzięki temu możemy lepiej dostosować naszą ofertę do Twoich potrzeb. Zbierane dane mogą obejmować m.in. informacje o odwiedzonych stronach, kliknięciach oraz konwersjach.

Bezpieczna analityka

W celu lepszej analizy ruchu na naszej stronie internetowej korzystamy z narzędzia Matomo Analytics. Matomo jest hostowane w naszej infrastrukturze, a zbierane dane nie są udostępniane żadnym podmiotom zewnętrznym. Informacje o Twojej aktywności na stronie służą jedynie do analizy statystycznej oraz poprawy jakości naszych usług, zgodnie z przepisami RODO/GDPR.

Dane są w pełni anonimowe i nie są przekazywane poza naszą firmę.