ื”ืชืงืคืช ืžืงื•ืจ ื˜ืจื•ื™ืื ื™ ื›ื“ื™ ืœื”ืฆื™ื’ ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“ ืฉืื™ื ื ื ืจืื™ื ืœืžืคืชื—

ื—ื•ืงืจื™ื ืžืื•ื ื™ื‘ืจืกื™ื˜ืช ืงื™ื™ืžื‘ืจื™ื“ื’' ืคืจืกืžื• ื˜ื›ื ื™ืงื” ืœื”ื›ื ืกืช ืงื•ื“ ื–ื“ื•ื ื™ ื‘ืฉืงื˜ ืœืชื•ืš ืงื•ื“ ืžืงื•ืจ ืฉื ื‘ื“ืง ืขืžื™ืชื™ื. ืฉื™ื˜ืช ื”ื”ืชืงืคื” ื”ืžื•ื›ื ื” (CVE-2021-42574) ืžื•ืฆื’ืช ืชื—ืช ื”ืฉื Trojan Source ื•ืžื‘ื•ืกืกืช ืขืœ ื™ืฆื™ืจืช ื˜ืงืกื˜ ืฉื ืจืื” ืื—ืจืช ืขื‘ื•ืจ ื”ืžื”ื“ืจ/ื”ืžืชื•ืจื’ืžืŸ ื•ื”ืื“ื ื”ืฆื•ืคื” ื‘ืงื•ื“. ื“ื•ื’ืžืื•ืช ืœืฉื™ื˜ื” ืžื•ืฆื’ื•ืช ืขื‘ื•ืจ ืžื”ื“ืจื™ื ื•ืžืชื•ืจื’ืžื ื™ื ืฉื•ื ื™ื ื”ืžืกื•ืคืงื™ื ืขื‘ื•ืจ C, C++ (gcc ื•-clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go ื•-Python.

ื”ืฉื™ื˜ื” ืžื‘ื•ืกืกืช ืขืœ ืฉื™ืžื•ืฉ ื‘ืชื•ื•ื™ Unicode ืžื™ื•ื—ื“ื™ื ื‘ื”ืขืจื•ืช ืงื•ื“ ืฉืžืฉื ื•ืช ืืช ืกื“ืจ ื”ืชืฆื•ื’ื” ืฉืœ ื˜ืงืกื˜ ื“ื•-ื›ื™ื•ื•ื ื™. ื‘ืขื–ืจืช ืชื•ื•ื™ ื‘ืงืจื” ื›ืืœื”, ื—ืœืงื™ื ืžืกื•ื™ืžื™ื ืฉืœ ื”ื˜ืงืกื˜ ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืžื•ืฆื’ื™ื ืžืฉืžืืœ ืœื™ืžื™ืŸ, ื‘ืขื•ื“ ืฉืื—ืจื™ื - ืžื™ืžื™ืŸ ืœืฉืžืืœ. ื‘ืชืจื’ื•ืœ ื”ื™ื•ืžื™ื•ืžื™ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืชื•ื•ื™ ื‘ืงืจื” ื›ืืœื”, ืœืžืฉืœ, ืœื”ื›ื ืกืช ืฉื•ืจื•ืช ืงื•ื“ ื‘ืขื‘ืจื™ืช ืื• ืขืจื‘ื™ืช ืœืงื•ื‘ืฅ. ืื‘ืœ ืื ืชืฉืœื‘ ืฉื•ืจื•ืช ืขื ื›ื™ื•ื•ื ื™ ื˜ืงืกื˜ ืฉื•ื ื™ื ื‘ืฉื•ืจื” ืื—ืช, ื‘ืืžืฆืขื•ืช ื”ืชื•ื•ื™ื ืฉืฆื•ื™ื ื•, ืงื˜ืขื™ ื˜ืงืกื˜ ื”ืžื•ืฆื’ื™ื ืžื™ืžื™ืŸ ืœืฉืžืืœ ื™ื›ื•ืœื™ื ืœื—ืคื•ืฃ ืœื˜ืงืกื˜ ืจื’ื™ืœ ืงื™ื™ื ื”ืžื•ืฆื’ ืžืฉืžืืœ ืœื™ืžื™ืŸ.

