...

Pedit COW: a Linux kernel hiba, amivel egy sima felhasználóból root lehet

2026 júniusának egyik legnagyobb biztonsági híre a "pedit COW" becenevű Linux kernel sebezhetőség, hivatalos nevén CVE-2026-46331.

A hiba lényege, hogy egy teljesen hétköznapi, nem privilegizált felhasználó a rendszeren root jogosultságot szerezhet – méghozzá anélkül, hogy egyetlen fájlt is módosítana a lemezen. A CVE kiosztása után alig egy nappal már működő, nyilvánosan elérhető exploit jelent meg, ezért a rendszergazdák világszerte kapkodva telepítik a javításokat.

Ha Linux szervereket, konténereket vagy megosztott hosting környezeteket üzemeltetsz, ez a cikk összefoglalja, amit a pedit COW-ról tudnod kell: mi ez pontosan, miért veszélyes, kiket érint, és hogyan védekezhetsz ellene most azonnal.

Mi az a pedit COW?

A pedit COW egy helyi jogosultság-kiterjesztési (local privilege escalation, LPE) sebezhetőség a Linux kernel forgalomszabályozó (traffic control, tc) alrendszerében. Konkrétan az act_pedit nevű komponensben rejtőzik, amely a hálózati csomagok fejléceinek valós idejű átírásáért felelős.

A név két technikai fogalomból áll össze:

  • "pedit" – a packet editing, azaz csomag-szerkesztés rövidítése: ez a tc azon művelete, amely a csomagadatokat módosítja, miközben azok áthaladnak a kernel forgalomszabályozó keretrendszerén.
  • "COW" – a copy-on-write (írás esetén másolás) rövidítése: ez az a memóriakezelési stratégia, amellyel a kernel elkerüli a felesleges adatmásolást. Több folyamat is megosztja ugyanazt a memórialapot mindaddig, amíg valamelyiknek módosítania nem kell rajta – ekkor készül csak el a saját, privát másolat.

A pedit COW pontosan ezt a második mechanizmust töri meg. A csomagszerkesztésért felelős kernelfüggvény, a tcf_pedit_act(), még azelőtt kiszámolja, mekkora memóriaterületet kell privatizálnia, mielőtt tudná a tényleges írási címeket. Bizonyos szerkesztési műveletek csak futás közben derítik ki a valódi célterületet, így az a memóriatartomány, amelyet a kernel "levédett", a valóságban túl kicsinek bizonyul. Az eredmény egy tartományon kívüli (out-of-bounds) írás, amely a privatizált másolaton kívülre, egyenesen a megosztott lapgyorsítótárba (page cache) kerül.

Mivel a lapgyorsítótár a memóriában valós fájlokat is reprezentálhat, ez az eltévedt írás egy törvényes fájl memóriabeli képét is megfertőzheti – akár egy setuid-root bináris állományét is, mint amilyen a /bin/su.

Hogyan működik az exploit?

A nyilvánosan elérhető proof-of-concept exploit egy már jól ismert mintát követ:

  1. A nem privilegizált felhasználó létrehoz egy user namespace-t (felhasználói névteret), amely ezen a névtéren belül megadja neki a CAP_NET_ADMIN képességet – ez elég ahhoz, hogy valódi root jog nélkül is beállítson tc forgalomszabályozási szabályokat.
  2. A támadó olyan pedit szabályokat konfigurál, amelyek kiváltják a hibás eltolás-számítást a tcf_pedit_act() függvényben.
  3. A tartományon kívüli írás célja egy setuid bináris – jellemzően a /bin/su – gyorsítótárazott, memóriabeli másolata, amelybe egy kis kártékony kódot injektál.
  4. A támadó lefuttatja a megfertőzött binárist, amely immár root jogosultsággal fut.

A teljes támadás a memóriában zajlik. A lemezen lévő fájl soha nem módosul, így a hagyományos fájlintegritás-ellenőrző eszközök nem veszik észre – miközben a támadónak már nyitva van egy root shellje, minden ellenőrző összeg (checksum) tisztának mutatkozik.

Miért aggódnak emiatt a biztonsági szakemberek?

