Skip to Content

LW Scan

Könnyűsúlyú malware-vizsgáló WordPresshez: fájlok, adatbázis és sebezhető szoftverek. Csak jelent, soha nem módosítja az oldalad.

Áttekintés

WordPress szükséges6.6+
PHP szükséges8.0+
Tesztelve7.1
LicencGPL-2.0-or-later
GitHublwplugins/lw-scan 

Gyors kezdés

  1. Telepítsd és aktiváld a bővítményt
  2. Nyisd meg a LW Plugins > Vizsgálat oldalt, és nyomd meg a Vizsgálat indítása gombot
  3. Az első vizsgálat letölti az aláírás-csomagot és felépíti a fájlindexet, ezért tovább tart, mint a későbbiek
  4. Nézd át a találatokat; nyugtázhatod, figyelmen kívül hagyhatod vagy újranyithatod őket

Telepítés

Composerrel

bash
composer require lwplugins/lw-scan

Kézi telepítés

  1. Töltsd le a kiadási ZIP-et a GitHub Releases  oldalról
  2. Telepítsd a Bővítmények > Új hozzáadása > Bővítmény feltöltése menüben, vagy töltsd fel az lw-scan mappát a /wp-content/plugins/ könyvtárba
  3. Aktiváld a Bővítmények menüben

A kiadási ZIP az autoloaderrel együtt érkezik; a repó klónjához futtatni kell a composer install parancsot, mielőtt működne.

Eltávolítás

A bővítmény törlése eltávolítja a beállításokat, a futásállapotot, a három vizsgálati táblát és a wp-content/lw-scan mappát az aláírás-csomaggal és a gyorsítótáraival együtt. A takarítás arra az oldalra vonatkozik, amelyen fut, ezért hálózati telepítésnél oldalankénti opciók megmaradhatnak.

Mit vizsgál

  • Fájlok: a WordPress gyökerében lévő minden fájlt összevet az aláírás-csomaggal (hash réteg az ismert rossz fájlokhoz, literál réteg és regex réteg). A tartalomtípust a fájl maga adja, nem a kiterjesztése, így a logo.png nevű shell is PHP-ként kerül vizsgálatra.
  • PHP heurisztika (opcionális): token-alapú réteg, amely felismeri az obfuszkációt, a dinamikus kódfuttatást és az álcázott feltöltőket, amelyeket még egy aláírás sem ismer. A heurisztikus találat suspicious, és csak akkor lesz riasztás, ha az útvonal is azt indokolja (futtatható fájl az uploads alatt, képnek álcázott PHP-fájl). Minden találat megmondja, miért lőtt.
  • Integritás: a core, a bővítmények és a témák a hivatalos wordpress.org ellenőrzőösszegekkel kerülnek összevetésre. A módosítatlan fájlok ismerten jók, és kihagyják a költséges rétegeket, ettől gyors a vizsgálat, és ettől maradnak ki a core fájlok a találati listából.
  • Adatbázis: opciók, bejegyzések, bejegyzés-meta, felhasználó-meta, felhasználók és adatbázis-triggerek.
  • Sebezhető szoftverek: a telepített bővítmények, témák és maga a WordPress-verzió egy sebezhetőségi adatforrással összevetve, az érintett verziótartományok helyes feloldásával.

A találatok jelentések, nem műveletek: az LW Scan nem szerkeszt, nem karanténoz és nem töröl fájlt vagy adatbázissort. Csak a saját három táblájába és a saját mappájába, a wp-content/lw-scan könyvtárba ír.

Ütemezés

A vizsgálatok WP-Cronon futnak, óránként, naponta vagy hetente, az általad választott órában (alapértelmezés: naponta 03:00).

  • Utolérés: ha az oldalad cronja soha nem fut le, az esedékesség utáni első rendes oldalbetöltés maga ütemezi be a futást.
  • Tickek: a vizsgálat olyan tickekben halad, amelyek belül maradnak a kérés időkeretén. Leállítható az adminból vagy a terminálból, és onnan folytatható, ahol abbamaradt. Ha a PHP-ból kifogy a memória egy tick közben, a futás sikertelen vizsgálatként jelenik meg, megnevezve az elért memory_limit értéket.

Hatókörök: changed (az alapértelmezett, csak ami az utolsó vizsgálat óta változott), full, db (csak az adatbázis) és path (egyetlen könyvtár).

Értesítések

A LW Plugins > Vizsgálat > Értesítések oldalon állíthatod be.

BeállításMit csinál
E-mail küldéseKikapcsolva, Csak új riasztások vagy Új riasztások + átnézendő elemek. A Kikapcsolva azt jelenti, hogy egyáltalán nem megy vizsgálati e-mail, az ismétlődően elbukó ütemezett vizsgálatok figyelmeztetését is beleértve. Az új telepítések Kikapcsolva állapotban indulnak.
CímzettekVesszővel elválasztva. Üresen az oldal admin címére megy.
Maximális elemek száma e-mailenként10, 20 (az alapértelmezett), 50 vagy Összes.
Admin értesítésA tartós értesítés, amely addig látszik, amíg új riasztások vannak. Független az e-mail kapcsolótól.
Teszt e-mail küldéseElküld egy levelet a mentett címzetteknek, és jelzi, hogy a WordPress elfogadta-e.

