Megosztás a következőn keresztül:


Biztonsági szempontok: Microsoft Windows Shell

Ez a témakör a Windows Shellhez kapcsolódó biztonsági szempontokról nyújt tájékoztatást. Ez a dokumentum nem tud minden szükséges információt megadni a biztonsági problémákról, ehelyett használja kiindulási pontként és hivatkozásként ehhez az adott technológiai területhez.

A Rendszerhéj a rendszer számos fontos aspektusát vezérli, köztük több olyant is, amely potenciális biztonsági kockázatot jelent, ha nem megfelelően kezeli őket. Ez a témakör néhány gyakori problémát ismertet, és ismerteti, hogyan oldhatja meg őket az alkalmazásokban. Ne feledje, hogy a biztonság nem korlátozódik az internetes biztonsági résekre. Megosztott rendszereken, beleértve a terminálszolgáltatásokon keresztül elérhető rendszereket is, gondoskodnia kell arról is, hogy a felhasználók ne tegyenek semmit, amely kárt tehet a rendszer megosztásában részt vevő másokkal.

Az alkalmazás megfelelő telepítése

A Shell esetleges biztonsági problémáinak többsége az alkalmazás megfelelő telepítésével hárítható el.

  • Telepítse az alkalmazást a Program Files mappában.

    Operációs rendszer Hely
    Windows XP, Windows Server 2003 és korábbi verziók CSIDL_PROGRAM_FILES
    Windows Vista és újabb verziók FOLDERID_ProgramFiles, FOLDERID_ProgramFilesX86, FOLDERID_ProgramFilesX64, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesCommonX86 vagy FOLDERID_ProgramFilesCommonX64. Részletekért lásd KNOWNFOLDERID.

     

  • Ne tárolja a felhasználói adatokat a ProgramFájlok mappában.

    Használja a megfelelő adatmappát az összes felhasználó számára gyakori adatokhoz.

    Operációs rendszer Hely
    Windows XP, Windows Server 2003 és korábbi verziók CSIDL_COMMON_APPDATA
    Windows Vista és újabb verziók FOLDERID_ProgramData

     

    Az adott felhasználóhoz tartozó adatokhoz használja a megfelelő felhasználói adatmappát.

    Operációs rendszer Hely
    Windows XP, Windows Server 2003 és korábbi verziók CSIDL_APPDATA, CSIDL_PERSONAL és mások.
    Windows Vista és újabb verziók FOLDERID_RoamingAppData, FOLDERID_Documents és mások.

     

  • Ha a Program Files mappától eltérő helyre kell telepítenie, győződjön meg arról, hogy a hozzáférés-vezérlési listákat (ACL-eket) megfelelően állította be, hogy a felhasználók ne férhessenek hozzá a fájlrendszer nem megfelelő részeihez. Az adott felhasználóra jellemző adatoknak olyan ACL-sel kell rendelkezniük, amely megakadályozza, hogy más felhasználók hozzáférjenek azokhoz.

  • A fájltársítások beállításakor ügyeljen arra, hogy megfelelően adja meg a parancssort. Használjon teljes elérési utat, és csomagolja be azokat az elemeket, amelyek idézőjelekben fehér szóközt tartalmaznak. Sortörés parancsparaméterek külön idézőjelekben. Ellenkező esetben előfordulhat, hogy a sztring helytelenül van elemezve, és az alkalmazás nem indul el megfelelően. Itt két példa látható a megfelelően formázott parancssorokra.

    "C:\Program Files\MyApp\MyApp.exe" "%1" "%2"
    C:\MyAppDir\MyApp\MyApp.exe "%1"
    

Jegyzet

A standard telepítési mappák helye rendszerről rendszerre változhat. Ha egy szabványos mappa helyét egy adott Windows Vista vagy újabb rendszeren szeretné lekérni, hívja meg SHGetKnownFolderPath a megfelelő KNOWNFOLDERID értékkel. Windows XP, Windows Server 2003 vagy korábbi rendszerekben hívja meg SHGetFolderLocation vagy SHGetFolderPath a megfelelő CSIDL értékkel.

 

Shlwapi

A Shell Lightweight API (Shlwapi) számos sztringmanipulációs függvényt tartalmaz. Ezeknek a függvényeknek a helytelen használata váratlanul csonkolt sztringekhez vezethet, amelyek nem jelzik a csonkolás visszaadását. A következő esetekben a Shlwapi függvényeket nem szabad használni. A felsorolt alternatív függvényeket, amelyek kevesebb kockázatot jelentenek, a helyükön kell használni.

Shlwapi függvény Alternatív függvény
StrCat,StrNCat StringCchCat, StringCbCat és kapcsolódó függvények
StrCpy, StrCpyN StringCchCopy, StringCbCopy és kapcsolódó függvények
wnsprintf, wvnsprintf StringCchPrintf, StringCbPrintf és kapcsolódó függvények

 

A fájl elérési útját visszaadó PathRelativePathTo függvények esetén mindig állítsa a puffer méretét MAX_PATH karakterekre. Ezzel biztosítja, hogy a puffer elég nagy legyen a lehető legnagyobb fájlelérési út tárolásához, valamint egy null karaktert végződő karaktert.

További információ az alternatív sztringfüggvényekről: A Strsafe.h.

Automatikus kiegészítés

Ne használja az Automatikus kiegészítés funkciót a jelszavakhoz.

