Saturday, March 09, 2013

Эмийн санч, эмч хоёрын ялгаа


Өчигдөр МТ инженерээр сурч буй төгсөх курсын таньдаг дүү хүү онлайн таараад зөвлөгөө асууж байна. Нэг найзтайгаа хамтраад вэб хийж байгаа, аюулгүй байдлын ямар сертификат авбал зүгээр вэ гэнэ. Би гайхаад тийм их нууцлал шаардах вэб хийж байгаа юм уу гэж асуулаа. Яриаг нь сонсоод байтал үгүй бололтой, тэгээд аюулгүй байдлын сертификат яагаад тавих гээд байгааг нь асуутал хакдуулахаас хамгаална биз дээ гэнээ. Дөлөө энэ талаар бас өмнө нь бичиж байсан учраас давхар нуршаад ч яах вэ. Гэхдээ энэ яриа надад хэдхэн хоногийн өмнө Red Hat –ийн нэг инженерийн ярьж байсан зүйлсийг санагдуулсан юм.
Veteran буюу ахмад дайчин гэж хэлэгдэхээр хорь гаруй жил Линкус систем дээр ажиллаж байгаа хижээлдүү насны мань эрийн яриа нэлээд сонирхолтой санагдсан болохоор энд сийрүүлээд тавилаа.
“Анх биднийг МТ сурч байхад одоогийнх шиг олон янзын abstraction, машины ажиллагааг нууж хүнд таатай байдлаар харуулах хэрэглэгчийн олон янзын интерфэйс байсангүй. Бид бичиж буй кодоо машинд тааруулж, өөрсдөө машины оронд өөрсдийгөө тавьж төсөөлж байгаад бичдэг байлаа. Харин одоо бол бүх юм өөр. Машины өөрийнх нь хүчин чадал ч өсч, хэр баргийн код санах ой дүүргэчихнэ гэж айх юмгүй болж. Код хэтэрхий удаан ачааллана гэж санаа зоволтгүй болжээ. Одоо чиний барьж байгаа утас л гэхэд миний тухайн үед ажиллаж байсан серверээс хамаагүй илүү хүчин чадалтай.
Хөгжил дэвшлийн энэ давуу тал бол мэдээж хэрэг зөндөө байлгүй яах вэ. Гэхдээ нэг л маш том сул тал харагдаад байгаа юм. Энэ нь юу вэ гэхээр бүх юм хэтэрхий хэрэглэгчид хялбар болоод ирэхээр доод цөм ойлголт, үндсэн зарчмаа мэддэг хүн байхгүй болоод байна.
Өнөөдөр хаана ч ялгаагүй ихэнх систем админууд интернетээс жор хуулж бичээд өвчтөнд өгчихдөг эмийн санч шиг болжээ. Тухайн үед гарсан асуудлыг “гал унтраах” зарчмаар зогсоогоод л асуудлынхаа үндэс суурийг ойлгохгүй, цаашаа яаж хамгаалахаа мэдэхгүй байна. Кодерууд ч ялгаагүй, бичсэн код нь юун дээр ажиллахыг тооцдог хүн тун цөөхөн байх шиг. Угтаа МТ –ийн хүн эмч шиг л асуудлын ул суурийг сайн мэддэг, үндэслэлтэйгээр асуудалд ханддаг байх шаардлагатай юм. Үүнээс улбаалж буй гол асуудал бол бид өөрсдөө машиныхаа боол нь болох, биднээс машины түвшинд арай илүү дээр мэдлэгтэй нэгэнд хакдуулах нүх сүвээ өөрсдөө бэлддэгт байгаа юм” гэж билээ.
Надад лав их бодитой санагдсан. Учир нь Монголд  дөнгөж сургууль төгссөн байтугай салбартаа нэлээн хэдэн жил ажиллачихсан нөхдүүд бичиж байгаа кодныхоо цаад учрыг олоогүй зүгээр ажиллаж байна гээд суугаад байдаг нь Холливуудын киноноос баахан хараал сурчихаад өөрийгөө Англи хэлтэй хүн гэж бодоод байдагтай ижил санагддаг. Энд тухайн хүний буруу гэхээсээ системийн буруу их байгаа болов уу. Нэг л их .NET, visual орчинд програмчлал заасаар байгаад оюутан маань машинаасаа хэт хөндийрөөд байх шиг. Их сургуульд хэтэрхий их онол үзээд байна гэж шүүмжлээд байдаг, гэхдээ үндсэн концепцоо оюутан ч багш ч ойлгохгүй, заана гэж илэх төдий болоод өнгөрдөг асуудал их бий.
Мань хөгшин сисадмины ярьж байсан бас нэгэн жишээ гэвэл: “Саяхан хэдхэн жилийн өмнө нэлээн мундаг авъяастай гэгддэг кодер хийсэн програмаа сервер дээр тавиадах гээд өгсөн. Би SELinux –ийн журмуудаа кодонд нь зориулж өөрчлөх гээд удаад байсан чинь яараад байна хурдан ажилуулаадах SELinux –ээ унтраа гэсээр байгаад тавиулчихлаа. Маргааш өглөө нь ажилдаа ирэхэд нэг хүн аль хэзээний мань хүний кодноос олсон алдаагаар дамжиж процессийг нь эзэлж аваад /tmp дүүргээд buffer overflow болгочихсон байж билээ. Тэрнээс хойш би хашраад ямар ч “мундаг” кодерын үгэнд итгэхээ байсандаа”
Энд дурьдсан шиг 64K –д багтааж 3D анимэйшнь ассемблер дээр бичих ч яах вэ. Гэхдээ ядаж аюулгүй байдлын сертификат гэдэг нь бичиж байгаа кодны чинь алдаатай ямар ч хамаа байхгүй зүйл шүү гэдгийг их сургууль төгсөж байгаа нөхдөд жаахан ойлгуулмаар. 
Ассемблер дээр бичсэн 3D видео. Нийт кодны хэмжээ нь 64K

No comments: