Kas teid rünnatakse? Võtke ühendust intsidentidele reageerimise meeskonnaga

Turvaline arendus

Uue funktsiooni ohumodelleerimine ühe tunniga ilma turvaarhitektita

Ajastatud tunnipikkune ohumodelleerimise sessioon arendustiimidele: neli küsimust ja STRIDE, tulemuseks tiketid ja testjuhtumid.

Saadaval ka:EnglishTürkçeDeutschFrançaisEspañolItalianoPolskiNederlands

Illustratsioon: Uue funktsiooni ohumodelleerimine ühe tunniga ilma turvaarhitektita

Arendustiim suudab funktsiooni ohumodelleerida ühe tunniga, kui vastab neljale küsimusele kindlas järjekorras ja lahkub kohtumiselt tiketitega, mitte dokumendiga. Küsimused pärinevad dokumendist Threat Modeling Manifesto: millega me tegeleme, mis võib valesti minna, mida me selle vastu ette võtame ja kas tegime piisavalt hea töö. Turvaarhitekti pole vaja, sest töö ei sõltu ühe inimese kaasasündinud andest.

Tund ühe pilguga

MinutidKüsimusTulemus
Enne-Üks inimene koostab andmevoodiagrammi mustandi
0-10Millega me tegelemeParandatud diagramm, nummerdatud sisenemispunktid
10-30Mis võib valesti minnaOhtude loend, rühmitatud STRIDE kategooriate kaupa
30-45Mida me selle vastu ette võtameVastus igale ohule
45-55Tiketid ja testidÜks tiket ja üks test iga leevenduse kohta
55-60Kas tegime piisavalt hea tööTäielikkuse kontroll

Enne sessiooni

Valige üks funktsioon, mitte kogu toode. Probleemide leidmine disainietapis on palju tõhusam kui vigade parandamine toodangus, seega korraldage sessioon enne arenduse algust.

Kutsuge kohale arendaja, nõuete omanik ja, kui asjasse on seotud infrastruktuur, keegi töötajatest, kes tegeleb käitusega. Üks neist toob kaasa andmevoodiagrammi mustandi, mis on tehtud tööriistaga, mille faile saab tiim hiljem muuta.

Minutid 0-10: millega me tegeleme

Grupp parandab mustandit. OWASP Threat Modeling Cheat Sheet nõuab selget ülevaadet usaldusPiiridest, andmevoogudest, andmehoidlatest, protsessidest ja välistest olemitest, mis kujutavad sageli võimalikke ründepunkte. Kontrollige, et igaüks neist on joonisel olemas.

Kui osa osalejaid ei ole tehnilised, tehke vood selgeks tahvlil ajurünnakuna, selle asemel et nõuda DFD tähistust.

Nummerdage sisenemispunktid jooksvalt, kasutades kihiliste puhul põhi- ja alamnumbrit (1, 1.2, 1.2.1), nagu teeb OWASP kogukonna protsessileht, ning märkige ka väljumispunktid. Sisselogimislehe veateade võib võimaldada rünnakuid vastava sisenemispunkti kaudu, näiteks kontode kogumist ("kasutajanime ei leitud") või SQL-süsti (SQL-erandite veateadete kaudu).

Minutid 10-30: mis võib valesti minna

Tehnilise disaini puhul alustage STRIDE-ist. Käige iga komponent, andmevoog ja usaldusPiir läbi kuue kategooria kaudu ning märkige üles, millist sisenemispunkti ID-d iga oht puudutab.

KategooriaRikubNäide
SpoofingAutentimistVarastatud autentimistookenit kasutatakse kasutaja kehastamiseks
TamperingTervikluseSoovimatud andmebaasimuudatused rakenduse kaudu
RepudiationArvepidamistLogisid manipuleeritakse, et tegevusi varjata
Information DisclosureKonfidentsiaalsustAndmete väljavõtmine kasutajakontode andmebaasist
Denial of ServiceKäideldavustKasutaja lukustatakse välja paljude ebaõnnestunud autentimiskatsetega
Elevation of PrivilegesAutoriseerimistJWT muudetakse rolli vahetamiseks

Äriloogika reegli puhul lisage väärkasutusjuhtumid: tegevused, mis tehakse vales järjekorras, korduvalt, samaaegselt või soovimatu tulemuse saavutamiseks. Ühe mitmeetapilise ründaja eesmärgi jaoks kasutage ründepuud. Ärge lisage tehnikaid lihtsalt põhjalikkuse mulje loomiseks; põhjendage, miks iga tehnika sobib ja mida see katmata jätab.

Tõenäosuse korrutamine mõjuga kõlab korrektselt, kuid mõlemat on raske hinnata ja korrutis ignoreerib parandamise kulu. Ühe tunni jooksul piisab iga ohu jaoks jämedast hinnangust: kõrge, keskmine või madal.

Läbitöötatud näide: parooli lähtestamine

Võtame parooli lähtestamise. Diagramm näitab brauserit, veebirakendust, kasutajate andmebaasi ja e-posti teenust, kusjuures internetti ja rakendust eraldab usaldusPiir. Lähtestamistaotlus on sisenemispunkt 3 ja e-kirjaga saadetud link on 3.1 (illustreerivad ID-d).

