Biz proqramçılar özümüzü tez-tez debatlarda tapırıq — C++ ilə Rust, yüksək səviyyəli və aşağı səviyyəli proqramlaşdırma. Lakin əsl problem təkcə zərif sistemlər yaratmaq deyil; zərərli kodun həmişə gizləndiyi bugünkü şəbəkə dünyasında onları qoruyur. Kodunuz nə qədər qüsursuz görünsə də, potensial təhlükələrə məhəl qoymamaq fəlakətə dəvətdir.
Təhlükəsizlik boşluqlarını düzəltmək və ya növbəti yeniləməni buraxmaq kifayət deyil. Əsl döyüş sisteminiz pozulduqda - bəli, nə vaxt, yoxsa - effektiv cavab verməkdir. Bu, proaktiv müdaxilənin aşkarlanmasının həyata keçirilməsi, müdafiə mexanizmlərinin avtomatlaşdırılması və bəzən təhlükələri mənbəyində həll etmək üçün aşağı səviyyəli proqramlaşdırma ilə əllərinizi çirkləndirmək deməkdir.
Döyüş meydanı yüksək səviyyəli məntiqdən kənara çıxaraq sistemin özəyinə qədər uzanır, burada yalnız ən bacarıqlı tərtibatçılar effektiv şəkildə mübarizə apara bilər. Bu səviyyədə hücumlara qarşı durmağa hazır deyilsinizsə, dünyanın bütün təhlükəsizlik xüsusiyyətləri sizi xilas etməyəcək. Kibertəhlükəsizlikdə cavab vermək qabiliyyəti olmayan müdafiə kifayət deyil.
Yaxşı, gəlin C ailəsi haqqında danışaq - C, C++, bütün ekipaj. Bu dillər sizə tam azadlıq verir. Siz həmyaşıdlarınızı qısqanc edəcək zərif, yüksək performanslı sistemlər qura bilərsiniz. Ancaq bunun əks tərəfi budur: eyni azadlıq sizə oradakı ən təhlükəli kodları – rootkitləri və hətta onların daha gizli əmiuşağılarını, bootkitlərini yaratmağa imkan verir. Bunlar sadəcə ətrafa yayılan zərərsiz kod xətləri deyil – onlar proqram dünyasının səssiz yırtıcılarıdır.
Beləliklə, rootkitlərlə bootkitlər arasında əsl fərq nədir?
Rootkitlər əməliyyat sisteminin daxilində işləmək üçün nəzərdə tutulmuşdur. Onlar sistem proseslərini manipulyasiya edir, zərərli fəaliyyətləri gizlədir və proqram proqramlarını düzəldir. Lakin onlar OS işə salındıqdan sonra işə başlayırlar.
But dəstləri sizə daha çox zərbə vurur. Əməliyyat sistemi hələ işə düşməmişdən əvvəl sistemə hücum edirlər. Onlar Master Boot Record (MBR) və ya UEFI/BIOS mikroproqramını yoluxduraraq, OS bu barədə bir şey edə bilməmişdən əvvəl nəzarəti ələ keçirirlər.
Çox vaxt insanların rootkit hücumu kimi düşündükləri əslində hər ikisinin birləşməsidir. Bootkitlər lap əvvəldən öz öhdəliyini götürürlər, rootkitlər isə OS işə düşdükdən sonra işə düşür və hücumun diqqətdən kənarda qalmasına imkan verir. Əsasən, bootkitlər erkən daxil olur, rootkitlər şounu davam etdirir.
İndi, yəqin ki, düşünürsünüz: “ Əgər OS guya təhlükəli C/C++/Assembly əvəzinə Rust-da kodlaşdırılıbsa, nə olacaq? ”
Burada işlər maraqlı olur. Gəlin real olaq – müasir texnologiya dünyasında biz performans və dəqiq nəzarətin tamamilə vacib olduğu mürəkkəb şəbəkələrdə bir-birinə qarışan hibrid sistemlər, şəbəkələrlə məşğul oluruq. SCADA sistemləri , HVAC nəzarətləri , real vaxt sistemləri , kənar hesablamalar , quraşdırılmış cihazları düşünün — siz fikir əldə edirsiniz. Bu mühitlərdə bir dilin nə qədər “təhlükəsiz” olduğunu iddia etməsindən asılı olmayaraq, siz hələ də bu incə dənəli nəzarət və performans üçün C/C++/Assembly-ə çox güvənirsiniz.
Sistem Rust ilə qurulmuş olsa belə, gəlin dürüst olaq – onun bir çoxu hələ də performans darboğazları, gecikmə problemləri, yaddaş məhdudiyyətləri ilə məşğul olmaq və birbaşa aparatla qarşılıqlı əlaqə yaratmaq üçün unsafe
Rust kodunun böyük hissələrindən istifadə edir. Günün sonunda, performans padşah olanda, eyni qayığa düşürsən. Rustdakı o unsafe
bloklar? Onlar C/C++/Assembly-də əldə etdiyiniz eyni zəiflikləri açır.
Reallıq belədir: avadanlıq səviyyəsində dəqiq tənzimlənmiş idarəetməyə ehtiyacınız olduqda, əməliyyat sisteminizin Rust-da və ya başqa bir şeydə kodlanmasından asılı olmayaraq, eyni sıx iplə gedirsiniz. Beləliklə, Rust bəzi qoruyucu vasitələr təklif edə bilsə də, bu aşağı səviyyəli unsafe
əməliyyatlar hələ də həssasdır. Rootkitlər və bootkitlər sizin dil seçimlərinizlə maraqlanmır - çat varsa, onlar öz yolunu tapacaqlar.
Bu rəqəmsal yırtıcılar yalnız bir sistemə yoluxmur , həm də ona sahibdirlər. Əsas odur ki, onların əksəriyyəti klassiklərdən - C, C++ və Assambleyadan istifadə etməklə qurulur. Düzdür, yüksək performanslı proqramlarınızı gücləndirən eyni dillər indiyə qədər yaradılmış ən pis rootkitlərin arxasında da dayanır.
Bir saniyə təkamül haqqında düşünün . Bu, Trias dövrünün kiçik, ətyeyən dinozavrlarından T-Reks kimi Təbaşir dövrünün qüdrətli teropod canavarlarına səyahətə bənzəyir. Erkən dinosların zirvə yırtıcılarına çevrildiyi kimi, rootkitlər də nisbətən “şirin” başlanğıclardan bugünkü dəhşətli kod behemotlarına çevrildi.
Məsələn, Hacker Defender-i götürək – bu kiçik kiber-sürünən əsas OS boşluqlarından istifadə edərək cəmi 3K kod xətti idi. Ancaq hər hansı bir yaxşı yırtıcı kimi, təkamül etdi. Bugünkü rootkitlər canavarlardır, hər biri minlərlə kod sətirindən ibarət modullara bölünərək təkcə əməliyyat sistemlərini deyil, həm də aparat səviyyəli zəiflikləri hədəfləyir. Bu silahlanma yarışıdır, hər yeni rootkit mümkün olanın sərhədlərini itələyir.
Beləliklə, bu məqalədə biz iki hekayəyə dalırıq . Birincisi? Rəsmi versiyanı Alexander Matrosov, Eugene Rodionov və Sergey Bratus tərəfindən hazırlanmış Rootkits və Bootkits kimi texnoloji resurslarda tapa bilərsiniz. Bu, demək olar ki, rootkit təkamülünün bütün incə detalları üçün əsas bələdçidir. İşinizi sizin üçün asanlaşdırmaq üçün mən aşağıda bu rootkitlərin inkişafını yekunlaşdıran kladoqramı bir araya gətirdim – hər bir filial zərərli proqramların təkmilləşdirilməsində yeni sıçrayışı təmsil edir.
Bundan sonra, hər bir rootkitin unikal xüsusiyyətlərini vurğulayan cədvəl tapa bilərsiniz. Mənə inanın, bu kod bitlərinin kiçik, fürsətçi müdaxilələrdən sistemə hakim heyvanlara necə çevrildiyini görmək istəyəcəksiniz.
Budur, gedirik
Ancaq bu hekayənin başqa bir tərəfi də var - sadəcə rootkitlər yazmayan, həm də onları yaşayan və nəfəs alan birinin görünüşü. Əsas xarakterimizlə tanış olun: rootkitləri özünün uzantıları kimi görən haker — pozmaq və hökmranlıq etmək üçün diqqətlə hazırlanmış kod simfoniyası. O, sadəcə olaraq hər hansı bir haker deyil; o, əfsanədir, yalnız Kərtənkələ Sehrbaz kimi tanınan yüksək səviyyəli beyindir.
Onun nöqteyi-nəzərindən bu, təkcə texnologiya və ya kodla bağlı deyil - güc, nəzarət və bəlkə də sənətkarlıq toxunuşu haqqındadır. Onun fikrincə, rootkitlər sadəcə alətlər deyil; onlar şah əsərlərdir, onun rəqəmsal dünyanı yenidən formalaşdırmaq yoludur.
Beləliklə, daha çox uzatmadan, icazə verin sizi adamın özü ilə - Kərtənkələ-Sehirbazla, öz sözləri ilə tanış edim:
Sehrbaz kərtənkələ yuxularda danışır: Mənim şah əsərlərim
“Ah, sən hələ də buradasan. Düşündüm ki, sən, Benisio, mənim əllərimdə oynadığını başa düşməyinə nə qədər vaxt lazım olacaq? Siz kiçik Rustunuza və onun təhlükəsizlik şəbəkələrinə heyran olsanız da , mən daha çox... incə bir şey üzərində işləyirəm.”
“Zərif. Bu, ehtimal ki, zərərli proqram təminatı ilə əlaqələndirmədiyiniz bir sözdür, lakin bu, hücumun arxasındakı sənəti qiymətləndirmək üçün kiçik sistemlərinizi qorumaq üçün çox sarılmış olmağınızdır. Bəli, sənət. Sizcə mən sadəcə hakerəm? Xeyr, yox — mən memar, yaradıcıyam. İndiyə qədər öyrəndiyim hər bir rootkit xaosun kətanına çəkdiyim möhtəşəm portretin fırça vuruşu olub”.
Sehrbaz kərtənkələ davam edir:
“Bilirsiniz, hətta böyüklər - Da Vinçi, Van Qoq, Bax - hamısı özlərindən əvvəlki ustadlardan öyrəniblər. Mən? Məndə Hacker Defender və Rustock var idi. Hacker Defender mənim Houdinim idi, mənə kodu sistemlərə necə köçürməyi, faylları və prosesləri sehrli kimi yox etməmi göstərirdi. Bəs Rustok? Bu, mənim Pikasso anım idi - polimorfizm ən gözəl şəkildə, daim dəyişən, təkamül edən, hər dəfə ona baxanda şəklini dəyişən bir şəkil kimi formasını dəyişir.
“Amma bunlar? Onlar sadəcə yarada biləcəyimi bildiyim şeyə daş atırdılar. Sonra Alureon gəldi. O, sadəcə sistemdə yerləşməyib – o, əsas yüklənmə rekordunu (MBR) vuraraq, nüvəyə həkk olunub. Bu, sabit diskinizin ilk sektorudur, OS-yə hətta yükləməyə necə başlamaq lazım olduğunu izah edən hissədir. Bu cür nəzarətin nə olduğunu bilirsən, Benicio? ilahi. Bu, Raxmaninovun İkinci Konsertini ilk dəfə eşitmək kimidir. Saf gözəllik, lakin kodla həkk olunub”.
“Və yenə də razı qalmadım. ZeroAccess mənim simfoniyam idi. O, bir ordu qurdu, maşınları həmyaşıd botnetə çevirdi, hər yoluxmuş sistem xaotik şah əsərində öz rolunu oynayır. Bu, artıq yalnız bir infeksiya haqqında deyildi; şəbəkədə xaosun aparılması haqqında idi. Bu, sən çatışmırsan, Benisio. Siz Rustun harmoniyasının arxasınca qaçırsınız, əsl sənət isə dissonansda - şah əsəri doğuran xaosdadır."
“Və nəhayət LoJax və MoonBounce gəldi. Bunlar sadəcə rootkitlər deyildi - onlar zərərli proqramların ola biləcəyi sərhədləri itələyərək təkamüllər idi. UEFI-nin dərinliyinə daxil edilmiş LoJax, hətta sevdiyiniz Rustın da toxuna bilməyəcəyi səviyyədə idarə olunan sistemlər. MoonBounce bunu daha da irəli apardı, SPI flash yaddaşına dalaraq, heç bir antivirus və ya sistem silinməsinin çata bilməyəcəyi yerdə gizləndi. O, sadəcə olaraq sistemdə gizlənmirdi - o, silikona həkk olunmuş Mikelancelo freskası kimi daimi və toxunulmaz qurğunun bir hissəsinə çevrildi.
“O zaman mən əsl həqiqəti başa düşdüm: idarəetmə CPU və ya ƏS-də deyil. Əsl nəzarət aparatdadır. Mən şah əsərlərimi burada hazırladım”.
“ Kərtənkələ-Mavi və Kərtənkələ-Qırmızıya daxil olun – mənim Sistine Şapelim rootkitlər. Onların necə doğulduğunu bilirsən, Benisio? Mən sizə deyəcəm, çünki səndən üstün olan dahini anlamalısan”.
“Kərtənkələ-Mavi sizin üçün hazırlanmışdır. Siz, təhlükəsizlik zəmanətləri ilə Rustunuzla fəxr edirsiniz. Kərtənkələ-Mavi təhlükəli bloklarınız arasında rəqs etdi, çoxillikliliyi xaosa atdı, I/O sistemlərinizi pozdu – bunların hamısı diqqətinizi yayındırmaq üçün. Bu axmaq yoldaşı idi: sadə və zərif. Siz Kərtənkələ-Mavini qovmağa can atarkən, mənim əsl şah əsərim Kərtənkələ-Qırmızı artıq kök salmışdı.
“ Lakin Lizard-Red sizin CPU və ya proqram təminatınıza əhəmiyyət vermədi . Xeyr, o, birbaşa SPI fləş yaddaşına getdi, DMA kontrollerlərinizə daxil oldu və sisteminizi içəridən səssizcə yenidən yazdı. Gizli bir simfoniya kimi, görünməyən, yenidən yazılan proqram təminatında ifa edirdi, dayandırıla bilməz”.
“Bu, əsl nəzarətdir, Benisio. Siz proqram təminatını yamaqlarla məşğul olarkən, mən aparatı mənimsədim. Mənə deyin, niyə Rust üçün C++-dan imtina etdiniz? Rust... o qədər ümidverici, o qədər təhlükəsiz. Ancaq unutmayın, Benicio, əsl güc təhlükəsizlikdən gəlmir. Nəzarətdən gəlir. İndi isə bunu heç vaxt unutmayacaqsan”.
Səhnə qurulub. Ən yüksək səviyyəli C++ ustası ilə Rust-a üz tutan C++ reneqat ordusu arasında qarşıdurma LuxCity-də alovlanmaq üzrədir – və ya daha da pisi, onu qaranlığa qərq etmək. Bu paylar? Tam nəzarət - təkcə kod deyil, həm də bu metropolu canlı saxlayan infrastruktur.
Enerji ilə vızıldayan şəhər döyüş meydanına çevrilmək üzrədir. Rust-güclü müdafiəsi ilə möhkəmləndirilmiş Benicio, heç vaxt gəlmədiyi bir problemlə üzləşir - C++ ustası Kərtənkələ Sehirbazın özü tərəfindən hazırlanmış bir çağırış, bu dönük Rustaceanları geri qaytarmağa qərar verdi. İki qüvvə, iki fəlsəfə, toqquşma yolunda . Ancaq bu, sadəcə proqramlaşdırma dilləri ilə bağlı deyil – bu, sistemlərə, güclərə və bəlkə də proqramlaşdırmanın gələcəyinə nəzarət uğrunda mübarizədir, lənətə gəlsin!
LuxCity sadəcə bir metropol deyildi - bu, sabahın necə görünə biləcəyinin simvolu idi. Onun küçələri avtonom nəqliyyat vasitələri ilə uğuldayırdı və səma yuxarıdan nəqliyyatı idarə edən ağıllı dronlarla canlı idi. Lakin bütün bu tərəqqinin altında şəhərin əsl qanı dayanır: ağıllı şəbəkə – hər şeyin rəvan işləməsini təmin edən mürəkkəb, mürəkkəb bir sistemdir.
Şəhərin hündürlüyündə nəzarət otağında, şəbəkənin təcrübəli veteranları olan Alice və Bob monitorlarında baş verən xaosa baxırdılar. İlk qaralma kiçik bir nasazlıq kimi görünürdü - onların öhdəsindən gələ biləcəkləri bir şey. Amma yayıldı, rayon ardınca qaranlığa qərq oldu. Güc nəzarətsiz şəkildə titrəyirdi və hər yenidən yükləmə ilə işlər daha da pisləşirdi. Siqnallar çaldı və monitorlar hələ aşkar etmədikləri daha dərin, gizli böhran barədə xəbərdarlıqlar verdi.
Onların köməyə ehtiyacı var idi. Onlara Benisio lazım idi.
Benisio gələndə o, təkcə laptopu ilə silahlanmış deyildi; yox, o, daha qiymətli bir şey daşıyırdı: Rusta sarsılmaz inamı - son beş ildə şiddətlə müdafiə etdiyi dil. Məhz Rustla birlikdə o və Rustacean mühəndislərindən ibarət komandası LuxCity SmartGrid-in nüvəsini inkişaf etdirdi. Pas onun qılıncı, qalxanı, onu C++ dəhşətlərindən xilas etməyi vəd edən yeni parlaq oyuncaq idi – bufer daşqınları, yarış şərtləri, həmişə qorxulu “Free-Free” istismarı. Pas bütün bunların cavabı idi, elə deyilmi? Gələcək, ya da o inanırdı. Axı LuxCity-nin şəbəkəsi bu guya qırılmaz təməl üzərində qurulub.
Amma ironiya? Bu sarsılmaz inam sınanmaq üzrə idi və bəlkə də - bəlkə də - C++ Benicionun düşündüyü kimi köhnəlməmişdi.
Benicio sistemin özəyinə girən kimi dərhal nəyinsə səhv olduğunu anladı. SmartGrid-in idarəetmə sisteminin hər bir sıfırlanması ilə, işıqlandırma daha da yayıldı - şəhərin kənarından içəriyə doğru LuxCity-nin mərkəzinə doğru hərəkət etdi. Bu təsadüfi deyildi; bu qəsdən idi, onun gözləri önündə açılan nümunə, yaxşı əlaqələndirilmiş və hesablanmış hücum idi. Ürəyi sıxıldı. Bu sadəcə bir nasazlıq deyildi - bu, canlı və inkişaf edən bir rootkit idi.
İmza şübhəsiz idi.
Bu, Kərtənkələ-Sehirbaz kimi tanınan Yanus idi - Benisionun köhnə dostu düşmənə çevrildi. Bir dəfə C++ dilinin sonsuz imkanlarını araşdıraraq birlikdə kod yazmışdılar. Lakin Janus Rustun sərt təhlükəsizlik şəbəkələrinə və abstraksiyalarına istehza etdi. İndi Janus, Rustda Benicio tərəfindən kodlaşdırılan ən böyük SmartGrid-in beynini və bağırsaqlarını hədəfə alaraq, şəhərin infrastrukturunu bir kukla ustası kimi idarə edərək, C++-ın xam, əhli olmayan gücündən istifadə etdi.
LuxCity-dən çox aşağıda, həyatla zümzümə edən server rəflərinin sönük parıltısında Janus öz ustad işinin açılmasına tamaşa etdi. Barmaqları sürətlə klaviatura üzərində hərəkət etdi, gözləri iti və diqqətini cəmləşdirdi, o, titrəyən ekranlarda dağılan xaosu izlədi. Onun iki ən yaxşı yaradıcılığı oyunda idi: Kərtənkələ-Qırmızı və Kərtənkələ-Mavi , hər biri müxtəlif cəbhələrdən hücum edir, lakin mükəmməl harmoniyada işləyir.
Kərtənkələ-Qırmızı artıq şəhərin ağıllı şəbəkəsinin nüvəsində idi - mükəmməl səssiz işğalçı. Bu, adi proqram təminatının zəif nöqtələrini vuran bəzi adi zərərverici proqram deyildi. Xeyr, Lizard-Red ən dərin təməlləri hədəf alan mikro proqram rootkiti idi: DMA nəzarətçiləri, SPI flash yaddaşı və kəsmə idarəçiləri . O, Rustun diqqətlə hazırlanmış təhlükəsizlik mexanizmlərinin altından sürüşərək, nəzərə çarpmadan sistemdən keçdi. Nə üçün CPU və ya yaddaş buferlərinə hücum etməkdən narahat olursunuz? Kərtənkələ-Qırmızı onları tamamilə yan keçərək, Rust zəmanətlərinin heç bir təsir göstərmədiyi proqram təminatına daxil oldu.
Janus Rustun güman edilən təhlükəsizliyinin sərhədlərini əlinin içi kimi bilirdi - onu parçalamaq üçün illər sərf etmişdi. Rust, bütün parlaqlığına baxmayaraq, aparat təbəqəsinə gəldikdə qısa müddətdə dayandı . Kərtənkələ-Qırmızı çiçəkləndiyi yerdir. Bu, sadəcə koda hücum deyildi; bu, avadanlığın özünün düşməncəsinə ələ keçirilməsi idi.
Bu vaxt, Lizard-Blue yüksək səviyyəli proqram təminatı tərəfdən təxribat törədirdi . O, birbaşa hücum etmədi, lakin xaos simfoniyasını aparan maestro kimi Rustun təhlükəli bloklarından istifadə edərək mükəmməl hiylə rolunu oynadı. O, çox iş parçacığı xidmətlərini hədəfə aldı, I/O əməliyyatlarını bükdü və Rustun performans səbəbi ilə ehtiyatla gevşetdiyi yarış şərtlərini məcbur edərək fəlakətə səbəb oldu. Bu təhlükəli zonalar Benicionun diqqətlə qurulmuş müdafiələrində aralıq qalmış qapılara bənzəyirdi və C++ dilinin keçmiş ustası olan Yanus onları necə açmaq lazım olduğunu dəqiq bilirdi. Rustun çox təhlükəsizlik modeli, Benicioya güvən verən şey, Kərtənkələ-Mavi bu zəmanətləri zəif tərəflərə çevirdiyi üçün onun süqutu oldu.
Yanus gizli yuvasından gülümsədi. Benisionun Rusta olan inamı az qaldı. Bu, sadəcə texnoloji hücum deyildi; nəzarət sənətində bir dərs idi.
İdarəetmə otağında Benisio cəsarətlə döyüşürdü, barmaqları fikirlərindən daha sürətli hərəkət edirdi. O, Kərtənkələ Sehrbazın kodu ilə toxunmuş amansız xaosa qarşı Rustun ciddi təhlükəsizlik torları ilə mübarizə apararkən hər düyməni basmaq ürək döyüntüsü kimi hiss edirdi - sabit, lakin çıxılmaz -. Benicio Rustun təhlükəsizlik modelini mənimsəmişdi, onun qorunmasına arxayın idi, lakin Kərtənkələ-Mavi cərrahi dəqiqliklə CPU-nu cırırdı. Yarış şərtləri və giriş/çıxış uğursuzluqları ekranlarda baş verdi. Benicio hər dəfə üstün olduğunu düşünəndə hücum dəyişdi - formasını dəyişdi, qapının altından sürüşən kölgə kimi müdafiəni sürüşdürdü.
Rust davam edə bilmədi. Bir vaxtlar Benicionun Rust haqqında çox sevdiyi şey - onun sərt təhlükəsizlik şəbəkəsi - indi nəzarəti bərpa etmək qabiliyyətini boğurdu. Hər bir qoruyucu bir qəfəsə çevrildi, onun hərəkətlərini məhdudlaşdırdı, onu maye, amansız hücuma qarşı qısa olan sonsuz müdafiə yamaqlarının içində tələyə saldı.
Lakin döyüş sənətində təcrübəli olan Benisio bilirdi ki, bu, sadəcə olaraq, təxribatdır.
Əsl təhlükə monitorlar arasında Kərtənkələ-Mavi rəqsi deyildi. Səthin çox altında, LuxCity-nin ağıllı şəbəkəsinin damarlarının dərinliklərində olan Lizard-Red artıq nəzarəti ələ keçirmişdi. Artıq Rustun müdafiəsinin yuxarı qatlarında oynamırdı. O, SCADA kimi kritik sistemlərə və şəhərin əsas infrastrukturuna nəzarət edən HVAC sistemlərinə sızmaq üçün mikroproqram implantlarından istifadə edərək dərin qazmışdı . Bunlar texniki vasitələrin proqram təminatı ilə qarşılaşdığı sistemlər idi - burada texniki xidmət və son nəzarət cihazlarının əksəriyyəti xüsusi proqram təminatı ilə işləyirdi, onların əksəriyyəti hələ də C və Assambleyanın mirası ilə işləyir.
DMA nəzarətçiləri və SPI fləş yaddaşı pozulub. Kərtənkələ-Qırmızı əməliyyat sisteminin altındakı aparata daxil edərək CPU-dan tamamilə yan keçdi . O, infrastrukturun can damarını hədəfləyirdi - kritik əməliyyatlara nəzarət edən SCADA sistemləri və şəhərin avadanlıqlarının qüsursuz işləməsini təmin edən HVAC sistemləri. Bu implantlar sadəcə sadə kod deyildi - onlar daimi idi, cərrahi yolla mikroproqramın içərisinə yerləşdirilir, sistemin qaydalarını içəridən yenidən yazır.
Rust yaddaş modeli - proqram təminatını qorumaq üçün qurulmuşdur - burada heç nə demək deyildi. Bu, proqram səviyyəsində müharibə idi, Rustun müdafiəsi yaxşı qurulmuş qala divarına bənzəyirdi, lakin təcavüzkarlar artıq darvazaların içərisində idilər və aparatla birbaşa manipulyasiya edirdilər.
Janus başqalarının edə biləcəyini etdi: o, aparatdakı zəif yerlərdən istifadə etdi - Rust heç vaxt qorumaq üçün nəzərdə tutulmadığı yerləri. Yalnız çılpaq metal, C++ və Assambleyanın hökm sürdüyü yerlər. Benisio üstün idi və dərindən bunu bilirdi.
Benisio yumruğunu konsola vurdu. Rust onun müqəddəs qeybəti idi, indi LuxCity-i udmaq təhlükəsi ilə üzləşən xaosdan qorumaq üçün etibar etdiyi dil idi. O, bütün zəiflikləri silmək vədinə inanırdı. Amma indi, şəhər dağılmaq üzrəykən, soyuq bir anlayış onu vurdu: Pas kifayət etmədi.
O, parlayan ekrana baxdı, gözləri iş masasında “Köhnə C++ Alətləri” etiketli köhnə qovluğa zilləndi. Beş il - o qovluqdakı hər şeyə sonuncu dəfə toxunmasından beş il keçmişdi. O, geri dönməyəcəyinə and içmişdi. Ona ehtiyac olmazdı. Rust gələcək idi, onun C++ təhlükələrindən və dəyişkənliyindən qaçması idi. Ancaq indi, şəhərin işıqları bir-bir sönəndə o, bilirdi ki, Rustun çox sərtliyi - bir zamanlar onun qalxanı olan təhlükəsizlik - qəfəsə çevrilib. Bu cür təhlükəyə cavab vermək çox çevik idi.
LuxCity-yə edilən hücumlar amansız idi və onlar sadəcə rəqəmsal deyildi - onlar Rustun keçə bilmədiyi ən hardware, proqram təminatı səviyyəsində dərinliklərə zərbə vururdular. O, indi həqiqəti bilirdi: bu mübarizə təkcə Rust-a qarşı C++ ilə bağlı deyildi. Bu güclə bağlı idi. Və C++? C++, Kərtənkələ-Qırmızının özünə yerləşdirdiyi proqram təminatının dərinliyinə, Rustun edə bilmədiyi yerə çatmaq üçün xam, əhli olmayan gücə malik idi.
Əli titrəyərək siçanın üzərində gəzirdi. Bu qovluğu açmaq qədim, təhlükəli bir silaha əl atmaq kimi idi - yaxşı olduğu qədər zərər də verə bilər. Bir səhv hərəkət və LuxCity əbədi olaraq yox olacaqdı. Lakin bunsuz, C++-ın xaos və kobud qüvvəsi olmadan, ona qarşı mübarizə aparmaq mümkün deyildi.
Benisio ürək ağrısı ilə qovluğu tıkladı. Köhnə alətlərinin tanış görünüşü onu qarşıladı və o an anladı ki, bu döyüşdə təhlükəsizlik və ehtiyatla qalib gəlmək olmaz. Bu risk olardı.
Şəhər xaosa daha da qərq olduqca və SmartGrid dağılmaq ərəfəsindəykən, Benicionun ekranında bildiriş yanıb-söndü. Janusdan idi . Benisionun ürəyi döyünürdü - indi nə olacaq? Ancaq daha çox təlaş əvəzinə, mesaj bir həyat xətti tutdu. Janus LuxCity-ni tamamilə məhv etmək üçün orada deyildi - hələ yox. O, gözlənilməz bir şeylə əlini uzatmışdı: siyahı. Hər pozulmuş xidmətin, hər bir təhlükəyə məruz qalmış prosesin və ən əsası, onları izləmək üçün kodların ətraflı təsviri.
Benisio tərəddüd etdi, köhnə dostuna güvənməkdən əmin deyildi. Ancaq şübhə etməyə vaxt yox idi. LuxCity-nin gələcəyi tarazlıqda olduğundan onun köməyi qəbul etməkdən başqa çarəsi yox idi. Köhnə C++ alətləri olan faylı açmadan əvvəl onun əli bir anlıq siçanın üzərində gəzdi.
Titrəyən əlləri ilə Benisio yazmağa başladı. Bir vaxtlar tanış olan C++ sintaksisi ikinci təbiət kimi onun içindən keçdi, əzələ yaddaşı illərlə işə düşdü. O, əks tədbirlər görməyə başladı, onları Rustun infrastrukturuna daxil etdi, Janusun buraxdığı xaosu düzəltmək üçün proqram təminatından keçirdi. Rust-un sərt quruluşu onu proqram təminatı səviyyəsindəki hücuma qarşı aciz qoydu, lakin C++ indi onun qılınc və qalxanı idi. O, Rustun təhlükəsizlik şəbəkələrindən yan keçərək birbaşa həssas avadanlıqlara daxil oldu, DMA sorğularını və SPI yaddaş pozğunluqlarını bir-bir düzəltdi.
İdarəetmə otağında hava gərgin idi. Elis və Bob baxırdılar, gözləri şəbəkədəki sönən işıqlar və Benisionun ekranını dolduran kod sətirləri arasında titrəyirdi. Vaxt daralırdı.
Hər düyməni basmaqla, Benicio iki kərtənkələ rənginin sahibi Janusun verdiyi ipuçlarını - kodlar və güzəşt edilmiş xidmətlərin yol xəritəsini rəhbər tutaraq müasir C++ gücündən istifadə edirdi. Bu köhnə riskli, xaotik C++ deyildi. Müasir C++ bu təhlükələrin çoxunu ram etmişdi: ağıllı göstəricilər, həmişəkindən daha çox ləzzət və Rustun təhlükəsizlik xüsusiyyətlərini əks etdirən, lakin daha çox çeviklik, daha çox xam güclə sahiblik modelləri. Təkmilləşdi, təkmilləşdi. Ancaq buna baxmayaraq, hər bir xətt ağırlıq daşıyırdı. Bir səhv addım yenə də fəlakət ola bilər. Bununla belə, işlədiyi müddətdə Benicio şəbəkənin hissələrinin bərpa olunduğunu, sistemin müasir C++ dəqiqliyinə cavab verdiyini hiss edirdi.
Yanus qoruyucu yandırmışdı, amma indi o, zərərsizləşdirmə kodlarını Benisioya vermişdi . İstər satınalma aktı, istərsə də son oyunda üstünlüyünü sübut etmək üçün eqoya əsaslanan bir hərəkət olsun, fərq etməzdi, Benicio düşündü. O, indi hər qərarın üzərində C++ xəyalları ilə şəhərin həyatını kodlayırdı.
Hər bir funksiya çağırışı, quraşdırılmış montajın hər bloku fəlakətin kənarında mürəkkəb rəqs idi. Lakin təhlükəli kod monadları xatırladan konstruksiyalardan istifadə edərək müasir C++ dilinə bükülmüşdü – Benisionun Haskell ilə tanış olmadığını nəzərə alaraq, Janus onu qəbul etməyə inandırmışdı . Dəqiqələr keçdikcə monitorlardakı xaos yavaşlamağa başladı.
Benisionun beyni obsesif mantranı sarsıda bilmirdi: Rust onun təhlükəsizlik şəbəkəsi idi. Bununla belə, bu anda yalnız C++ LuxCity-ni uçurumdan geri çəkmək üçün çevikliyə və xam gücə malik idi. O, qəzəblə kodlaşdırarkən, Janusun pozduğu hər bir xidməti yamaqlayanda, bir şey aydın oldu - mükəmməl bir dil yox idi, yalnız düzgün döyüş üçün düzgün vasitə.
Həmin an Benicio sadəcə LuxCity-ni xilas etmək üçün kodlaşdırma ilə məşğul deyildi; o, bir daha toxunmayacağına and içdiyi dili rəhbər tutaraq, yaradılış və məhv arasında incə xəttlə gedirdi.
Benicio LuxCity-nin kövrək sistemləri ilə mübarizə apararkən, anın ağırlığı onu təkrar-təkrar vurdu: müdafiə etdiyi dil olan Rust real dünyanın təzyiqi altında dağılırdı. Onun təhlükəsizlik zəmanətləri - arxalandığı rahat divarlar onun qəfəsinə çevrilmişdi. Yanus, Kərtənkələ Sehrbaz, Rustun qoyduğu hər sərt sərhəddən istifadə etdi - hər bir təhlükəli blok xaos üçün bir qapı oldu, hər təhlükəsiz yaddaş modeli Benicio'nun vaxtında keçə bilmədiyi maneə oldu. Rust, hər şeyi qorumaq cəhdində, şəhərin infrastrukturunu proqram təminatından kənara çıxan və aparatın özünə dərinlikdə olan hücumlara məruz qoymuşdu.
Və sonra həqiqət Benicioya bağırsaq zərbəsi kimi vurdu: Rust zəif olduğu üçün uğursuz deyildi. Bu uğursuz oldu, çünki çox güclü, çox sərt idi və Yanusun buraxdığı gözlənilməz qüvvələrə uyğunlaşa bilmirdi. Lakin C++, onun geridə qoymağa and içdiyi dil – bütün təhlükəli gücü və xaotik çevikliyi ilə – tarazlığı bərpa edə bilən yeganə silah idi. C++ sadəcə alət deyildi; bu, azadlıq, bilinməyənə dalmağa, idarəolunmazları idarə etməyə dəvət idi.
Qulaqlıq vasitəsilə Janusun səsi sükutu pozdu. Amma bu dəfə istehza və ya düşmənçilik deyildi.
"İndi görürsən, elə deyilmi?" bütün tamaşanı idarə edən maestronun sakit dəqiqliyi ilə soruşdu. " Bu heç vaxt dillərlə bağlı deyildi, Benicio. Söhbət sistemin mənimsənilməsindən gedir - hər bir təbəqə, hər bir yarıq - proqram təminatından aparata, məntiqdən tutmuş riyaziyyata qədər proqramlaşdırma şəbəkəmizin mərkəzində. ”
Janus təkcə LuxCity-ə hücum etməmişdi. O, Benisionu uçurumun kənarına itələmişdi ki, ona yalnız usta hakerin verə biləcəyi dərsi öyrətsin: əsl güc “ən təhlükəsiz” dili seçməkdə deyil, onun altındakı arxitekturaya yiyələnməkdə, uyğunlaşmaq və lazım gəldikdə qaydaları əyməkdədir. sağ qalmaq.
"Mən heç vaxt LuxCity-i məhv etmək istəmədim" deyə Janus davam etdi, səsi demək olar ki, nostalji idi. “ Mən sizə göstərmək istədim ki, Rust kimi təhlükəsizlik şəbəkələrinə güvənmək sizi yalnız proqnozlaşdırıla bilən edir. Bunu özünüz də görmüsünüz — Rust öz qaydaları ilə bağlıdır. C++… C++ sizə qaydaları yaratmağa imkan verir. Hörmət etdiyim yeganə məhdudiyyətlər mücərrəd cəbr, kateqoriya nəzəriyyəsi və dominant qrafik nəzəriyyəsinin obyektivləri ilə lütf və zərifliklə müəyyən edilmiş məhdudiyyətlərdir .”
Şəhərin dağılmaq üzrə olduğu bir vaxtda Benisio indi başa düşdü. Janus hücumu pis niyyətlə deyil, bir sınaq kimi - nəzarət, ustalıq və uyğunlaşma dərsi kimi təşkil etdi. ironiya? Yanusu məğlub etmək üçün Benisio arxa çevirdiyi dili qəbul etməli idi.
Yanus Benicioya tapmacanın son, həlledici parçasını verərək , " Budur, güzəşt edilmiş xidmətlərin son siyahısı ." Bunu bitirmək vaxtı idi, amma indi onlar birlikdə işləyirdilər - usta və tələbə, köhnə vaxtlar kimi.
Benisio yenidən koda girən kimi köhnə C++ instinktləri yenidən alovlandı. Janusun rəhbərliyi ilə o, son davamlı zərərli proqram kodlarını bir-bir hədəfə aldı, lazım olan yerdə montajı yerləşdirdi, Rustun məhdudiyyətlərini keçərək və mikroproqram səviyyəsində zərəri aradan qaldırdı. Həmişə zərif deyildi və həmişə təhlükəsiz deyildi, amma işləyirdi.
İdarə otağında hava dəyişdi. Alisa və Bob gərgin olsalar da, sistemin yavaş-yavaş stabilləşməyə başladığını izləyirdilər. Elektrik yenidən şəhərin kənarına keçdi. LuxCity-nin döyünən ürəyi olan SmartGrid, nəhayət, müqavimət göstərdi.
Benisio çətin yoldan öyrənmişdi ki, heç bir dil, nə qədər “təhlükəsiz” olsa da, əsl problem qarşısında nəzarəti təmin edə bilməz. Sonda söhbət Rust və ya C++ dilini seçməklə bağlı deyildi; bu, hər ikisini mənimsəmək, əsl döyüşün kod xətlərində deyil, onları idarə edən proqramçının şüurunda və elmində olduğunu başa düşməkdən ibarət idi .
Bu mövzu ilə bağlı daha çox məqalə və xəbərlərə daxil olmaq istəyirsiniz?
İşimi izləyə və yeniliklər, anlayışlar və eksklüziv məzmun üçün bülletenimə abunə ola bilərsiniz:
Daha çox texnoloji məlumat və xəbərlər üçün əlaqədə qalın!