ื‘ืฉื™ื˜ื” ื–ื•, ื ื™ืชืŸ ืœื”ื•ืกื™ืฃ ืžื‘ื ื” ื–ื“ื•ื ื™ ืœืงื•ื“, ืืš ืœืื—ืจ ืžื›ืŸ ืœื”ืคื•ืš ืืช ื”ื˜ืงืกื˜ ืขื ื”ืžื‘ื ื” ื”ื–ื” ืœื‘ืœืชื™ ื ืจืื” ื‘ืขืช ืฆืคื™ื™ื” ื‘ืงื•ื“, ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ื”ื”ืขืจื” ื”ื‘ืื” ืื• ื‘ืชื•ืš ื”ืชื•ื•ื™ื ื”ืžื™ืœื•ืœื™ื™ื ื”ืžื•ืฆื’ื™ื ืžื™ืžื™ืŸ ืœืฉืžืืœ, ืžื” ืฉื™ื•ื‘ื™ืœ ืœื—ืœื•ื˜ื™ืŸ ื“ืžื•ื™ื•ืช ืฉื•ื ื•ืช ืžื•ื ื—ื•ืช ืขืœ ื”ื”ื›ื ืกื” ื”ื–ื“ื•ื ื™ืช. ืงื•ื“ ื›ื–ื” ื™ื™ืฉืืจ ืชืงื™ืŸ ืžื‘ื—ื™ื ื” ืกืžื ื˜ื™ืช, ืืš ื™ืชืคืจืฉ ื•ื™ื•ืฆื’ ืื—ืจืช.

ื”ืชืงืคืช ืžืงื•ืจ ื˜ืจื•ื™ืื ื™ ื›ื“ื™ ืœื”ืฆื™ื’ ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“ ืฉืื™ื ื ื ืจืื™ื ืœืžืคืชื—

ื‘ื–ืžืŸ ืกืงื™ืจืช ืงื•ื“, ืžืคืชื— ื™ืขืžื•ื“ ื‘ืคื ื™ ื”ืกื“ืจ ื”ื—ื–ื•ืชื™ ืฉืœ ื”ื“ืžื•ื™ื•ืช ื•ื™ืจืื” ื”ืขืจื” ืœื ืžื—ืฉื™ื“ื” ื‘ืขื•ืจืš ื˜ืงืกื˜ ืžื•ื“ืจื ื™, ืžืžืฉืง ืื™ื ื˜ืจื ื˜ ืื• IDE, ืืš ื”ืžื”ื“ืจ ื•ื”ืžืชื•ืจื’ืžืŸ ื™ืฉืชืžืฉื• ื‘ืกื“ืจ ื”ื”ื’ื™ื•ื ื™ ืฉืœ ื”ืชื•ื•ื™ื ื•ื™ืขืฉื• ืœืขื‘ื“ ืืช ื”ื”ื›ื ืกื” ื”ื–ื“ื•ื ื™ืช ื›ืคื™ ืฉื”ื™ื, ืžื‘ืœื™ ืœืฉื™ื ืœื‘ ืœื˜ืงืกื˜ ื”ื“ื•-ื›ื™ื•ื•ื ื™ ื‘ื”ืขืจื•ืช. ื”ื‘ืขื™ื” ืžืฉืคื™ืขื” ืขืœ ืขื•ืจื›ื™ ืงื•ื“ ืคื•ืคื•ืœืจื™ื™ื ืฉื•ื ื™ื (VS Code, Emacs, Atom), ื›ืžื• ื’ื ืžืžืฉืงื™ื ืœืฆืคื™ื™ื” ื‘ืงื•ื“ ื‘ืžืื’ืจื™ื (GitHub, Gitlab, BitBucket ื•ื›ืœ ืžื•ืฆืจื™ Atlassian).

