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


Biztonságos alkalmazások fejlesztése az Azure szolgáltatásban

Ebben a cikkben olyan biztonsági tevékenységeket és vezérlőket mutatunk be, amelyeket figyelembe kell venni, amikor alkalmazásokat fejleszt a felhőhöz. A microsoftos biztonsági fejlesztési életciklus (SDL) implementálási és ellenőrzési fázisai során megfontolandó biztonsági kérdések és fogalmak. A cél az, hogy segítsen meghatározni azokat a tevékenységeket és Azure-szolgáltatásokat, amelyekkel biztonságosabb alkalmazásokat fejleszthet.

A cikk a következő SDL-fázisokat ismerteti:

  • Implementálás
  • Ellenőrzés

Implementálás

A megvalósítási fázis középpontjában a korai megelőzés ajánlott eljárásainak kialakítása, valamint a biztonsági problémák észlelése és a kódból való eltávolítása áll. Tegyük fel, hogy az alkalmazást olyan módon használják, hogy nem kívánta használni. Ez segít védelmet nyújt az alkalmazás véletlen vagy szándékos visszaélései ellen.

Kódismétlések végrehajtása

A kód beadása előtt végezzen kódellenőrzéseket a kód általános minőségének növelése és a hibák létrehozásának kockázatának csökkentése érdekében. A Visual Studióval kezelheti a kódvizsgálati folyamatot.

Statikus kódelemzés végrehajtása

A statikus kódelemzés (más néven forráskódelemzés) a kódvizsgálat részeként történik. A statikus kódelemzés általában statikus kódelemzési eszközök futtatására utal, amelyek potenciális biztonsági réseket keresnek a nem futó kódban. A statikus kódelemzés olyan technikákat használ, mint a fertőzöttség-ellenőrzés és az adatfolyam-elemzés.

Azure Marketplace olyan fejlesztői eszközöket kínál, amelyek statikus kódelemzést végeznek, és segítenek a kódértékelésekben.

Az alkalmazás minden bemenetének ellenőrzése és tisztítása

Kezelje az összes bemenetet nem megbízhatóként, hogy megvédje az alkalmazást a webalkalmazások leggyakoribb biztonsági réseitől. A nem megbízható adatok az injektálási támadások járművei. Az alkalmazás bemenete tartalmaz paramétereket az URL-címben, a felhasználótól érkező bemenetet, az adatbázisból vagy egy API-ból származó adatokat, valamint minden olyan adatot, amelyet a felhasználó esetleg manipulálhat. Az alkalmazásnak ellenőriznie kell, hogy az adatok szintaktikailag és szemantikailag érvényesek-e, mielőtt az alkalmazás bármilyen módon felhasználja az adatokat (beleértve az adatok felhasználónak való megjelenítését is).

Ellenőrizze a bemenetet az adatfolyam korai szakaszában, és győződjön meg arról, hogy csak a megfelelően formázott adatok kerülnek be a munkafolyamatba. Nem szeretné, hogy a hibásan formázott adatok megmaradnak az adatbázisban, vagy egy alsóbb rétegbeli összetevő meghibásodását váltsa ki.

A tiltás és az engedélyezés két általános módszer a bemeneti szintaxis érvényesítésére:

  • A tiltólista arra tesz kísérletet, hogy ellenőrizze, hogy egy adott felhasználói bemenet nem tartalmaz-e "ismerten rosszindulatú" tartalmat.

  • Engedélyezési kísérletek annak ellenőrzésére, hogy egy adott felhasználói bemenet megfelel-e az "ismert jó" bemeneteknek. A karakteralapú engedélyezési lista az engedélyezési listák egyik formája, ahol egy alkalmazás ellenőrzi, hogy a felhasználói bevitel csak "ismert jó" karaktereket tartalmaz-e, vagy hogy a bemenet megfelel egy ismert formátumnak.

    Ez magában foglalhatja például annak ellenőrzését, hogy egy felhasználónév csak alfanumerikus karaktereket tartalmaz-e, vagy hogy pontosan két számot tartalmaz-e.

A biztonságos szoftverek létrehozásának előnyben részesített módszere az engedélyezés. A tiltólista hibát jelez, mert lehetetlen a potenciálisan hibás bemenetek teljes listájára gondolni.

Végezze el ezt a munkát a kiszolgálón, ne az ügyféloldalon (vagy a kiszolgálón és az ügyféloldalon).

Az alkalmazás kimeneteinek ellenőrzése

A vizuálisan vagy a dokumentumon belül megjelenő kimeneteket mindig kódolni és feloldani kell. A menekülés( más néven kimeneti kódolás) annak biztosítására szolgál, hogy a nem megbízható adatok ne legyenek injektálási támadások járművei. A menekülés az adatérvényesítéssel kombinálva rétegzett védelmet biztosít a rendszer egészének biztonságának növelése érdekében.

A menekülés biztosítja, hogy minden kimenetként jelenjen meg. Az elszabadítás azt is tudatja az értelmezővel, hogy az adatokat nem kívánják végrehajtani, és ez megakadályozza a támadások működését. Ez egy másik gyakori támadási technika, az úgynevezett helyek közötti szkriptelés (XSS).