Grupp leiab neli ohtu. Lähtestamislink toimib kellelegi teisele peale omaniku (spoofing). Teade "sellise aadressiga kontot ei ole" paljastab, kes on registreeritud (information disclosure). Lähtestamissündmusi ei logita (repudiation). Keegi käivitab ohvri vastu korduvaid lähtestamisi (denial of service).

Minutid 30-45: mida me selle vastu ette võtame

Iga ohu kohta valitakse üks neljast vastusest:

  • Mitigate (leevendada): vähendada ohu realiseerumise tõenäosust.
  • Eliminate (kõrvaldada): eemaldada funktsioon või komponent, mis ohu põhjustab.
  • Transfer (üle kanda): anda lepinguline või rahaline vastutus teisele osapoolele.
  • Accept (aktsepteerida): mitte midagi teha, sest muud valikud ei sobi ärilistesse piirangutesse.

Üleandmine ise ei vähenda tõenäosust ega kahju, seega kirjutage üles, kes vastutab allesjäävate kontrollimeetmete ja jääkriski eest. Aktsepteeritud ohtude puhul dokumenteerige, kes riski aktsepteeris ja miks.

Minutid 45-55: tiketid ja testid

Muutke iga kokkulepitud leevendus nõudeks, mille arendaja saab töösse võtta. Piisab ühest reast ohu kohta:

Ohu IDSTRIDETiketTest
3.1-SSpoofingTehke lähtestamislingid ühekordseks ja lühiealiseksKasutatud või aegunud link lükatakse tagasi
3-IInformation DisclosureTagastage mis tahes aadressi puhul üks ja sama üldine vastusTeadaolev ja tundmatu aadress annavad identsed vastused
3-RRepudiationLogige iga lähtestamistaotlusLähtestamiskatse ilmub logis

Testide veerg teeb mudelist midagi enamat kui joonise. Iga leevenduse jaoks on vaja kontrolli, mis ebaõnnestub, kui kaitsemeede puudub. Väärkasutusjuhtumid on otse ülekantavad: esitage taotlus uuesti, saatke sammud vales järjekorras, saatke kaks taotlust korraga. Lisage tiketid funktsiooni enda backlogi ja pange ohu ID pealkirja.

Minutid 55-60: kas tegime piisavalt hea töö

Alustage lihtsa kontrolliga: kas on olemas kirjed, mis näitavad diagrammi, ohtude loendit ja kontrollimeetmete loendit? Kui mõni puudub, ei ole sessioon lõppenud. Veenduge, et igal ohul on vastus, et iga leevendus ütleb, kuidas tiim selle ellu viib, ja et aktsepteeritud riskide juures on põhjendus.

Seejärel hoidke mudel elus. Uuendage seda koos süsteemiga ja disaini muutudes käivitage uuesti ainult mõjutatud osad.

Kust alustada

  1. Valige üks eelseisev funktsioon ja broneerige tund arendaja, nõuete omaniku ning käitusspetsialistiga.
  2. Laske ühel inimesel koostada andmevoodiagrammi mustand, kuhu on märgitud usaldusPiirid. Grupp parandab selle ja nummerdab sisenemispunktid esimese kümne minuti jooksul.
  3. Käige STRIDE läbi iga komponendi ja voo kohta 20 minutit ning märkige iga ohu juurde mõjutatud sisenemispunkti ID.
  4. Määrake igale ohule vastus, märkige, kes vastutab aktsepteeritud või üle antud riski eest, ning looge iga leevenduse kohta üks tiket ja üks test.
  5. Hoidke diagrammi, ohtude loendit ja kontrollimeetmete loendit funktsiooni dokumentatsiooni juures. Kui soovite esimesele mudelile välist hinnangut, saab meie konsultatsiooniteenus selle üle vaadata ning dokumenteeritud ohud sobivad hästi hilisema penetratsioonitesti ulatuseks.

Kuidas saame aidata

Nõustamine ja koolitus

Hindame teie praegust olukorda, seame koos teiega prioriteedid ja õpetame töötajaid ründeid ära tundma.

JWT-dekooder

Dekodeerige JSON Web Token ja kontrollige seda levinud turvavigade suhtes, ilma et see brauserist lahkuks.

Kirjutage meile
AngelForce’i meeskond

Kirjutanud AngelForce’i meeskond: CEH-, LPT Masteri ja CISA-sertifikaadiga turvakonsultandid, kes testivad, jälgivad ja kaitsevad organisatsioonide süsteeme kogu Euroopas.

Artikkel on kirjutatud tehisintellekti abil allpool loetletud avalike allikate põhjal ning AngelForce’i meeskond vaatas selle enne avaldamist üle.

Allikad

  1. www.threatmodelingmanifesto.org/
  2. cheatsheetseries.owasp.org/cheatsheets/Threat_Modeling_Cheat_Sheet.html
  3. community.owasp.org/Threat_Modeling_Process

Artiklid teemal „Turvaline arendus“

Rääkige meile, mida soovite kaitsta

Kirjeldage oma keskkonda ja seda, mida soovite saavutada. Vastame e-posti teel.

Kirjutage meile
info@angelforce.eu +372 5705 2044

AngelForce OÜ · Tallinn, Eesti