Számos Shell-függvény használható az alkalmazások elindításához: ShellExecute, ShellExecuteEx, WinExecés SHCreateProcessAsUserW. Győződjön meg arról, hogy megadja a végrehajtandó alkalmazás egyértelmű definícióját.

  • A végrehajtható fájl elérési útjának megadásakor adja meg a teljes elérési utat. A fájl megkereséséhez ne függjön a Shelltől.
  • Ha olyan parancssori sztringet ad meg, amely üres területet tartalmaz, akkor a sztringet idézőjelek közé kell burkolni. Ellenkező esetben az elemző több elemként értelmezhet egy szóközt tartalmazó elemet.

Fájlok áthelyezése és másolása

A rendszerbiztonság egyik kulcsa az ACL-ek megfelelő hozzárendelése. Titkosított fájlokat is használhat. Győződjön meg arról, hogy a fájlok áthelyezésekor vagy másolásakor a megfelelő ACL-hez vannak rendelve, és hogy nem lettek véletlenül visszafejtve. Ez magában foglalja a fájlok áthelyezését a Lomtár, valamint a fájlrendszeren belül. Használja IFileOperation (Windows Vista vagy újabb) vagy SHFileOperation (Windows XP és korábbi verziók). Ne használja MoveFile, amely esetleg nem állítja be a célfájl várt ACL-ét.

Biztonságos névtérbővítmények írása

A rendszerhéj-névtérbővítmények hatékony és rugalmas módot jelentenek az adatok felhasználónak való bemutatására. Azonban rendszerhibát okozhatnak, ha nem megfelelően vannak megírva. Néhány fontos szempont, amit szem előtt kell tartani:

  • Ne feltételezze, hogy az adatok, például a képek megfelelően vannak formázva.
  • Ne feltételezze, hogy a MAX_PATH egy sztringben bájtok számával egyenértékű. A karakterek száma.

Biztonsági riasztások

Az alábbi táblázat felsorol néhány olyan funkciót, amely helytelen használat esetén veszélyeztetheti az alkalmazások biztonságát.

Vonás Mérséklés
ShellExecute, ShellExecuteEx A hamisítási támadás során olyan keresések használhatók, amelyek az alapértelmezett helyek egy sorától függenek egy adott fájl megkereséséhez. A kívánt fájl eléréséhez használjon teljes elérési utat.
StrCat Az első argumentumnak ( psz1) elég nagynak kell lennie ahhoz, hogy psz2 és a záró '\0' legyen, különben puffertúllépés történhet. Használja inkább az alábbi alternatívák egyikét. StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatNvagy StringCchCatNEx.
StrCatBuff Az utolsó sztring nem garantáltan null értékű. Használja inkább az alábbi alternatívák egyikét. StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatNvagy StringCchCatNEx.
StrCatChainW Az utolsó sztring nem garantáltan null értékű. Használja inkább az alábbi alternatívák egyikét. StringCbCatEx, StringCbCatNEx, StringCchCatExvagy StringCchCatNEx.
StrCpy Az első argumentumnak ( psz1) elég nagynak kell lennie ahhoz, hogy psz2 és a záró '\0' legyen, különben puffertúllépés történhet. Használja inkább az alábbi alternatívák egyikét. StringCbCopy, StringCbCopyEx, StringCbCopyN, StringCbCopyNEx, StringCchCopy, StringCchCopyEx, StringCchCopyNvagy StringCchCopyNEx.
StrCpyN A másolt sztring nem garantáltan null értékű. Használja inkább az alábbi alternatívák egyikét. StringCbCopy, StringCbCopyEx, StringCbCopyN, StringCbCopyNEx, StringCchCopy, StringCchCopyEx, StringCchCopyN, StringCchCopyNEx.
StrDup StrDup feltételezi, hogy lpsz null értékű sztring. Továbbá a visszaadott sztring nem garantáltan null értékű lesz. Használja inkább az alábbi alternatívák egyikét. StringCbCat, StringCbCopyEx, StringCbCopyN, StringCbCopyNEx, StringCchCopy, StringCchCopyEx, StringCchCopyNvagy StringCchCopyNEx.
StrNCat Az első argumentumnak ( pszFront) elég nagynak kell lennie ahhoz, hogy pszBack és a záró '\0' legyen, különben puffertúlcsordulás léphet fel. Vegye figyelembe, hogy az utolsó argumentum, cchMax, a pszFrontmásolandó karakterek száma, nem feltétlenül a pszFront mérete bájtban. Használja inkább az alábbi alternatívák egyikét. StringCbCat, StringCbCatEx, StringCbCatN, StringCbCatNEx, StringCchCat, StringCchCatEx, StringCchCatNvagy StringCchCatNEx.
wnsprintf A másolt sztring nem garantáltan null értékű. Használja inkább az alábbi alternatívák egyikét. StringCbPrintf, StringCbPrintfEx, StringCbVPrintf, StringCbVPrintfEx, StringCchPrintf, StringCchPrintfEx, StringCchVPrintfvagy StringCchVPrintfEx.
wvnsprintf A másolt sztring nem garantáltan null értékű. Használja inkább az alábbi alternatívák egyikét. StringCbPrintf, StringCbPrintfEx, StringCbVPrintf, StringCbVPrintfEx, StringCchPrintf, StringCchPrintfEx, StringCchVPrintfvagy StringCchVPrintfEx.

 

Microsoft Security

Security Developer Center

Microsoft-megoldásgyorsítók

Security TechCenter

A Strsafe.h