Linux 7.2 kernel: az openat2 új flagje megakadályozhatja a speciális fájlok véletlen megnyitását

A Linux 7.2 kernel VFS-fejlesztései közé bekerült az OPENAT2_REGULAR flag az openat2 rendszerhíváshoz. Ezzel a felhasználói térben futó programok megadhatják, hogy kizárólag normál fájlokat akarnak megnyitni, és nem szeretnének eszközfájlokkal, speciális fájlokkal vagy más nem hagyományos fájlrendszerbeli bejegyzésekkel dolgozni.

Linux 7.2 kernel: az openat2 új flagje megakadályozhatja a speciális fájlok véletlen megnyitását

A fejlesztés a biztonságot és a kiszámíthatóbb fájlkezelést szolgálja. Egy webböngészőnek, szövegszerkesztőnek vagy más általános alkalmazásnak általában nem kell eszközfájlokat megnyitnia, például a /dev/zero vagy a /dev/random bejegyzést. Ezek nem hagyományos fájlként viselkednek, hanem kernel által biztosított speciális adatforrások. Az OPENAT2_REGULAR jelzővel a program már a megnyitási műveletnél előírhatja, hogy kizárólag normál fájlt fogad el, így az eszközfájlok és más speciális fájltípusok megnyitása elutasítható.

Ha az openat2 hívás OPENAT2_REGULAR jelzőt kap, a kernel elutasítja minden nem normál fájl megnyitását, és EFTYPE hibával jelzi az elutasítást. Ez megakadályozza, hogy az alkalmazás véletlenül olyan fájltípussal dolgozzon, amelynek kezelésére nem készült fel, vagy hogy egy támadó eszközfájlon, pipeline-on, socketen vagy más speciális fájltípuson keresztül vezesse félre a program működését.

Ugyanez a VFS pull request az O_EMPTYPATH támogatást is hozzáadja az openat és openat2 hívásokhoz. Ez lehetővé teszi, hogy egy O_PATH fájlleíróból ténylegesen használható fájlleíró jöjjön létre, ami további fájlkezelési műveleteknél ad pontosabb kerneloldali eszközt a programoknak.