Néhány tényező különösen aggasztóvá teszi a pedit COW-ot:

  • Nem egynapos (0-day), hanem N-day sebezhetőség. Az alapjául szolgáló javítást csendben, biztonsági felhajtás nélkül nyújtották be a kernel netdev levelezőlistájára, mint egy rutin adatsérülési javítást, CVE-azonosító és biztonsági kontextus nélkül. Ez azt jelenti, hogy a kihasználható technikai részlet hetekig nyilvánosan elérhető volt, mielőtt a legtöbb gyártó és sebezhetőség-vizsgáló rendszer felfigyelt volna rá.
  • Az exploit szinte azonnal fegyverkész lett. A CVE kiosztása után nagyjából egy nappal már megjelent egy működő, nyilvánosan elérhető proof-of-concept.
  • Nem hagy nyomot a lemezen. Mivel a sérülés kizárólag a RAM-ban él, a szokásos fájlintegritás-ellenőrzések vakok rá.
  • Ismerős mintát követ. A pedit COW egy egyre bővülő család tagja, amelybe olyan lapgyorsítótár-sérülési hibák tartoznak, mint a Dirty Pipe, a DirtyClone vagy a Dirty COW – ezekben mindig egy gyors kernel-útvonal ír bele egy olyan memórialapba, amelyet valójában nem birtokol kizárólagosan.

Kiket érint a hiba?

A pedit COW a Linux-ökoszisztéma jelentős részét érinti:

  • Érintett kernelverziók: Linux v5.18-tól v7.1-rc6-ig. A hibát egy konkrét kernel commit vezette be, és a v7.1-rc7-ben javították.
  • Érintett disztribúciók: RHEL 8, 9 és 10; Debian 13 ("trixie"); valamint az Ubuntu 18.04-től 26.04-ig terjedő kiadásai, a pontos kernelverziótól és beállításoktól függően.
  • Két feltételnek egyszerre kell teljesülnie ahhoz, hogy egy rendszer kihasználható legyen:
    1. Az act_pedit kernelmodul betölthető legyen (ez sok rendszeren alapértelmezetten, akár automatikus betöltéssel is igaz).
    2. Engedélyezve legyenek a nem privilegizált user namespace-ek – ez sok modern Ubuntu és Debian rendszeren alapértelmezett, míg a RHEL-en és leszármazottain gyakran korlátozott.

A legmagasabb kockázatnak a többfelhasználós rendszerek és konténer-hosztok vannak kitéve – megosztott szerverek, CI/CD futtatók, hosting platformok, Kubernetes node-ok –, tehát mindenhol, ahol nem megbízható kód már most is futhat nem privilegizált felhasználóként. Ezeken a rendszereken a pedit COW egy apró belépési pontból egyből teljes root kompromittálódást csinál.

Hogyan javítsuk és mérsékeljük a pedit COW kockázatát?

1. Kernel frissítése (elsődleges javítás)

A végleges megoldás egy olyan kernelverzióra való frissítés, amely tartalmazza a CVE-2026-46331 hivatalos javítását:

  • Ellenőrizd a jelenlegi kernelverziódat a uname -r paranccsal.
  • Hasonlítsd össze a disztribúciódhoz tartozó javított verzióval (ez a gyártó biztonsági közleményében található meg).
  • Telepítsd a kernelfrissítést a szokásos csomagkezelőddel, majd indítsd újra a rendszert, vagy alkalmazz élő (live) patchet, ha a környezeted ezt támogatja.

2. Ideiglenes mérséklés: az act_pedit modul letiltása

Ha nem használsz tc pedit szabályokat, megakadályozhatod a sebezhető modul betöltését:

 
bash
# Ellenőrizd, be van-e töltve a modul
lsmod | grep act_pedit

# Tiltsd le a betöltését
echo 'install act_pedit /bin/true' | sudo tee /etc/modprobe.d/disable-act_pedit.conf

# Ha már be van töltve, távolítsd el (vagy indíts újra)
sudo rmmod act_pedit

3. Ideiglenes mérséklés: nem privilegizált user namespace-ek letiltása

Ez megszünteti azt a képességet, amelyre az exploit épül:

 
bash
# Debian / Ubuntu
sudo sysctl -w kernel.unprivileged_userns_clone=0

# RHEL és leszármazottai
sudo sysctl -w user.max_user_namespaces=0

Figyelem: a nem privilegizált user namespace-ek letiltása elronthatja a rootless konténereket, egyes CI/CD sandboxokat, valamint a sandboxolt böngészőket. Éles bevezetés előtt alaposan teszteld a változtatást.

4. Ha gyanús a kompromittálódás

Mivel a sérülés a memóriában él, a megfertőzött lapgyorsítótár ürítésével eltávolítható:

 
bash
echo 3 | sudo tee /proc/sys/vm/drop_caches

Ez csak kármentés, nem helyreállítás – eltünteti a megfertőzött memóriabeli másolatot, de semmit sem tesz azzal a root shell-lel, amelyet a támadó esetleg már megnyitott. Ha okod van feltételezni, hogy egy rendszer kompromittálódott, kezeld úgy, és kövesd az incidenskezelési folyamatodat.

