Projekt TrapC arendab C-laadset keelt, mis töötab turvaliselt mÀlu osas.

Start-up Trasec arendab programmeerimiskeelt TrapC, mis on C keele dialekt, tagades mĂ€luga turvalise töö. TrapC-s kasutatakse mĂ€luprogrammeerimise vigade, nagu mĂ€lulehtrist vĂ€lja minemine ja juba vabastatud mĂ€lule viitamine, blokeerimiseks tĂ€iesti erinevat lĂ€henemist pointers’ile ning erilisi eksimuste pĂŒĂŒdmismehhanisme, mis pĂ”hinevad erandihalduritel (trap). TrapC kompilaatori lĂ€htekood avatakse plaanide kohaselt 2025. aastal.

On vĂ€idetud, et pointeritega töötamise spetsiifika ei riku vĂ”imalikult palju traditsioonilist toimimist ning selle rakendamine toimub kompilaatori abil. Keele autorite idee kohaselt tagab kompilaator, et pointerid viitavad ainult oma seotud mĂ€lupiirkondadele ning kontrollib kĂ”iki puhverpiire. Kompilaator mĂ€letab tĂŒĂŒpe ja ei luba ebaturvalist tĂŒĂŒpide edasiviimist. KĂ”ik loodud muutujad ja puhvrid initsialiseeritakse selgelt vĂ”i tĂ€idetakse kompilaatori poolt nullidega.

TrapC-s kasutatakse malloc asemel C++-le sarnast new-konstruktorit. Vabastamise korraldeid free ja delete ei eksisteeri ning mĂ€lu vabastamise eest vastutab kompilaator, mis kaitseb mĂ€luleketest tulenevate vigade eest. MĂ€lu kasutatakse inkrementaalse automaatse haldamisega, kuid prĂŒgikoguja puudub. ABI tasandil on TrapC ĂŒhilduv C-ga, vĂ”imaldades kombineerida ĂŒhes rakenduses TrapC ja puhtast C koodi, kuid C koodi jaoks ei tagata mĂ€lu ohutust.

Projekti juhib Robin Rowe, endine arvutiteaduse professor, kes osales C ja C++ standardite arendamise komiteedes. Ta lÔi grafika redaktori Cinepaint, mida kasutati mitmete Hollywoodi filmide loomisel, ning POSIX-i teegi libunistd Windowsile. EttevÔtte Trasec kaasasutaja on Gabrielle Pantera, kes töötas juhatuses Disney-s.

Projektist pole veel details, nĂ€idatud on vaid mĂ”ned koodinĂ€ited, kus nĂ€iteks vĂ€idetakse, et TrapC ei lase bufferit buff ĂŒletada, kui kĂ€ivitada „strcpy(buff, argv[1]);” vĂ”i ei lase suunajal vĂ”i massiivi indeksil suureneda vÀÀrtusel, mis nihkub selle eraldatud mĂ€lust vĂ”i massiivi lĂ”pust kaugemale. Kuidas sellist kaitset saavutatakse, ei selgitata. // darpa_tractor.c int main(int argc, char* argv[]) { char buff[8]; // TrapC nullib automaatselt, ei ole rĂ€past mĂ€lu int success = 0; // C keeles rikub bufferi ĂŒletamine successi strcpy(buff, argv[1]); // TrapC ei saa ĂŒletada, strcpy on turvaline if (!strcmp(buff, "s3cr8tpw")) { success = 1; } if (success) // TrapC blokeeris strcpy ĂŒletamise, success on hea { printf("Tere tulemast!\n"); } return !success; } // trapc_ptr.c int main() { const char* ptr = "Hello World"; // 12 tĂ€hemĂ€rki laius while (ptr) // TrapC-ga ei toimu bufferi ĂŒletamist { printf("%c", *ptr); // trĂŒki ĂŒks tĂ€ht korraga ptr++; // astub lĂ”pust vĂ€lja: TrapC nullib ptr-i! } // Ära proovi seda C-s, pĂ”hjustab segfaulti! assert(ptr == 0); return 0; } // trapc_array.c int score[10]; printf("%i", score[-1]); // TrapC ei luba juurde pÀÀseda for(int i = 0; i

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster