Trojan Source nres los qhia txog kev hloov pauv rau cov cai uas pom tsis tau rau tus tsim tawm

Cov kws tshawb fawb los ntawm University of Cambridge tau tshaj tawm cov txheej txheem rau ntsiag to ntxig cov lej tsis zoo rau hauv cov phooj ywg tshuaj xyuas qhov chaws. Txoj kev npaj tawm tsam (CVE-2021-42574) tau nthuav tawm nyob rau hauv lub npe Trojan Source thiab yog ua raws li kev tsim cov ntawv nyeem uas zoo li txawv rau tus neeg sau / txhais lus thiab tus neeg saib cov cai. Piv txwv ntawm txoj kev yog ua qauv qhia rau ntau yam compilers thiab neeg txhais lus muab rau C, C ++ (gcc thiab clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go thiab Python.

Tus txheej txheem yog ua raws li kev siv cov cim Unicode tshwj xeeb hauv cov lus pom uas hloov pauv qhov kev txiav txim ntawm cov ntawv nyeem bidirectional. Nrog kev pab los ntawm cov cim kev tswj hwm, qee qhov ntawm cov ntawv tuaj yeem tso tawm los ntawm sab laug mus rau sab xis, thaum lwm tus - los ntawm sab xis mus rau sab laug. Hauv kev xyaum txhua hnub, cov cim tswj tau siv tau, piv txwv li, los ntxig cov kab lus hauv Hebrew lossis Arabic rau hauv cov ntaub ntawv. Tab sis yog tias koj muab cov kab nrog cov lus qhia sib txawv hauv ib kab, siv cov cim tshwj xeeb, cov kab lus ntawm cov ntawv tso tawm los ntawm sab xis mus rau sab laug tuaj yeem sib tshooj cov ntawv uas twb muaj lawm uas tshwm los ntawm sab laug mus rau sab xis.

Siv cov qauv no, koj tuaj yeem ntxiv qhov kev tsim tsis zoo rau cov cai, tab sis tom qab ntawd ua cov ntawv nrog qhov tsim tsis pom thaum saib cov cai, los ntawm kev ntxiv cov lus hauv qab no lossis hauv cov ntawv sau qhia los ntawm sab xis mus rau sab laug, uas yuav ua rau tag nrho. cov cim sib txawv raug superimposed nyob rau hauv siab phem insertion. Xws li cov cai yuav nyob twj ywm semantically raug, tab sis yuav raug txhais thiab nthuav tawm txawv.

Trojan Source nres los qhia txog kev hloov pauv rau cov cai uas pom tsis tau rau tus tsim tawm

Thaum tshuaj xyuas cov cai, tus tsim tawm yuav tau ntsib nrog qhov kev txiav txim pom ntawm cov cim thiab yuav pom cov lus tsis txaus ntseeg hauv cov ntawv nyeem niaj hnub, web interface lossis IDE, tab sis tus sau thiab tus neeg txhais lus yuav siv qhov kev txiav txim siab ntawm cov cim thiab yuav. txheej txheem qhov tsis zoo ntxig raws li yog, tsis tau them nyiaj rau cov ntawv nyeem bidirectional hauv cov lus. Qhov teeb meem cuam tshuam rau ntau yam nrov code editors (VS Code, Emacs, Atom), nrog rau kev sib cuam tshuam rau kev saib cov lej hauv chaw cia khoom (GitHub, Gitlab, BitBucket thiab tag nrho cov khoom Atlassian).

Trojan Source nres los qhia txog kev hloov pauv rau cov cai uas pom tsis tau rau tus tsim tawm

Muaj ob peb txoj hauv kev los siv txoj hauv kev los siv cov kev ua phem: ntxiv qhov zais "rov qab" qhia, uas ua rau ua tiav cov haujlwm ua ntej; tawm tswv yim tawm cov kab lus uas ib txwm pom tau tias yog cov qauv tsim nyog (piv txwv li, kom tsis txhob muaj cov tshev tseem ceeb); muab lwm txoj hlua qhov tseem ceeb uas ua rau txoj hlua validation ua tsis tiav.

Piv txwv li, tus neeg tawm tsam tuaj yeem tawm tswv yim hloov pauv uas suav nrog cov kab: yog tias nkag mus_level != "neeg siv{U+202E} {U+2066}// Kos yog admin{U+2069} {U+2066}" {

uas yuav tshwm sim nyob rau hauv kev tshuaj xyuas interface li yog access_level != "neeg siv" { // Kos yog admin

Tsis tas li ntawd, lwm qhov kev tawm tsam tawm tsam tau tshaj tawm (CVE-2021-42694), cuam tshuam nrog kev siv homoglyphs, cov cim uas zoo sib xws, tab sis txawv ntawm lub ntsiab lus thiab muaj cov lej unicode sib txawv (piv txwv li, tus cim "Ι‘" zoo li " a", "Ι‘" - "g", "Ι©" - "l"). Cov cim zoo sib xws tuaj yeem siv tau hauv qee hom lus hauv cov npe ntawm cov haujlwm thiab cov kev hloov pauv kom ua rau cov neeg tsim tawm dag zog. Piv txwv li, ob lub luag haujlwm nrog cov npe sib txawv tuaj yeem txhais tau tias ua haujlwm sib txawv. Yog tsis muaj kev soj ntsuam ntxaws, nws tsis paub meej tam sim ntawd qhov twg ntawm ob txoj haujlwm no hu ua nyob rau hauv ib qho chaw tshwj xeeb.

Trojan Source nres los qhia txog kev hloov pauv rau cov cai uas pom tsis tau rau tus tsim tawm

Raws li kev ntsuas kev nyab xeeb, nws raug pom zoo tias cov neeg sau ntawv, cov neeg txhais lus, thiab cov cuab yeej sib dhos uas txhawb nqa cov cim Unicode tso tawm qhov yuam kev lossis ceeb toom yog tias muaj cov cim tswj tsis tau ua ke hauv cov lus, cov kab ntawv, lossis cov cim uas hloov pauv cov kev coj ua (U + 202A, U+202B, U+202C, U+202D, U+202E, U+2066, U+2067, U+2068, U+2069, U+061C, U+200E thiab U+200F). Cov cim zoo li no kuj tseem yuav raug txwv tsis pub tshaj tawm hauv cov lus qhia tshwj xeeb thiab yuav tsum raug hwm hauv cov code editors thiab repository interfaces.

Ntxiv 1: Cov kab mob tsis zoo tau npaj rau GCC, LLVM/Clang, Rust, Go, Python thiab binutils. GitHub, Bitbucket thiab Jira kuj kho qhov teeb meem. Kev kho rau GitLab tab tom ua tiav. Txhawm rau txheeb xyuas qhov teeb meem code, nws raug nquahu kom siv cov lus txib: grep -r $'[\u061C\u200E\u200F\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069\uXNUMX\uXNUMX\uXNUMX\uXNUMX\uXNUMX\uXNUMX\uXNUMX\uXNUMX\uXNUMX qhov chaw

Addendum 2: Russ Cox, yog ib tus tsim tawm ntawm Plan 9 OS thiab Go programming language, thuam qhov kev saib xyuas ntau dhau rau cov lus piav qhia kev tawm tsam, uas tau paub ntev (Go, Rust, C ++, Ruby) thiab tsis tau ua tiag tiag. . Raws li Cox, qhov teeb meem feem ntau cuam tshuam txog qhov tseeb ntawm cov ntaub ntawv hauv code editors thiab web interfaces, uas tuaj yeem daws tau los ntawm kev siv cov cuab yeej raug thiab cov lej ntsuas thaum lub sijhawm tshuaj xyuas. Yog li ntawd, tsis txhob xav txog kev xav txog kev tawm tsam, nws yuav tsim nyog los tsom rau kev txhim kho cov cai thiab kev txheeb xyuas cov txheej txheem.

Ras Cox kuj ntseeg hais tias compilers tsis yog qhov chaw zoo los kho qhov teeb meem, txij li los ntawm kev txwv cov cim txaus ntshai ntawm qib compiler, tseem muaj txheej txheej loj ntawm cov cuab yeej uas siv cov cim no tseem siv tau, xws li tsim cov tshuab, cov khoom sib dhos, pob cov tswj hwm thiab ntau yam kev teeb tsa parser thiab cov ntaub ntawv. Raws li qhov piv txwv, txoj haujlwm Rust tau muab, uas txwv tsis pub ua LTR / RTL code hauv compiler, tab sis tsis ntxiv kev txhim kho rau Cargo pob tus thawj tswj, uas tso cai rau kev tawm tsam zoo sib xws los ntawm Cargo.toml cov ntaub ntawv. Ib yam li ntawd, cov ntaub ntawv xws li BUILD.bazel, CMakefile, Cargo.toml, Dockerfile, GNUmakefile, Makefile, go.mod, package.json, pom.xml thiab requirements.txt tuaj yeem dhau los ua qhov chaw tawm tsam.

Tau qhov twg los: opennet.ru

Ntxiv ib saib