🔐 Droša programmatūras izstrāde
Sešas tēmas par to, kā izstrādāt drošu programmatūru - no Secure by Design principiem līdz CI/CD drošības vārtiem un piegādes ķēdes integritātei - pēc starptautiskās prakses (CISA, NIST SSDF, OWASP, SLSA). Piemēri ir vispārīgi, paredzēti apmācībām.
Drošība kā projektēšanas prasība
Secure by Design un Secure by Default
Secure by Design nozīmē drošību kā prasību no pirmās dienas; Secure by Default nozīmē drošus noklusējumus (piem. MFA ieslēgts, porti slēgti), lai lietotājam nekas nav jāaktivizē manuāli.
Pielietojums
Drošība ir biznesa prasība, ne papildu funkcija. Galvenie principi: minimāla uzbrukuma virsma, mazākās privilēģijas, aizsardzība dziļumā, droša atteice (fail securely) un droši noklusējumi.
Atsauce
CISA "Secure by Design" (2023) · NIST SSDF (SP 800-218) · OWASP · Saltzer & Schroeder (1975) drošības projektēšanas principi.
Drošības piezīme
Atbildība par drošību pieder ražotājam, ne lietotājam. Drošība, kas jāieslēdz manuāli, praksē paliek izslēgta - tāpēc noklusējumam jābūt drošam.
Drošs izstrādes dzīves cikls (SSDLC)
Drošības darbība katrā fāzē
Pielietojums
Katrai fāzei sava drošības darbība un atbildīgais. Kartējams uz atzītiem ietvariem - Microsoft SDL, NIST SSDF praksēm (PO, PS, PW, RV) un OWASP SAMM brieduma domēniem.
Atsauce
NIST SSDF SP 800-218 · Microsoft Security Development Lifecycle · OWASP SAMM · BSIMM · ISO/IEC 27034 (aplikāciju drošība).
Drošības piezīme
Draudu modelēšana projektēšanas fāzē atrod arhitektūras trūkumus, ko neviens koda skeneris neredz - tie ir visdārgākie labot vēlāk.
Drošas kodēšanas prakse
Izplatītākie riski (OWASP Top 10) un aizsardzība
Pielietojums
Praktisks kontrolsaraksts izstrādātājam un koda pārskatam. OWASP ASVS dod pārbaudāmas prasības trīs līmeņos (L1-L3) atkarībā no lietotnes kritiskuma.
Atsauce
OWASP Top 10:2021 · OWASP Application Security Verification Standard (ASVS) · OWASP Cheat Sheet Series · CWE Top 25 · SEI CERT Coding Standards.
Drošības piezīme
Nekad neuzticies ievadei un nerakstiet paši savu kriptogrāfiju. Validē ievadi serverī (ne tikai pārlūkā) un lieto pārbaudītas bibliotēkas.
DevSecOps - drošība konveijerā
Automatizēti drošības vārti katrā posmā
Pielietojums
Katrs drošības rīks kļūst par automātisku konveijera vārtu. Tā drošība mērogojas ar izstrādi, nevis paļaujas uz manuālu pārbaudi termiņa spiedienā.
Atsauce
OWASP Top 10 CI/CD Security Risks · NIST SSDF SP 800-218 · SLSA · DevSecOps (kultūra + automatizācija).
Drošības piezīme
Pats konveijers ir mērķis - aizsargā būves noslēpumus, ierobežo darbinieku atļaujas un pārbaudi trešo pušu darbības (GitHub Actions u.c.), lai konveijers netiek kompromitēts.
Automatizētā drošības testēšana
SAST, SCA, DAST, IAST - kurš ko atrod
Pielietojums
Kombinē metodes atbilstoši konveijera posmam: statiskās (SAST/SCA/secret) agri, dinamiskās (DAST/IAST) testos, infrastruktūras skenēšana pirms izvietošanas.
Atsauce
OWASP (testēšanas rīki - ZAP, Dependency-Check) · NIST SSDF SP 800-218 · CIS Benchmarks · OSS-Fuzz (nepārtraukta fuzzing).
Drošības piezīme
Rīki atrod zināmos šablonus, ne biznesa loģikas kļūdas. Automatizētā testēšana nepārbauda, vai pieejas kontrole ir loģiski pareiza - to atrod manuāls pārskats un penetrācijas tests.
Programmatūras piegādes ķēdes integritāte
SBOM, parakstīšana un SLSA līmeņi
Pielietojums
SBOM ļauj ātri atbildēt "vai mūs skar šī CVE?"; izcelsme (provenance) un paraksts pierāda, ka artefakts (būves gala fails) nāk no uzticama, neviltota būves procesa. Kopā tie aizsargā piegādes ķēdi.
Atsauce
SLSA v1.0 · NIST SSDF SP 800-218 · SPDX / CycloneDX (SBOM formāti) · Sigstore/cosign · in-toto · US EO 14028 · EU Cyber Resilience Act (CRA).
Drošības piezīme
Lielākā daļa koda ir trešo pušu atkarības. SolarWinds un līdzīgi incidenti rāda - kompromitēta būve vai atkarība apiet visu pārējo aizsardzību. Verificē pirms palaišanas.
Saīsinājumi
Visu ceļvedī lietoto saīsinājumu atšifrējumi (oriģināls un nozīme).
- SDLC
- Software Development Life Cycle - programmatūras izstrādes dzīves cikls.
- SSDLC
- Drošs SDLC - dzīves cikls ar iebūvētu drošību.
- SDL
- Security Development Lifecycle - Microsoft drošas izstrādes process.
- SSDF
- Secure Software Development Framework - NIST SP 800-218 ietvars.
- SAMM
- Software Assurance Maturity Model - OWASP brieduma modelis.
- BSIMM
- Building Security In Maturity Model - reālās prakses mērījums.
- SAST
- Static Application Security Testing - statiskā pirmkoda analīze.
- DAST
- Dynamic Application Security Testing - darbojošās lietotnes tests.
- IAST
- Interactive Application Security Testing - instrumentēts izpildlaika tests.
- SCA
- Software Composition Analysis - atkarību/komponenšu analīze.
- RASP
- Runtime Application Self-Protection - izpildlaika pašaizsardzība.
- WAF
- Web Application Firewall - tīmekļa lietojumu ugunsmūris.
- DevSecOps
- drošība iestrādāta DevOps kultūrā un automatizācijā.
- CI/CD
- nepārtraukta integrācija / piegāde (konveijers).
- IaC
- Infrastructure as Code - infrastruktūra kā kods.
- SBOM
- Software Bill of Materials - programmatūras sastāvdaļu saraksts.
- SLSA
- Supply-chain Levels for Software Artifacts - piegādes ķēdes līmeņi.
- CWE
- Common Weakness Enumeration - programmatūras vājību klasifikācija.
- CVE
- Common Vulnerabilities and Exposures - publiskais ievainojamību reģistrs.
- ASVS
- OWASP Application Security Verification Standard.
- STRIDE
- draudu modelēšanas kategorijas (Microsoft).
- MFA
- Multi-Factor Authentication - vairākfaktoru autentifikācija.
- TLS
- Transport Layer Security - transporta slāņa šifrēšana.
- CRA
- EU Cyber Resilience Act - ES kibernoturības regula.
- provenance
- izcelsmes pieraksts - kā un no kā artefakts uzbūvēts (SLSA).
- artefakts
- būves gala rezultāts - izpildfails, pakotne vai konteinera attēls.
- build
- būve - pirmkoda pārvēršana palaižamā artefaktā.