Gibuksan sa Microsoft ang CHERIoT, usa ka Solusyon sa Hardware aron Mapauswag ang Seguridad sa C Code

Nadiskobrehan sa Microsoft ang mga kalamboan nga may kalabotan sa CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things) nga proyekto, nga nagtumong sa pagbabag sa mga problema sa seguridad sa kasamtangan nga code sa C ug C++. Nagtanyag ang CHERIoT og solusyon nga nagtugot kanimo sa pagpanalipod sa mga naglungtad nga C/C++ nga mga codebase nga dili kinahanglan nga i-rework kini. Gipatuman ang proteksyon pinaagi sa paggamit sa usa ka giusab nga compiler nga naggamit sa usa ka espesyal nga gipalapdan nga set sa mga instruksiyon sa processor (ISA), nga gihatag sa processor ug sa lebel sa hardware nga pag-monitor sa memorya, pagsusi sa pagkahusto sa trabaho uban sa mga pointer ug pagsiguro sa pagkahimulag sa mga bloke sa code.

Ang proyekto gimugna uban ang usa ka mata sa kamatuoran nga ang ubos nga lebel nga kinaiya sa C nga pinulongan nahimong tinubdan sa mga kasaypanan sa diha nga nagtrabaho uban sa panumduman, nga mosangpot sa mga problema sama sa buffer overflows, pag-access sa napagawas na nga memorya, pointer dereferences, o double frees . Gipakita sa praktis nga bisan ang dagkong mga korporasyon sama sa Google ug Microsoft, nga adunay estrikto nga pagbag-o sa palisiya sa pagrepaso ug naggamit sa modernong mga pamaagi sa pag-uswag ug static nga mga himan sa pag-analisa, dili makagarantiya sa pagkawala sa mga sayup kung nagtrabaho uban ang memorya (pananglitan, mga 70% sa mga kahuyangan sa Microsoft ug ang Google gipahinabo sa dili luwas nga pagdumala sa memorya).

Masulbad ang problema pinaagi sa paggamit sa mga programming language nga naggarantiya sa luwas nga operasyon nga adunay memorya, o mga pagbugkos nga adunay dugang nga mga tseke, pananglitan, pinaagi sa paggamit imbis sa ordinaryong mga pointer sama sa MiraclePtr (raw_ptr), nga naghimo og dugang nga mga pagsusi alang sa pag-access sa mga lugar nga gilibre nga memorya. Apan ang ingon nga mga pamaagi mas angay alang sa bag-ong code, ug ang pag-rework sa kasamtangan nga mga proyekto sa C/C++ medyo problemado, labi na kung kini gidisenyo nga modagan sa mga palibot nga gipugngan sa kapanguhaan, sama sa mga naka-embed nga sistema ug mga aparato sa Internet of Things.

Ang mga sangkap sa hardware sa CHERIoT gidesinyo isip microcontroller base sa RISC-V nga arkitektura, nga nagpatuman sa giprotektahan nga CHERI (Capability Hardware Extension to RISC-V) nga arkitektura sa processor, nga naghatag ug modelo sa kontroladong memory access base sa "kapabilidad" (matag pagbasa ug pagsulat. gitugutan ang operasyon sa memorya). Pinasikad sa instruction set architecture (ISA) nga gihatag sa CHERIoT, usa ka software nga modelo ang gitukod nga naggarantiya sa kaluwasan sa pagtrabaho uban ang memorya sa lebel sa tagsa-tagsa nga mga butang, naghatag og panalipod batok sa access sa napagawas na nga memorya, ug nagpatuman sa usa ka gaan nga memory access isolation system. . Ang espesipikong modelo sa pagpanalipod sa software direkta nga gipakita sa modelo sa C/C++ nga lengguwahe, nga nagtugot niini nga gamiton aron mapanalipdan ang mga naa na nga aplikasyon (kinahanglan ra ang pag-recompile ug pagdagan sa mga kagamitan nga nagsuporta sa ISA CHERIoT).

Ang gisugyot nga solusyon nagtugot kanimo sa pag-block sa mga sayup nga hinungdan sa usa ka butang nga molapas sa mga utlanan sa memorya, wala magtugot sa pagpuli sa pointer (ang tanan nga mga pointer kinahanglan nga mamugna gikan sa mga kasamtangan nga mga pointer), ug pag-monitor sa pag-access sa memorya pagkahuman sa pagpalaya (bisan unsang pag-access sa memorya gamit ang sayup pointer o usa ka pointer nga nagtumong sa usa ka libre nga butang moresulta sa usa ka eksepsiyon nga gilabay). Pananglitan, ang paggamit sa CHERIoT nagtugot kanimo sa pag-implementar sa awtomatik nga pagsusi sa mga utlanan, pagsubay sa tibuok kinabuhi sa memorya, ug pagpatuman sa integridad sa pointer sa mga sangkap nga nagdumala sa dili kasaligan nga datos nga wala magkinahanglan og bisan unsang mga pagbag-o sa code.

Ang proyekto naglakip sa usa ka espesipikasyon sa gipalawig nga CHERIoT instruction set architecture, usa ka reference nga pagpatuman sa 32-bit RISC-V CPU nga nagsuporta sa CHERIoT ISA, ug usa ka giusab nga LLVM toolkit. Ang CPU prototype diagram ug hardware block descriptions sa Verilog gipang-apod-apod ubos sa Apache 2.0 nga lisensya. Ang Ibex core gikan sa lowRISC nga proyekto gigamit isip basehan sa CPU. Ang modelo sa code sa CHERIoT ISA gihubit sa pinulongang Sail ug lisensyado ubos sa lisensya sa BSD.

Dugang pa, gisugyot ang usa ka prototype sa real-time nga operating system nga CHERIoT RTOS, nga naghatag kaarang sa pagbulag sa mga compartment bisan sa mga naka-embed nga sistema nga adunay 256 MB nga RAM. Ang CHERIoT RTOS code gisulat sa C++ ug giapod-apod ubos sa lisensya sa MIT. Ang sukaranan nga mga sangkap sa OS, sama sa bootloader, scheduler ug sistema sa pag-apod-apod sa memorya, gidisenyo sa porma sa mga compartment.

Ang usa ka compartment sa CHERIoT RTOS usa ka nahilit nga kombinasyon sa code ug global variables nga susama sa usa ka shared library, apan dili sama sa naulahi, kini makausab sa iyang estado (mausab) ug modagan sa usa ka bulag nga konteksto sa seguridad. Walay code gikan sa gawas ang makabalhin sa kontrol ngadto sa code sa usa ka compartment ug maka-access sa mga butang, gawas pinaagi sa pag-access sa espesyal nga gitakda nga entry point ug paggamit sa mga pointer sa mga butang nga klarong gipasa sa pagtawag sa laing compartment. Ang integridad ug kompidensyal gigarantiyahan alang sa code ug global nga mga butang sa usa ka compartment.

Source: opennet.ru

Idugang sa usa ka comment