ื”ืชืงืคืช ืžืงื•ืจ ื˜ืจื•ื™ืื ื™ ื›ื“ื™ ืœื”ืฆื™ื’ ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“ ืฉืื™ื ื ื ืจืื™ื ืœืžืคืชื—

ื™ืฉื ืŸ ืžืกืคืจ ื“ืจื›ื™ื ืœื”ืฉืชืžืฉ ื‘ืฉื™ื˜ื” ื›ื“ื™ ืœื™ื™ืฉื ืคืขื•ืœื•ืช ื–ื“ื•ื ื™ื•ืช: ื”ื•ืกืคืช ื‘ื™ื˜ื•ื™ "ื”ื—ื–ืจื”" ื ืกืชืจ, ื”ืžื•ื‘ื™ืœ ืœื”ืฉืœืžืช ื”ืคื•ื ืงืฆื™ื” ืžื‘ืขื•ื“ ืžื•ืขื“; ื”ืขืจืช ื‘ื™ื˜ื•ื™ื™ื ืฉื‘ื“ืจืš ื›ืœืœ ื™ื”ื™ื• ื’ืœื•ื™ื™ื ื›ืžื‘ื ื™ื ื—ื•ืงื™ื™ื (ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื”ืฉื‘ื™ืช ื‘ื“ื™ืงื•ืช ื—ืฉื•ื‘ื•ืช); ื”ืงืฆืืช ืขืจื›ื™ ืžื—ืจื•ื–ืช ืื—ืจื™ื ืฉืžื•ื‘ื™ืœื™ื ืœื›ืฉืœื™ื ื‘ืื™ืžื•ืช ืžื—ืจื•ื–ืช.

ืœื“ื•ื’ืžื”, ืชื•ืงืฃ ืขืฉื•ื™ ืœื”ืฆื™ืข ืฉื™ื ื•ื™ ื”ื›ื•ืœืœ ืืช ื”ืฉื•ืจื”: if access_level != "user{U+202E} {U+2066}// Check if admin{U+2069} {U+2066}" {

ืืฉืจ ื™ื•ืฆื’ ื‘ืžืžืฉืง ื”ื‘ื™ืงื•ืจืช ื›ืื™ืœื• access_level != โ€œuserโ€ {// ื‘ื“ื•ืง ืื ืื“ืžื™ืŸ

ื‘ื ื•ืกืฃ, ื”ื•ืฆืขื” ื•ืจื™ืื ื˜ ืชืงื™ืคื” ื ื•ืกืฃ (CVE-2021-42694), ื”ืงืฉื•ืจื” ืœืฉื™ืžื•ืฉ ื‘ื”ืžื•ื’ืœื™ืคื™ื, ืชื•ื•ื™ื ื“ื•ืžื™ื ื‘ืžืจืื”, ืืš ืฉื•ื ื™ื ื‘ืžืฉืžืขื•ืชื ื•ื‘ืขืœื™ ืงื•ื“ื™ Unicode ืฉื•ื ื™ื (ืœื“ื•ื’ืžื”, ื”ืชื• "ษ‘" ื“ื•ืžื” ืœ" a", "ษก" - "g", "ษฉ" - "l"). ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืชื•ื•ื™ื ื“ื•ืžื™ื ื‘ืฉืคื•ืช ืžืกื•ื™ืžื•ืช ื‘ืฉืžื•ืช ืฉืœ ืคื•ื ืงืฆื™ื•ืช ื•ืžืฉืชื ื™ื ื›ื“ื™ ืœื”ื˜ืขื•ืช ืžืคืชื—ื™ื. ืœื“ื•ื’ืžื”, ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืฉืชื™ ืคื•ื ืงืฆื™ื•ืช ืขื ืฉืžื•ืช ืฉืœื ื ื™ืชืŸ ืœื”ื‘ื—ื™ืŸ ื‘ื”ืŸ ื”ืžื‘ืฆืขื•ืช ืคืขื•ืœื•ืช ืฉื•ื ื•ืช. ืœืœื ื ื™ืชื•ื— ืžืคื•ืจื˜, ืœื ื‘ืจื•ืจ ืžื™ื“ ืื™ื–ื• ืžืฉืชื™ ื”ืคื•ื ืงืฆื™ื•ืช ื”ืœืœื• ื ืงืจืื•ืช ื‘ืžืงื•ื ืกืคืฆื™ืคื™.

ื”ืชืงืคืช ืžืงื•ืจ ื˜ืจื•ื™ืื ื™ ื›ื“ื™ ืœื”ืฆื™ื’ ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“ ืฉืื™ื ื ื ืจืื™ื ืœืžืคืชื—

ื›ืืžืฆืขื™ ืื‘ื˜ื—ื”, ืžื•ืžืœืฅ ืฉืžื”ื“ืจื™ื, ืžืชื•ืจื’ืžื ื™ื ื•ื›ืœื™ ื”ืจื›ื‘ื” ื”ืชื•ืžื›ื™ื ื‘ืชื•ื•ื™ Unicode ื™ืฆื™ื’ื• ืฉื’ื™ืื” ืื• ืื–ื”ืจื” ืื ื™ืฉ ืชื•ื•ื™ ื‘ืงืจื” ืœื ืžื–ื•ื•ื’ื™ื ื‘ื”ืขืจื•ืช, ืžื™ืœื•ืœื™ ืžื—ืจื•ื–ืช ืื• ืžื–ื”ื™ื ื”ืžืฉื ื™ื ืืช ื›ื™ื•ื•ืŸ ื”ืคืœื˜ (U+202A, U+202B, U +202C, U+202D, U+202E, U+2066, U+2067, U+2068, U+2069, U+061C, U+200E ื•-U+200F). ืชื•ื•ื™ื ื›ืืœื” ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืืกื•ืจื™ื ื‘ืžืคื•ืจืฉ ื‘ืžืคืจื˜ื™ ืฉืคืช ื”ืชื›ื ื•ืช ื•ื™ืฉ ืœื›ื‘ื“ ืื•ืชื ื‘ืขื•ืจื›ื™ ืงื•ื“ ื•ื‘ืžืžืฉืงื™ ืžืื’ืจื™ื.

ืชื•ืกืคืช 1: ืชื™ืงื•ื ื™ ืคื’ื™ืขื•ืช ื”ื•ื›ื ื• ืขื‘ื•ืจ GCC, LLVM/Clang, Rust, Go, Python ื•ื‘ื™ื ื•ื˜ื™ืœ. GitHub, Bitbucket ื•ื’'ื™ืจื” ื’ื ืชื™ืงื ื• ืืช ื”ื‘ืขื™ื”. ืชื™ืงื•ืŸ ืขื‘ื•ืจ GitLab ื ืžืฆื ื‘ืชื”ืœื™ืš. ื›ื“ื™ ืœื–ื”ื•ืช ืงื•ื“ ื‘ืขื™ื™ืชื™, ืžื•ืžืœืฅ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื”: grep -r $'[\u061C\u200E\u200A\u202B\u202A\u202B\u202C\u202D\u2066E\u2067\u2068\u2069\uXNUMX\uXNUMX/' ืžึธืงื•ึนืจ

ื ืกืคื— 2: Russ Cox, ืื—ื“ ืžืžืคืชื—ื™ ืžืขืจื›ืช ื”ื”ืคืขืœื” Plan 9 ื•ืฉืคืช ื”ืชื›ื ื•ืช Go, ืžืชื— ื‘ื™ืงื•ืจืช ืขืœ ืชืฉื•ืžืช ื”ืœื‘ ื”ืžื•ื’ื–ืžืช ืœืฉื™ื˜ืช ื”ื”ืชืงืคื” ื”ืžืชื•ืืจืช, ืืฉืจ ื™ื“ื•ืขื” ื–ื” ืžื›ื‘ืจ (Go, Rust, C++, Ruby) ื•ืœื ื ืœืงื—ื” ื‘ืจืฆื™ื ื•ืช . ืœื“ื‘ืจื™ ืงื•ืงืก, ื”ื‘ืขื™ื” ื ื•ื’ืขืช ื‘ืขื™ืงืจ ืœืชืฆื•ื’ื” ื ื›ื•ื ื” ืฉืœ ืžื™ื“ืข ื‘ืขื•ืจื›ื™ ืงื•ื“ ื•ื‘ืžืžืฉืงื™ ืื™ื ื˜ืจื ื˜, ืฉื ื™ืชืŸ ืœืคืชื•ืจ ื‘ืืžืฆืขื•ืช ื”ื›ืœื™ื ื”ื ื›ื•ื ื™ื ื•ืžื ืชื—ื™ ื”ืงื•ื“ ื‘ืžื”ืœืš ืกืงื™ืจื”. ืœื›ืŸ, ื‘ืžืงื•ื ืœืžืฉื•ืš ืชืฉื•ืžืช ืœื‘ ืœืžืชืงืคื•ืช ืกืคืงื•ืœื˜ื™ื‘ื™ื•ืช, ื™ื”ื™ื” ื ื›ื•ืŸ ื™ื•ืชืจ ืœื”ืชืžืงื“ ื‘ืฉื™ืคื•ืจ ืชื”ืœื™ื›ื™ ืกืงื™ืจืช ืงื•ื“ ื•ืชืœื•ืช.

ืจืืก ืงื•ืงืก ื’ื ืžืืžื™ืŸ ืฉืžื”ื“ืจื™ื ื”ื ืœื ื”ืžืงื•ื ื”ื ื›ื•ืŸ ืœืชืงืŸ ืืช ื”ื‘ืขื™ื”, ืฉื›ืŸ ืขืœ ื™ื“ื™ ืื™ืกื•ืจ ืขืœ ืกืžืœื™ื ืžืกื•ื›ื ื™ื ื‘ืจืžืช ื”ืžื”ื“ืจ, ื ื•ืชืจื” ืฉื›ื‘ื” ืขืฆื•ืžื” ืฉืœ ื›ืœื™ื ืฉื‘ื”ื ื”ืฉื™ืžื•ืฉ ื‘ืกืžืœื™ื ืืœื• ื ืฉืืจ ืžืงื•ื‘ืœ, ื›ื’ื•ืŸ ื‘ื ื™ื™ืช ืžืขืจื›ื•ืช, ืืกืžื‘ืœืจ, ืžื ื”ืœื™ ื—ื‘ื™ืœื•ืช ื•ืžื ืชื—ื™ ืชืฆื•ืจื” ืฉื•ื ื™ื ื•ื ืชื•ื ื™ื. ื›ื“ื•ื’ืžื” ื ื™ืชืŸ ืคืจื•ื™ืงื˜ Rust, ืฉืืกืจ ืขืœ ืขื™ื‘ื•ื“ ืงื•ื“ LTR/RTL ื‘ืžื”ื“ืจ, ืืš ืœื ื”ื•ืกื™ืฃ ืชื™ืงื•ืŸ ืœืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช ืฉืœ Cargo, ื”ืžืืคืฉืจ ื”ืชืงืคื” ื“ื•ืžื” ื“ืจืš ื”ืงื•ื‘ืฅ Cargo.toml. ื‘ืื•ืคืŸ ื“ื•ืžื”, ืงื‘ืฆื™ื ื›ื’ื•ืŸ BUILD.bazel, CMakefile, Cargo.toml, Dockerfile, GNUmakefile, Makefile, go.mod, package.json, pom.xml ื•- requirements.txt ื™ื›ื•ืœื™ื ืœื”ืคื•ืš ืœืžืงื•ืจื•ืช ื”ืชืงืคื•ืช.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”