Програм хангамжийн аюулгүй байдлыг кодын түвшинд хэрхэн хамгаалах вэ?

Нийтэлсэн: 2018.11.14 | |

Ай Ти Зон компанийн Програм хангамжийн газрын дарга Т.Төгөлдөр нь програм хангамжийн газарт 9 жил ажиллаж, нийтдээ 40 гаруй програм хангамжийн төслүүдэд ажиллаж ирсэн. Тэр дундаа Улсын хэмжээний нэгдсэн мэдээллийн систем байгуулах 5 төслийг удирдан ажилласан арвин туршлагатай.Төрийн байгууллага болон хувийн хэвшлийн хувьд үндсэн үйл ажиллагаандаа ашигладаг тусгайлан зориулсан програм хангамжуудтай байдаг бөгөөд үүнд хамгийн чухал үнэ цэнэ бүхий мэдээллүүд байдаг. Эдгээр үндсэн програмыг мэдээллийн технологийн компаниуд гүйцэтгэх бөгөөд үүнийг аюулгүй байлгана гэдэг нь нэг талаас хувь хэрэглэгч, нөгөө талаас програм хангамж бүтээгчдээс хамааралтай байдаг. Энэ талаар Т.Төгөлдөртэй ярилцлаа.

ES: Өдрийн мэнд. Ер нь яагаад байгууллагууд зөвхөн өөрийн компанидаа зориулсан тусгай програм хангамжтай болохыг зорьдог вэ? гэдгээс ярилцлагаа эхэлцгээе.

Технологийн дэвшлээр бидний бүтээмж өмнөх арван жилүүдээс хэд дахин өссөн үзүүлэлттэй болсон. Харин өнөө үед аль хэдийн өссөн бүтээмжийг дахин нэмэгдүүлэхээс гадна байгууллага болоод байгаль орчинд үзүүлж буй маш их хэмжээний үргүй зардлуудыг бууруулж, илүү хэмнэлттэй, хурдтай ажиллах нь гол зорилт бий болсон. Тэгэхээр байгууллагууд өөрийн үндсэн үйл ажиллагааг цахимаар гүйцэтгэх програм хангамжтай болно гэдгийг “зардлаа хэмнэж, бүтээмжээ нэмэгдүүлэх” хэрэгсэлтэй болж байна гэсэн үг. Үүгээр нь тухайн байгууллагын гол процесс дахь ажлын урсгалууд нь цахим хэлбэрээр өгөгдөл, үнэ цэнэ бүхий мэдээлэл болон хором тутамд урсаж байдаг.

ES: Эдгээр чухал үнэ цэнэ бүхий мэдээллээ аюулгүй байлгах нь тухайн байгууллагын дотоод процесстой уялдах нь тодорхой. Гэхдээ тухайн захиалагчийн програм хангамж бүтээхдээ кодын талаас нь хамгаалалтыг давхар хийдэг байх?

Код бичих буюу програм хангамж хөгжүүлэлтийн талаас мэдээж аюулгүй байдлын ерөнхий шаардлага гэж байдаг. Жишээ нь Нууцлалын элементүүд (specific elements of confidentiali­ty), Мэдээлэл бүрэн байх (integrity), Нэвтрэлт (authentication), Бэлэн байдал (availabili­ty), баталгаажуулалт (authorization) болон Татгалзалгүй (non-repudiation). Эдгээрийг мөрдөж ажиллах нь тухайн програм бүтээгч байгууллагын нэн тэргүүний шаардлага байдаг. Мөн нэмэгдээд тухайн төслийн онцлогоос хамааран тусгайлсан хамгаалалтын аргачлалыг хэрэглэдэг. Жишээлбэл вэб програмчлалд түгээмэл ашиглагддаг дараах 10 зөвлөмж, сайн туршлагууд байдаг.

КОДЫН АЮУЛГҮЙ БАЙДЛЫГ ХАНГАХ ЗӨВЛӨМЖ

  1. Request/response –ийг нууцлах
  2. Домайн нэрэнд https ашиглах
  3. Директорын жагсаалт бүтцийг ил гаргахгүй байх
  4. Чухал, эмзэг өгөгдлийг cookie-д хадгалахгүй байх
  5. Tls протокол хэрэглэх
  6. Нууц үгний бодлогыг чангалах
  7. Чухал өгөгдлийг далдлагдсан талбар хадгалахгүй байх
  8. Тодорхой заасан төрлийн файлыг upload хийлгэх
  9. Гуравдагч түвшний сангууд аюулгүй байдал хангасан эсэхийг шалгах
  10. Web server-ийн мэдээллийг нуух