Ha egy harmadik féltől származó webes keretrendszert használ, az OWASP XSS-megelőzési útmutató segítségével ellenőrizheti a webhelyeken a kimeneti kódolási lehetőségeket.

Paraméteres lekérdezések használata az adatbázissal való kapcsolatfelvételkor

Soha ne hozzon létre beágyazott adatbázis-lekérdezést "menet közben" a kódban, és küldje el közvetlenül az adatbázisba. Az alkalmazásba beszúrt rosszindulatú kód az adatbázis ellopását, törlését vagy módosítását okozhatja. Az alkalmazással rosszindulatú operációsrendszer-parancsokat is futtathat az adatbázist üzemeltető operációs rendszeren.

Ehelyett használjon paraméteres lekérdezéseket vagy tárolt eljárásokat. Paraméteres lekérdezések használatakor biztonságosan meghívhatja az eljárást a kódból, és átadhat neki egy sztringet anélkül, hogy a lekérdezési utasítás részeként kezelné.

Standard kiszolgálófejlécek eltávolítása

Az olyan fejlécek, mint a Server, az X-Powered-By és az X-AspNet-Version, információkat fednek fel a kiszolgálóról és a mögöttes technológiákról. Javasoljuk, hogy az alkalmazás ujjlenyomatának elkerülése érdekében tiltsa le ezeket a fejléceket. Lásd: Standard kiszolgálófejlécek eltávolítása az Azure-webhelyeken.

Éles adatok elkülönítése

Az éles vagy "valós" adatokat nem szabad fejlesztési, tesztelési vagy egyéb célokra használni, mint amit az üzlet szánt. Minden fejlesztéshez és teszteléshez maszkolt (anonimizált) adatkészletet kell használni.

Ez azt jelenti, hogy kevesebben férnek hozzá a valós adatokhoz, ami csökkenti a támadási felületet. Azt is jelenti, hogy kevesebb alkalmazott látja a személyes adatokat, ami kiküszöböli a bizalmasság esetleges megsértését.

Erős jelszószabályzat implementálása

A találgatásos és szótáralapú találgatások elleni védelem érdekében erős jelszóházirendet kell alkalmaznia, hogy a felhasználók összetett jelszót hozzanak létre (például 12 karakter minimális hosszúságú, alfanumerikus és speciális karaktereket igényelnek).

Az Azure Active Directory B2C segít a jelszókezelésben az önkiszolgáló jelszó-visszaállítás biztosításával, a jelszó-visszaállítás kényszerítésével és egyebekkel.

Az alapértelmezett fiókok elleni védelemhez győződjön meg arról, hogy az összes kulcs és jelszó lecserélhető, és hogy az erőforrások telepítése után létrejönnek vagy lecserélhetők.

Ha az alkalmazásnak automatikusan létre kell hoznia a jelszavakat, győződjön meg arról, hogy a létrehozott jelszavak véletlenszerűek, és hogy nagy entrópiával rendelkeznek.

Fájlfeltöltések ellenőrzése

Ha az alkalmazás engedélyezi a fájlfeltöltést, fontolja meg a kockázatos tevékenységhez szükséges óvintézkedéseket. Sok támadás első lépése, hogy rosszindulatú kódot kap egy támadás alatt álló rendszerbe. A fájlfeltöltés segít a támadónak ennek elérésében. Az OWASP megoldásokat kínál a fájlok ellenőrzésére, hogy a feltöltött fájl biztonságos legyen.

A kártevőirtók elleni védelem segít azonosítani és eltávolítani a vírusokat, kémprogramokat és egyéb rosszindulatú szoftvereket. Telepítheti Microsoft Antimalware vagy a Microsoft-partner végpontvédelmi megoldását (Trend Micro, Broadcom, McAfee, Microsoft Defender Víruskereső Windows rendszeren és Endpoint Protection).

Microsoft Antimalware olyan funkciókat tartalmaz, mint a valós idejű védelem, az ütemezett vizsgálat, a kártevők szervizelése, az aláírásfrissítések, a motorfrissítések, a mintajelentések és a kizárási események gyűjtése. Az üzembe helyezés és a beépített észlelések (riasztások és incidensek) érdekében integrálhatja Microsoft Antimalware és partnermegoldásait a Microsoft Defender for Cloud szolgáltatással.

Bizalmas tartalom gyorsítótárazási mellőzése

Ne gyorsítótárazza a bizalmas tartalmakat a böngészőben. A böngészők gyorsítótárazási és előzményadatokat tárolhatnak. A gyorsítótárazott fájlok az Internet Explorer esetében az Ideiglenes internetfájlok mappához hasonló mappában vannak tárolva. Amikor ezekre az oldalakra ismét hivatkozik, a böngésző megjeleníti az oldalakat a gyorsítótárából. Ha bizalmas információk (cím, hitelkártyaadatok, társadalombiztosítási szám, felhasználónév) jelennek meg a felhasználó számára, előfordulhat, hogy az adatok a böngésző gyorsítótárában tárolódnak, és lekérthetők a böngésző gyorsítótárának vizsgálatával vagy a böngésző Vissza gombjának lenyomásával.