Észlelési tippek

A pedit COW-ra nincs megbízható, utólagos jel, hiszen semmit nem hagy a lemezen. Ennek ellenére érdemes figyelni a következőkre:

  • Az act_pedit modul váratlan betöltése olyan gépeken, amelyek normál esetben nem végeznek forgalomszabályozási csomag-szerkesztést.
  • Szokatlan tc parancshasználat olyan felhasználóktól vagy folyamatoktól, amelyek egyébként soha nem konfigurálnak hálózatot.
  • Nem privilegizált user namespace-ek létrehozása közvetlenül a su vagy sudo típusú setuid binárisok futtatása előtt.
  • Shell futtatás közvetlenül forgalomszabályozási tevékenység után, amikor erre nincs jogos üzleti indok.

Az auditctl segítségével figyelhető ez a tevékenység:

 
bash
auditctl -w /sbin/tc -p x -k tc_exec
auditctl -w /usr/sbin/tc -p x -k tc_exec

Pedit COW vs. Dirty Pipe, DirtyClone és Dirty COW

A pedit COW egy tágabb Linux kernel hibacsalád tagja, amelyben minden hiba ugyanazt az alapmintát követi: egy gyors kernel-útvonal beleír egy memórialapba, amelyet nem birtokol teljes egészében, és ezt a megosztott lapgyorsítótár szenvedi meg.

  • Dirty COW (2016) – az egyik legkorábbi és leghíresebb példa a copy-on-write mechanizmusban rejlő versenyhelyzetre (race condition).
  • Dirty Pipe (2022) – lehetővé tette írásvédett fájlok tartalmának felülírását egy pipe-buffer hiba kihasználásával.
  • DirtyClone (CVE-2026-43503) – nagyjából a pedit COW-val egy időben nyilvánosságra hozott hiba, amely az ESP/XFRM bemeneti útvonal skb-fragmens-átviteli segédfüggvényeiben található, de ugyanahhoz a lapgyorsítótár-sérüléshez vezet.

A belépési pont hibánként eltérő, de a hatás mindig ugyanaz: egy nem privilegizált helyi felhasználóból root lesz.

Gyakran ismételt kérdések

Távolról is kihasználható a pedit COW? Nem. Helyi hozzáférés szükséges hozzá – a támadónak már képesnek kell lennie arra, hogy nem privilegizált kódot futtasson a célgépen. A valódi veszély akkor jön létre, ha ezt egy másik sebezhetőséggel láncolják össze (webshell, kompromittált fiók vagy megosztott konténer), amely biztosítja ezt a kezdeti belépési pontot.

Az antivírus vagy a fájlintegritás-ellenőrzés kiszűri? Általában nem. A sérülés a RAM-ban lévő lapgyorsítótárban történik, nem a lemezen lévő fájlban, így a fájlintegritás-ellenőrző eszközök jellemzően tiszta eredményt jeleznek akkor is, ha a rendszer már kompromittálódott.

Mi a legfontosabb teendő? Frissítsd a kernelt. A mérséklő intézkedések (az act_pedit letiltása, a nem privilegizált user namespace-ek kikapcsolása) hasznos átmeneti megoldások, de csak a kernelfrissítés zárja le teljesen a sebezhetőséget.

Az asztali Linux-felhasználókat is érinti? Elméletileg igen, bár a kockázat lényegesen nagyobb a többfelhasználós rendszereken, a megosztott hostingon és a konténerplatformokon, ahol nem megbízható felhasználók vagy workloadok már most is nem privilegizált kódot futtatnak. Egy tipikus egyfelhasználós asztali gép támadási felülete jóval kisebb, de a frissítés ott is indokolt.

Összegzés

 

A pedit COW (CVE-2026-46331) jó példa arra, hogy egy "csak helyileg kihasználható" sebezhetőség ugyanolyan veszélyes lehet, mint egy távolról kihasználható – különösen a legtöbb szervezet által üzemeltetett többbérlős, konténerizált infrastruktúrán. A megoldás egyszerű: mihamarabb frissítsd a kernelt, és ha ez most nem lehetséges, használd áthidaló megoldásként a modul letiltását és a user namespace-ek korlátozását. Tekintve, hogy a nyilvánosságra hozatal után milyen gyorsan megjelent egy működő exploit, ezt inkább aznapi, mintsem a következő karbantartási ablakra halasztható feladatként érdemes kezelni.

Hozzászólások(0)