Эдгээрийг бүтээсэн програм хангамждаа заавал хангасан байх хэрэгтэй. Түүнчлэн кибер орчинд халдлага хийх боломжит гарц буюу “Нүх”-нүүдээ тусгайлсан тестийн хэрэгслүүдээр шалгаж, түүнийг залруулж өгдөг.

ES: Халдлагаас сэргийлэх “Нүх”-ийг хамгаална гэдэг чухам юу гэсэн үг бэ?

Энэ нь кибер орчинд тухайн програмистын бүтээсэн програм хангамжийн тодорхой сул талыг ашиглан гаднаас мэдээллийн системд халдан, мэдээлэл хулгайлах, системийн тогтвортой үйл ажиллагааг алдагдуулах, системд хиймлээр өндөр ачаалал өгөх гэх мэт халдлагууд байдаг. Жишээлбэл нийтлэг халдлагуудаас дурдвал DDos, MitM, Brute force, URL injection, SQL injection, Cross site script­ing, Buffer-overflow гэх мэт байдаг. Эдгээрээс урьдчилан сэргийлэхийн тулд тухайн програм хангамж хөгжүүлэлтэд тохирсон хамгаалалтын арга хэрэгсэл, зөвлөмжүүдийг ашиглах, туршлагатай экспертүүдийн багаар Аюулгүй байдлын хяналт (Security review), Аюулгүй байдлын аудит (Security Audit) хийлгэсэн байх нь чухал. Мэдээж эдгээрийг хийлгэх боломж бүхий Application Security Test­ing Tools буюу Аппликэйшны аюулгүй байдлыг шалгах тусгайлсан хэрэгслүүдээс оновчтойг сонгон ашигладаг.

ES: Энэ хэрэгслийг хэрхэн програм хангамж хийх явцдаа ашигладаг юм бэ?

Software Development Life Cycle (SDLC) буюу програм хангамж бүтээх явц нь үндсэн 6 үе шаттай байдаг. Түүний нэг үе шат нь Integration and Testing бөгөөд дотроо хэд хэдэн дэд үед шаттай. Жишээ нь Unit test, Code review, Integration test, System test, Security test, Stress test, User Acceptance test гэх мэт байдаг. Se­curity Test үе шат дээр дээрх хэрэгслийг ашигладаг. Бидний хувьд захиалагчийн үйл ажиллагааны онцлог, compliance буюу тусгайлсан шаардлагад нийцүүлэн аюулгүй байдлын тестийн хэрэгслээ Mi­cro Focus -Fortify Static Code Analyzer зэрэг хүлээн зөвшөөрөгдсөн, батлагдсан тестийн хэрэгслүүдээс сонгон ашигладаг. Энэ нь боломжит эрсдэлүүдийг урьдчилан тодорхойлох, түүнийг хиймлээр илрүүлэх, гарсан үр дүнг задлан шинжилгээ хийх боломж болон залруулах арга хэмжээ авах зөвлөмжийг өгдөг байгаа.

Жишээ нь бидний хөгжүүлсэн нэгэн томоохон програм хангамж дээр Аюулгүй байдлын шалгалт хийхэд байж болох 1000 орчим эрсдэлүүдээс давж чадаагүй 640 орчим эрсдэл байсан бөгөөд үүнийг бид анализ хийж үнэлэн, түүн дээр шийдлүүд боловсруулан гүйцэтгэсэн байдаг. Ингэснээр тодорхой түвшинд програм хангамж маань аюулгүй найдвартай бүтээгддэг.

ES: Ингээд сүүлийн асуулт цахим эрин зуунд ус агаар шиг хэрэгтэй байдаг програм хангамжийг бүтээгчийн хувьд та өөрийн ажлаа юу гэж хардаг вэ?

Програмистууд бид салбар салбарынханд зориулан үндсэн ажлынх хэрэгсэл болсон бүтээлийг бүтээж өгдөг тул үнэхээр тал талын мэдлэгтэй болсон байдаг. Бидний их хүч хөдөлмөрөөр бий болсон програм хангамж маань хэрэглэгчдийн гар дээр очоод алдаагүй сайхан ажиллаж, бүтээмж, хурдыг өсгөж, ажлыг нь хөнгөвчилж, хэмнэлт хийж амжилтыг нь хурдасгаж байгаа нь бидэнд энэхүү ажлыг хийх хамгийн амттай хэсэг нь байдаг.

Үндсэн цэс