21-lekciya_paradigma_qq
.pdf21-lekciya. Programmalastırıwda qáwipsizlik hám olardı támiyinlew usılları.
Jobası:
1.Programmalastırıwda qáwipsizliktiń tiykarǵı principleri: CIA úshligi hám
"Secure by Design".
2.Keń tarqalǵan qáwipsizlik mashqalaları: Kirisiw maǵlıwmatları, Inekciyalar hám Yad qáwipsizligi.
3.Qorǵanıw mexanizmleri: Autentifikaciya, Avtorizaciya hám Kriptografiya.
4.Qáwipsiz kod jazıw ámeliyatı: Kod analizi, testlew hám eń az privilegiyalar principi.
Qáwipsiz programmalastırıwdıń fundamenti
Zamanagóy informaciyalıq texnologiyalar dáwirinde programmalastırıwda qáwipsizlik (Security) máselesi tek qosımsha wazıypa emes, al sapalı programmalıq ónimniń eń tiykarǵı talaplarınan birine aylandı. Burınları programmistlerdiń tiykarǵı maqseti programmanıń "islewin" támiyinlew bolǵan bolsa, házirgi kúnde onıń "qáwipsiz islewin" támiyinlew birinshi orınǵa shıqtı. Qáwipsiz programmalastırıw – bul programmalıq támiynattıń proektlestiriw basqıshınan baslap, kod jazıw hám orınlaw basqıshlarına shekemgi processte qátelerdi, hálsizliklerdi (vulnerabilities) hám sırtqı hújimlerdi minimallastırıwǵa qaratılǵan is-ilajlar jıynaǵı. Bul tarawdıń tiykarǵı maqseti – maǵlıwmatlardıń hám sistemanıń CIA úshligin (Confidentiality - Jasırınlıq, Integrity - Pútinlik, Availability - Qol jetimlilik) támiyinlew bolıp tabıladı.
Qáwipsizlikti támiyinlewdegi eń áhmiyetli koncepciya – bul "Secure by Design" (Jobalastırıwdan qáwipsizlik). Bul princip boyınsha, qáwipsizlik ilajları programma jazılıp bolǵannan keyin "jamaw" (patch) retinde emes, al sistemanıń arxitekturasın qurıw waqtında-aq engiziliwi shárt. Kóbinese qáteler hám "tesikler" (backdoors) programmanıń logikalıq dúzilisi durıs oylanbaǵanlıǵınan kelip shıǵadı. Mısalı, eger maǵlıwmatlar bazası menen baylanısıw qáwipsiz kanal arqalı jobalastırılmasa, keyinirek kodqa qansha qorǵanıw qossańız da, fundamenttegi qáte sistemanı hálsiz etip qaldıra beredi.
Qáwipsiz kod jazıwdıń birinshi hám eń altınday qaǵıydası – "Paydalanıwshıdan kelgen maǵlıwmatqa heshqashan isenbe". Barlıq
kiberhújimlerdiń baslanıw noqatı – bul programmaǵa sırtqan kirgizilgen (input) maǵlıwmatlar. Xakerler programma kútken standart maǵlıwmat ornına arnawlı zıyanlı kodlardı jiberiw arqalı sistemanı buzıwǵa háreket etedi. Sol sebepli, "Validaciya" (Tekseriw) hám "Sanitizaciya" (Tazalaw) processleri oǵada zárúr. Validaciya maǵlıwmatlardıń formatqa sáykesligin tekserse (mısalı, jastıń san ekenin), sanitizaciya maǵlıwmat quramındaǵı qáwipli belgilerdi óshiredi yamasa zıyansızlandıradı.
Validaciya processinde "Qara dizim" (Blacklisting) hám "Aq dizim" (Whitelisting) usılları qollanıladı. Qáwipsizlik jaǵınan "Aq dizim" usılı eń isenimli bolıp esaplanadı. Qara dizimde biz belgili zıyanlı simvollardı bloklaymız, biraq jańa túrdegi hújimlerdi ótkerip jiberiwimiz múmkin. Al aq dizimde biz tek ǵana "ruqsat etilgen" formattaǵı maǵlıwmatlardı qabıllaymız hám qalǵan barlıq nárseni avtomat túrde biykarlaymız. Bul usıl programmanıń kútilmegen háreketlerge ushıraw qáwipin túptamırınan joytadı.
Keń tarqalǵan qáwipsizlik mashqalaları (Vulnerabilities)
Programmalastırıwdaǵı eń klassikalıq hám qáwipli mashqalalardıń biri – bul "Inekciyalar" (Injection Attacks). Olardıń ishinde eń ataqlısı – "SQL Inekciyası". Bul hújim túrinde zıyanlı paydalanıwshı veb-sayttıń kirgiziw maydanına (mısalı, login formasına) SQL buyrıqların jazıp jiberedi. Eger programma bul maǵlıwmatlardı durıs tazalamastan tikkeley maǵlıwmatlar bazasına jiberse, xaker bazadaǵı maǵlıwmatlardı urlawı, óshiriwi yamasa tolıq basqarıwdı qolǵa alıwı múmkin. Bunıń aldın alıw ushın "Parametrlengen sorawlar" (Parameterized Queries) yamasa ORM (Object-Relational Mapping) texnologiyaların qollanıw kerek, olar kod penen maǵlıwmatlardı bir-birinen ajıratıp isleydi.
Yad qáwipsizligi (Memory Safety) – tómen dárejeli tillerde (C, C++) eń kóp ushırasatuǵın mashqala. "Buferdiń tolıp ketiwi" (Buffer Overflow) degen hújim túri bar, bunda programma ajıratılǵan yadtıń kóleminen kóp maǵlıwmat jazıwǵa háreket etedi. Nátiyjede, artıqsha maǵlıwmatlar qońsılas yad yacheykalarına jazılıp, programmanıń orınlanıw aǵımın ózgertip jiberedi. Xakerler bunnan paydalanıp, ózleriniń zıyanlı kodların iske túsiriwi múmkin. Bul mashqalanı sheshiw ushın zamanagóy tiller (Java, Python, Rust, Go) yadtı avtomat basqarıw hám shegaralardı tekseriw mexanizmlerin qollanadı. Ásirese, Rust tili yad qáwipsizligin kompilyaciya dárejesinde kepillewshi til retinde tanılǵan.
Veb-programmalastırıwda "XSS" (Cross-Site Scripting) hám "CSRF" (Cross-Site Request Forgery) hújimleri keń tarqalǵan. XSS hújiminde xaker saytqa JavaScript kodın "inekciya" qıladı. Basqa paydalanıwshılar sol betti ashqanda,
zıyanlı skript olardıń brauzerinde orınlanıp, sessiya kukilerin (cookies) hám jeke maǵlıwmatların urlaydı. Bunıń aldın alıw ushın shıǵarılatuǵın barlıq maǵlıwmatlardı "Ekranlaw" (Escaping) kerek, yaǵnıy arnawlı belgilerdi (<, >, &) HTML-entitilerine aylandırıw zárúr. CSRF bolsa, paydalanıwshınıń atınan jasırın túrde serverge soraw jiberiw arqalı ámelge asadı, onnan qorǵanıw ushın arnawlı tokenler (CSRF tokens) qollanıladı.
Túrlendiriw (Serialization) hám Keri túrlendiriw (Deserialization) proceslerindegi qáteler de úlken qáwip tuwdıradı. Obyektlerdi baytlar aǵımına aylandırıw hám keri qaytarıw waqtında, eger programma isenimsiz derekten kelgen maǵlıwmatlardı keri túrlendirse, "Remote Code Execution" (Aralıqtan kod orınlaw) hújimine jol ashılıwı múmkin. Xaker arnawlı tayarlanǵan zıyanlı obyektti jiberip, serverde qálegen ámellerdi orınlawı múmkin. Sol sebepli, keri túrlendiriwden aldın maǵlıwmatlardıń qoltańbasın tekseriw yamasa tek qáwipsiz formatlardı (JSON) qollanıw usınıs etiledi.
Qáwipsizlikti támiyinlew mexanizmleri hám principleri
Qáwipsiz sistemanıń eń tiykarǵı qorǵanıw shebi – bul "Autentifikaciya" hám "Avtorizaciya". Autentifikaciya – bul "Siz kim siz?" degen sorawǵa juwap beriw (login, parol, biometriya). Parollardı maǵlıwmatlar bazasında heshqashan ashıq túrde saqlamaw kerek. Onıń ornına kúshli "Xeshlew" (Hashing) algoritmleri (mısalı, Argon2, bcrypt) hám "Duzlaw" (Salting) usılları qollanılıwı shárt.
Avtorizaciya bolsa – "Sizge ne islewge ruqsat etilgen?" degen sorawǵa juwap beredi. Bul jerde "Eń az privilegiyalar principi" (Principle of Least Privilege) qollanılıwı kerek: hárbir paydalanıwshıǵa yamasa modulge tek óz jumısın islew ushın jetkilikli bolǵan minimal huqıqlar beriliwi tiyis.
"Kriptografiya" – maǵlıwmatlardıń jasırınlıǵın támiyinlewshi eń kúshli qural. Programmistler ózleriniń kriptografiyalıq algoritmlerin (shifrlerin) oylap tabıwǵa urınbawı kerek, sebebi bul matematikalıq jaqtan oǵada quramalı hám qátege beyim process. Onıń ornına sanaat standartı bolǵan, tekserilgen algoritmlerdi (AES – simmetriyalı shifrlaw, RSA/ECC – asimmetriyalı shifrlaw) hám tayın kitapxanalardı qollanıw zárúr. Sonday-aq, maǵlıwmatlar tek saqlanǵanda ǵana emes, al tarmaq arqalı uzatılǵanda da (Data in Transit) shifrlanıwı shárt (HTTPS/TLS protokolı arqalı).
Kodtıń sapasın hám qáwipsizligin tekseriw ushın "Statikalıq analiz" (SAST) hám "Dinamikalıq analiz" (DAST) quralları qollanıladı. SAST (Static Application Security Testing) – bul kod orınlanbastan burın, onıń tekstin analizlep, potenciallı qáwipsiz emes úlgilerdi (mısalı, SQL injekciyaǵa beyim jerlerdi) tabatuǵın qurallar
(mısalı, SonarQube). DAST (Dynamic Application Security Testing) bolsa programma islep turǵan waqıtta oǵan sırttan hújim etip kórip (Penetration testing), onıń hálsiz jerlerin anıqlaydı. Bul eki usıldı biriktiriw arqalı eń joqarı qáwipsizlik dárejesine erisiwge boladı.
Juwmaqlap aytqanda, programmalastırıwda qáwipsizlik – bul bir márte orınlanatuǵın is-háreket emes, al úziliksiz process. "Zamanagóy programmalastırıw paradigmaları" (mısalı, Rust-taǵı yad qáwipsizligi, Java-daǵı túrlendirilgen sorawlar) bizge texnikalıq jaqtan kóp járdem beredi, biraq eń áhmiyetlisi – bul "Qáwipsizlik mádeniyatı". Baǵdarlamashı hárbir kod qatarın jazǵanda "Bul kodtı xaker qalay buzıwı múmkin?" degen sorawdı ózine berip otırıwı kerek. Jańalanǵan kitapxanalardı (dependencies) qollanıw, kodtı turaqlı audit qılıw hám qáwipsizlik standartlarına (OWASP) ámel etiw – isenimli programmalıq támiynat jaratıwdıń kepili.
BAQLAW SORAWLARÍ:
1."Secure by Design" principi neni ańlatadı hám ol ne ushın áhmiyetli?
2.Validaciya procesinde "Aq dizim" (Whitelisting) hám "Qara dizim" (Blacklisting) arasındaǵı ayırmashılıq hám artıqmashılıq qanday?
3.SQL Injeciya hújimi qalay isleydi hám onıń aldın alıwdıń eń effektli jolı qanday?
4."Buferdiń tolıp ketiwi" (Buffer Overflow) qanday tillerde kóbirek ushırasadı hám onıń qáwipi nede?
5.Autentifikaciya hám Avtorizaciya túsinikleriniń ayırmashılıǵı nede?