Ellenőrzés

Az ellenőrzési fázis átfogó erőfeszítéseket tesz annak biztosítására, hogy a kód megfeleljen az előző fázisokban megállapított biztonsági és adatvédelmi követelményeknek.

Az alkalmazásfüggőségek biztonsági réseinek megkeresése és javítása

Az alkalmazás és a függő kódtárak vizsgálatával azonosíthatja az ismert sebezhető összetevőket. A vizsgálat elvégzéséhez elérhető termékek közé tartozik az OWASP dependency Check, a Snyk és a Black Duck.

Az alkalmazás tesztelése működési állapotban

A dinamikus alkalmazásbiztonsági tesztelés (DAST) egy olyan folyamat, amely egy alkalmazás operációs állapotában teszteli a biztonsági réseket. A DAST-eszközök a végrehajtás során elemzik a programokat olyan biztonsági rések megtalálásához, mint a memóriasérülés, a nem biztonságos kiszolgáló konfigurációja, a helyek közötti szkriptelés, a felhasználói jogosultságokkal kapcsolatos problémák, az SQL-injektálás és egyéb kritikus biztonsági problémák.

A DAST különbözik a statikus alkalmazások biztonsági tesztelésétől (SAST). A SAST-eszközök elemzik a forráskódot vagy a kód lefordított verzióit, amikor a kód nem fut a biztonsági hibák keresése érdekében.

Végezze el a DAST-t, lehetőleg biztonsági szakember ( behatolástesztelő vagy sebezhetőség-ellenőrző) segítségével. Ha egy biztonsági szakember nem érhető el, a DAST-t saját maga is elvégezheti egy webes proxyszkennerrel és némi betanítással. A DAST-szkennert korán csatlakoztassa, hogy ne vezessen be nyilvánvaló biztonsági problémákat a kódba. A webalkalmazás biztonságirés-ellenőrzőinek listáját az OWASP webhelyén találja.

Fuzz-tesztelés végrehajtása

Az fuzz-tesztelés során programhibát idézhet elő úgy, hogy szándékosan helytelen vagy véletlenszerű adatokat ad egy alkalmazásnak. A programhiba indukálása segít felfedni a potenciális biztonsági problémákat az alkalmazás kiadása előtt.

A biztonsági kockázatészlelés a Microsoft egyedi fuzz tesztelési szolgáltatása, amely biztonsági szempontból kritikus hibákat keres a szoftverekben.

Támadási felület áttekintése

A támadási felület kódkiegészítés utáni áttekintése segít annak biztosításában, hogy az alkalmazás vagy rendszer bármilyen tervezési vagy implementációs változását figyelembe vették. Segít biztosítani, hogy a módosítások eredményeként létrehozott új támadási vektorokat , beleértve a fenyegetési modelleket is, felülvizsgálják és enyhítsék.

Az alkalmazás beolvasásával képet készíthet a támadási felületről. A Microsoft egy Attack Surface Analyzer nevű támadásifelület-elemző eszközt kínál. Számos kereskedelmi dinamikus tesztelési és biztonságirés-vizsgálati eszköz vagy szolgáltatás közül választhat, köztük az OWASP Attack Surface Detector, az Arachni és a w3af. Ezek a vizsgálati eszközök bejárják az alkalmazást, és leképezik az alkalmazás weben elérhető részeit. A Azure Marketplace is kereshet hasonló fejlesztői eszközöket.

Biztonsági behatolástesztelés végrehajtása

Az alkalmazás biztonságának biztosítása ugyanolyan fontos, mint bármely más funkció tesztelése. A behatolástesztelést a buildelési és üzembehelyezési folyamat standard részévé teheti. Rendszeres biztonsági tesztek és biztonságirés-vizsgálat ütemezése az üzembe helyezett alkalmazásokon, valamint a nyitott portok, végpontok és támadások figyelése.

Biztonsági ellenőrző tesztek futtatása

Az Azure-hoz készült Secure DevOps Kitből (AzSK) származó Azure Tenant Security Solution (AzTS) SVT-ket tartalmaz az Azure platform több szolgáltatásához. Ezeket az SVT-ket rendszeres időközönként futtatja annak biztosítása érdekében, hogy az Azure-előfizetése és az alkalmazást alkotó különböző erőforrások biztonságos állapotban legyenek. Ezeket a teszteket automatizálhatja az AzSK folyamatos integrációs/folyamatos üzembehelyezési (CI/CD) bővítményeinek funkciójával is, amely elérhetővé teszi az SVT-ket Visual Studio-bővítményként.

Következő lépések

A következő cikkekben olyan biztonsági vezérlőket és tevékenységeket ajánlunk, amelyek segíthetnek a biztonságos alkalmazások tervezésében és üzembe helyezésében.