Ko te whakaeke i te Trojan Source ki te whakauru i nga huringa ki te waehere e kore e kitea e te kaiwhakawhanake

Kua whakaputahia e nga kairangahau mai i te Whare Wananga o Kemureti tetahi tikanga mo te whakauru wahangu i te waehere kino ki roto i te waehere puna arotake-a-hoa. Ko te tikanga whakaeke kua whakaritea (CVE-2021-42574) ka whakaatuhia i raro i te ingoa Trojan Source me te mea i runga i te hanganga o nga tuhinga e ahua rereke ana mo te kaitoi / kaiwhakamaori me te tangata e matakitaki ana i te waehere. Ko nga tauira o te tikanga e whakaatuhia ana mo nga momo kaiwhakaiti me nga kaiwhakamaori i tukuna mo C, C++ (gcc me clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go me Python.

Ko te tikanga i ahu mai i te whakamahinga o nga tohu Unicode motuhake i roto i nga korero waehere ka huri i te raupapa whakaatu o nga tuhinga tohu-rua. Ma te awhina o nga momo mana whakahaere, ka taea te whakaatu etahi waahanga o te tuhinga mai i te maui ki te taha matau, ko etahi atu - mai i te matau ki te maui. I roto i nga mahi o ia ra, ka taea te whakamahi i nga momo mana whakahaere, hei tauira, ki te whakauru i nga rarangi waehere i te reo Hiperu, i te Arapi ranei ki roto i te konae. Engari ki te whakakotahi koe i nga raina me nga tohutohu rereke rereke i roto i te raina kotahi, ma te whakamahi i nga tohu kua tohua, ka taea e nga waahanga o te kuputuhi e whakaatuhia ana mai i te taha matau ki te maui ka īnaki i nga tuhinga o mua kua whakaatuhia mai i te maui ki te matau.

Ma te whakamahi i tenei tikanga, ka taea e koe te taapiri i tetahi hanga kino ki te waehere, engari ka waiho te tuhinga me tenei hanga kia kore e kitea i te wa e tiro ana koe i te waehere, ma te taapiri i nga korero e whai ake nei, i roto ranei i nga tohu pono e whakaatuhia ana mai i te taha matau ki te maui, ka arahi ki te katoa. he rereke nga ahuatanga kei runga i te whakaurunga kino. Ka noho tika taua waehere, engari ka rereke te whakamaori me te whakaatu rereke.

Ko te whakaeke i te Trojan Source ki te whakauru i nga huringa ki te waehere e kore e kitea e te kaiwhakawhanake

I a ia e arotake ana i te waehere, ka aro tetahi kaiwhakawhanake ki te raupapa ataata o nga kiripuaki, ka kite i tetahi korero kore whakapae i roto i te ētita kuputuhi hou, te atanga tukutuku, te IDE ranei, engari ka whakamahia e te kaiwhakaahua me te kaiwhakamaori te raupapa arorau o nga kiripuaki me te te tukatuka i te whakauru kino i te ahua, me te kore e aro ki te tuhinga takirua i roto i nga korero. Ko te raru ka pa ki nga momo kaiwhakatikatika waehere rongonui (VS Code, Emacs, Atom), me nga hononga mo te tiro waehere i roto i nga whare pupuri (GitHub, Gitlab, BitBucket me nga hua Atlassian katoa).

Ko te whakaeke i te Trojan Source ki te whakauru i nga huringa ki te waehere e kore e kitea e te kaiwhakawhanake

He maha nga huarahi hei whakamahi i te tikanga ki te whakatinana i nga mahi kino: te taapiri i te korero "hoki" huna, e arahi ana ki te whakaoti i te mahi i mua i te waa; te korero i nga korero ka kitea hei hanga whaimana (hei tauira, ki te whakakore i nga arowhai nui); te tautapa i etahi atu uara aho e arai ana ki nga rahunga whakamana aho.

Hei tauira, ka whakaarohia e te kaitukino he huringa kei roto te raina: if access_level != "kaiwhakamahi{U+202E} {U+2066}// Tirohia mena he kaiwhakahaere{U+2069} {U+2066}" {

ka whakaatuhia i roto i te atanga arotake me te mea he access_level != “kaiwhakamahi” {/ // Tirohia mena he kaiwhakahaere

I tua atu, kua whakaarohia tetahi atu momo whakaeke (CVE-2021-42694), e hono ana ki te whakamahi i nga homoglyphs, nga tohu he rite te ahua, engari he rereke te tikanga, he rereke nga waehere unicode (hei tauira, ko te ahua "ɑ" he rite ki te " a”, “ɡ” - “g”, “ɩ” - “l”). Ka taea te whakamahi i nga ahuatanga rite ki etahi reo i roto i nga ingoa o nga mahi me nga taurangi hei whakapohehe i nga kaihanga. Hei tauira, ka taea te tautuhi i nga mahi e rua me nga ingoa e kore e taea te wehewehe e mahi ana i nga mahi rereke. Ki te kore he tino tātaritanga, kare e tino marama ko wai o enei mahi e rua ka kiia ki tetahi waahi motuhake.

Ko te whakaeke i te Trojan Source ki te whakauru i nga huringa ki te waehere e kore e kitea e te kaiwhakawhanake

Hei inenga haumarutanga, e taunaki ana kia whakaatu nga kaiwhakatakoto, kaiwhakamaori, me nga taputapu whakahiato e tautoko ana i nga tohu Unicode he hapa, he whakatupato ranei mena he tohu mana kore takirua kei roto i nga korero, i nga kupu aho, i nga kaitautuhi ranei e huri ana i te ahunga putanga (U+202A, U+202B, U +202C, U+202D, U+202E, U+2066, U+2067, U+2068, U+2069, U+061C, U+200E me U+200F). Ko enei momo ahua me aukati rawa i roto i nga whakaritenga reo whakahōtaka, me whakaute hoki i roto i nga kaiwhakatika waehere me nga atanga putunga.

Tāpiritanga 1: Kua whakaritea nga papanga whakaraeraetanga mo GCC, LLVM/Clang, Rust, Go, Python me nga binutils. Ko GitHub, Bitbucket me Jira hoki i whakatika te take. He whakatika mo GitLab kei te haere tonu. Hei tautuhi i te waehere raruraru, ka whakaarohia kia whakamahia te tono: grep -r $'[\u061C\u200E\u200F\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069]/' puna

Tāpiritanga 2: Ko Russ Cox, tetahi o nga kaihanga o te Mahere 9 OS me te reo kaupapa Go, i whakahee i te aro nui ki te tikanga whakaeke kua whakaahuatia, kua roa nei e mohiotia ana (Haere, Rust, C++, Ruby) kaore i tino arohia. . E ai ki a Cox, ko te raru ko te whakaatu tika o nga korero i roto i nga kaiwhakatika waehere me nga hononga tukutuku, ka taea te whakatau ma te whakamahi i nga taputapu tika me nga kaitirotiro waehere i te wa e arotake ana. No reira, hei utu mo te aro ki nga whakaeke whakapae, he pai ake te aro ki te whakapai ake i nga tikanga arotake waehere me te whakawhirinaki.

E whakapono ana hoki a Ras Cox ehara i te mea ko nga kaikoipi te waahi tika ki te whakatika i te raru, na te mea ma te aukati i nga tohu kino i te taumata o te kaitoha, kei te noho tonu he paparanga nui o nga taputapu e pai ai te whakamahi o enei tohu, penei i te hanga i nga punaha, nga kaihopu, kaiwhakahaere mōkihi me ngā momo parser whirihoranga me nga raraunga. Hei tauira, ka tukuna te kaupapa Rust, i aukati i te tukatuka o te waehere LTR/RTL i roto i te kaitoi, engari kaore i taapirihia he whakatika ki te kaiwhakahaere o te kete Cargo, e tuku ana i te whakaeke rite ma te konae Cargo.toml. Waihoki, ko nga konae penei i te BUILD.bazel, CMakefile, Cargo.toml, Dockerfile, GNUmakefile, Makefile, go.mod, package.json, pom.xml me requirements.txt ka waiho hei puna o nga whakaeke.

Source: opennet.ru

Tāpiri i te kōrero