Az első vizsgálat alapállapot. Az első befejezett vizsgálat rögzíti a találatait, de nem küld semmit, mert egy már régóta működő oldalon mindent jelent, ami eleve ott van. Minden azt követő futás azt küldi el, ami új.

Állapot-végpont

Csak olvasható állapot-végpont külső monitorozáshoz, alapból bekapcsolva. Az URL-je a LW Plugins > Vizsgálat > Állapot oldalon van:

text
GET /wp-json/lw-scan/v1/status/<key>

Az útvonalban lévő kulcs az egyetlen hitelesítő adat, ezért az URL-t kezeld titokként. Hibás kulcsra a WordPress core saját 404 rest_no_route válasza jön, és amíg a végpont ki van kapcsolva, az útvonal nem létezik.

LekérdezésHatás
?http_status=1200 helyett 503-mal válaszol, amíg az overall értéke crit
?fresh=1most futtatja le az ellenőrzést a tárolt eredmény újrahasználata helyett

A kiszámolt eredményt alapból 5 percig használja újra (1 és 60 perc között, az Állapot fülön állítható). A válasz tartalmazza az oldal URL-jét, a WordPress, PHP és LW Scan verziót, valamint az lw_scan ellenőrzést, amelynek állapota ok, warn, crit vagy unknown. Fájlrendszer-útvonalat soha nem tartalmaz. Az Új URL generálása kicseréli a kulcsot; a régi URL azonnal megszűnik működni.

Ha egy bővítmény a REST API-t bejelentkezett felhasználókra korlátozza (például az LW Disable REST API korlátozása bejelentkezett felhasználókra opciója), a végpont 401-gyel válaszol a monitornak.

WP-CLI

bash
wp lw-scan run [<dir>] [--scope=<full|changed|db|path>] [--[no-]heuristics] [--resume] wp lw-scan status wp lw-scan findings [--severity=<alert|review>] [--type=<file|integrity|db|vulnerability>] [--state=<new|acknowledged|ignored>] wp lw-scan ack <id>... wp lw-scan ignore <id>... wp lw-scan reopen <id>... wp lw-scan bundle <status|update|force-full> wp lw-scan index <rebuild|stats> wp lw-scan stop wp lw-scan endpoint <url|enable|disable|rotate|ttl|status> wp lw-scan notify <status|enable|disable|level|recipients|limit|test>

A run az egész folyamatot egyetlen előtér-folyamatban futtatja, a kilépési kódját pedig egy cron-feladat vagy CI-pipeline olvassa:

Kilépési kódJelentés
0a futás befejeződött, és nem talált riasztó eredményt
1a futás befejeződött legalább egy új, riasztás szintű találattal
2a vizsgálat nem tudott elindulni, vagy nem élte túl
bash
wp lw-scan run --scope=full wp lw-scan run --scope=path wp-content/uploads wp lw-scan findings --severity=alert --state=new

Abilities

Ha a WordPress Abilities API elérhető, négy ability regisztrálódik az lw-scan kategóriában, mindegyik manage_options jogosultság-ellenőrzés mögött: lw-scan/run, lw-scan/status, lw-scan/findings és lw-scan/acknowledge. Így az LW Site Manager MCP-szervere, vagy bármely más Abilities-kliens vezérelheti a vizsgálót.

Adatvédelem

Az LW Scan csak csomag-azonosítókat (slug) küld, az ellenőrzőösszegekhez verziót is. Nincs fájltartalom, hash, útvonal vagy oldal-URL. A kérések a scan-data.lwplugins.com címre mennek, amelyet az LW Plugins üzemeltet, az aláírás-csomagért, a wordpress.org ellenőrzőösszegekért és a sebezhetőségi rekordokért. Minden kérés viszi a User-Agent: lw-scan/<plugin version>; WordPress/<wp version> fejlécet. Nincs telemetria, nincs fiók, és nincs oldalazonosító.

Kérések aktiváláskor mennek, vizsgálat közben, illetve amikor az Állapotfelmérés fülön a Frissítések ellenőrzése vagy a Teljes csomag újraletöltése gombot nyomod meg.

GYIK

Eltávolítja vagy kijavítja, amit talál?

Nem. Az LW Scan jelent, és ott megáll. Hogy mit kezdesz egy fertőzött fájllal, azt te döntöd el.

Lassítja az oldalamat?

A vizsgálatok a háttérben futnak, olyan tickekben, amelyek belül maradnak a kérés időkeretén, az alapértelmezett hatókör pedig csak az utolsó vizsgálat óta változott fájlokat nézi. Rendes oldalbetöltésnél a bővítmény csak a WordPress által már betöltött opciókat olvassa, és saját adatbázis-lekérdezést nem futtat.

Működik multisite-on?

A bővítmény multisite-on aktiválható és vizsgálja a fájlokat, de az adatbázis-vizsgálat arra az oldalra vonatkozik, amelyen a kérés fut; az aloldalakat nem járja végig.