αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž”αŸ’αžšαž—αž– Trojan αžŠαžΎαž˜αŸ’αž”αžΈαžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΎαž›αž˜αž·αž“αžƒαžΎαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ

αž’αŸ’αž“αž€αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž˜αž€αž–αžΈαžŸαžΆαž€αž›αžœαž·αž‘αŸ’αž™αžΆαž›αŸαž™ Cambridge αž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž€αžΌαžŠαž–αŸ’αž™αžΆαž”αžΆαž‘αžŠαŸ„αž™αžŸαŸ’αž„αŸ€αž˜αžŸαŸ’αž„αžΆαžαŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž—αž–αž€αžΌαžŠαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αžŠαŸ„αž™αž˜αž·αžαŸ’αžαž—αŸαž€αŸ’αžαž·αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αž…αŸ† (CVE-2021-42574) αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αžšαŸ„αž˜αžˆαŸ’αž˜αŸ„αŸ‡ Trojan Source αž αžΎαž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž’αžαŸ’αžαž”αž‘αžŠαŸ‚αž›αž˜αžΎαž›αž‘αŸ…αžαž»αžŸαž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„/αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚ αž“αž·αž„αž’αŸ’αž“αž€αžŠαŸ‚αž›αž˜αžΎαž›αž€αžΌαžŠαŸ” αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„ αž“αž·αž„αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ‚αž›αž•αŸ’αž‚αžαŸ‹αž•αŸ’αž‚αž„αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ C, C++ (gcc αž“αž·αž„ clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go αž“αž·αž„ Python αŸ”

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‚αžΊαž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαž½αž’αž€αŸ’αžŸαžšαž™αžΌαž“αžΈαž€αžΌαžŠαž–αž·αžŸαŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αž€αžΌαžŠαžŠαŸ‚αž›αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž›αŸ†αžŠαžΆαž”αŸ‹αž”αž„αŸ’αž αžΆαž‰αž“αŸƒαž’αžαŸ’αžαž”αž‘αž‘αŸ’αžœαŸαž‘αž·αžŸαŸ” αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™αž–αžΈαžαž½αž’αž€αŸ’αžŸαžšαž”αž‰αŸ’αž‡αžΆαž”αŸ‚αž”αž“αŸαŸ‡ αž•αŸ’αž“αŸ‚αž€αžαŸ’αž›αŸ‡αž“αŸƒαž’αžαŸ’αžαž”αž‘αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž†αŸ’αžœαŸαž„αž‘αŸ…αžŸαŸ’αžαžΆαŸ† αž…αŸ†αžŽαŸ‚αž€αžαŸ’αž›αŸ‡αž‘αŸ€αž - αž–αžΈαžŸαŸ’αžαžΆαŸ†αž‘αŸ…αž†αŸ’αžœαŸαž„αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαž…αžΆαŸ†αžαŸ’αž„αŸƒ αžαž½αž’αž€αŸ’αžŸαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸ‚αž”αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αž€αžΌαžŠαž‡αžΆαž—αžΆαžŸαžΆαž αŸαž–αŸ’αžšαžΎαžš αž¬αž—αžΆαžŸαžΆαž’αžΆαžšαŸ‰αžΆαž”αŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΌαžœαž”αž“αŸ’αž‘αžΆαžαŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž‘αž·αžŸαžŠαŸ…αž’αžαŸ’αžαž”αž‘αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αžΆαžαŸ‹αž˜αž½αž™ αžŠαŸ„αž™αž”αŸ’αžšαžΎαžαž½αž’αž€αŸ’αžŸαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αž’αžαŸ’αžαž”αž‘αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžŸαŸ’αžαžΆαŸ†αž‘αŸ…αž†αŸ’αžœαŸαž„αž’αžΆαž…αžαŸ’αžšαž½αžαž›αžΎαž‚αŸ’αž“αžΆαž›αžΎαž’αžαŸ’αžαž”αž‘αž’αž˜αŸ’αž˜αžαžΆαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž†αŸ’αžœαŸαž„αž‘αŸ…αžŸαŸ’αžαžΆαŸ†αŸ”

αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαž–αŸ’αž™αžΆαž”αžΆαž‘αž‘αŸ…αž€αžΌαžŠ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αžœαžΎαž±αŸ’αž™αž’αžαŸ’αžαž”αž‘αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αžŽαž„αŸ‹αž“αŸαŸ‡αž˜αžΎαž›αž˜αž·αž“αžƒαžΎαž‰αž“αŸ…αž–αŸαž›αž˜αžΎαž›αž€αžΌαžŠ αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αž¬αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αžαž½αž’αž€αŸ’αžŸαžšαžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžŸαŸ’αžαžΆαŸ†αž‘αŸ…αž†αŸ’αžœαŸαž„ αžŠαŸ‚αž›αž“αžΉαž„αž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” αžαž½αž’αž€αŸ’αžŸαžšαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž›αžΎαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž–αŸ’αž™αžΆαž”αžΆαž‘αŸ” αž€αžΌαžŠαž”αŸ‚αž”αž“αŸαŸ‡αž“αžΉαž„αž“αŸ…αžαŸ‚αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžαžΆαž˜αž“αŸαž™αž’αŸ€αž” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž€αžŸαŸ’αžšαžΆαž™ αž“αž·αž„αž”αž„αŸ’αž αžΆαž‰αžαž»αžŸαž‚αŸ’αž“αžΆαŸ”

αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž”αŸ’αžšαž—αž– Trojan αžŠαžΎαž˜αŸ’αž”αžΈαžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΎαž›αž˜αž·αž“αžƒαžΎαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ

αž“αŸ…αž–αŸαž›αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αžΌαžŠ αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžˆαž˜αž˜αž»αžαž“αžΉαž„αž›αŸ†αžŠαžΆαž”αŸ‹αžŠαŸ‚αž›αž˜αžΎαž›αžƒαžΎαž‰αž“αŸƒαžαž½αž’αž€αŸ’αžŸαžš αž αžΎαž™αž“αžΉαž„αžƒαžΎαž‰αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αžŠαŸ‚αž›αž˜αž·αž“αž‚αž½αžšαž±αŸ’αž™αžŸαž„αŸ’αžŸαŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αž’αžαŸ’αžαž”αž‘αž‘αŸ†αž“αžΎαž” αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžš ឬ IDE αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„ αž“αž·αž„αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αž“αžΉαž„αž”αŸ’αžšαžΎαž›αŸ†αžŠαžΆαž”αŸ‹αž‘αžΌαž‡αžΈαžαž›αž“αŸƒαžαž½αž’αž€αŸ’αžŸαžš αž αžΎαž™αž“αžΉαž„ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αž€αžΆαžšβ€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αž–αŸ’αž™αžΆαž”αžΆαž‘β€‹αžŠαžΌαž…β€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αžŠαŸ„αž™β€‹αž˜αž·αž“β€‹αž”αžΆαž“β€‹αž™αž€β€‹αž…αž·αžαŸ’αžβ€‹αž‘αž»αž€β€‹αžŠαžΆαž€αŸ‹β€‹αž…αŸ†αž–αŸ„αŸ‡β€‹αž’αžαŸ’αžαž”αž‘β€‹αž–αžΈαžšβ€‹αž‘αž·αžŸβ€‹αž€αŸ’αž“αž»αž„β€‹αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αŸ” αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ‚αž€αžΌαžŠαžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“ (VS Code, Emacs, Atom) αž€αŸαžŠαžΌαž…αž‡αžΆαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αžΎαž›αž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„ (GitHub, Gitlab, BitBucket αž“αž·αž„αž•αž›αž·αžαž•αž› Atlassian αž‘αžΆαŸ†αž„αž’αžŸαŸ‹)αŸ”

αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž”αŸ’αžšαž—αž– Trojan αžŠαžΎαž˜αŸ’αž”αžΈαžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΎαž›αž˜αž·αž“αžƒαžΎαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ

αž˜αžΆαž“αžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž–αŸ’αž™αžΆαž”αžΆαž‘αŸ– αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž€αž“αŸ’αžŸαŸ„αž˜ "αžαŸ’αžšαž‘αž”αŸ‹" αžŠαŸ‚αž›αž›αžΆαž€αŸ‹ αžŠαŸ‚αž›αž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αž˜αž»αžαž„αžΆαžšαž˜αž»αž“αž–αŸαž›αžœαŸαž›αžΆαŸ” αž€αžΆαžšαž”αž‰αŸ’αž…αŸαž‰αž˜αžαž·αžŠαŸ‚αž›αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαž‡αžΆαž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ (αž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαž”αž·αž‘αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαŸ†αžαžΆαž“αŸ‹αŸ—); αž•αŸ’αžαž›αŸ‹αžαž˜αŸ’αž›αŸƒαžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž€αŸ’αž“αž»αž„αžŸαž»αž–αž›αž—αžΆαž–αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαŸ”

αž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž’αžΆαž…αžŸαŸ’αž“αžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αŸ– if access_level != "αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹{U+202E} {U+2066}// αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„{U+2069} {U+2066}" {

αžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰αžŠαžΌαž…αž‡αžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎ access_level != "αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹" { // αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αžœαŸ‰αžΆαžšαŸ’αž™αŸ‰αž„αŸ‹αž“αŸƒαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„ (CVE-2021-42694) αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αžΆαž€αŸ’αž™ homoglyphs αžαž½αž’αž€αŸ’αžŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž’αžαŸ’αžαž“αŸαž™αžαž»αžŸαŸ—αž‚αŸ’αž“αžΆ αž“αž·αž„αž˜αžΆαž“αž›αŸαžαž€αžΌαžŠαž™αžΌαž“αžΈαž€αžΌαžŠαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆ (αž§αž‘αžΆαž αžšαžŽαŸ αžαž½αž’αž€αŸ’αžŸαžš β€œΙ‘β€ αžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„ β€œ a", "Ι‘" - "g", "Ι©" - "l") αŸ” αžαž½αž’αž€αŸ’αžŸαžšαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‡αžΆαž—αžΆαžŸαžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„αžˆαŸ’αž˜αŸ„αŸ‡αž˜αž»αžαž„αžΆαžš αž“αž·αž„αž’αžαŸαžšαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž—αžΆαž“αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž˜αž»αžαž„αžΆαžšαž–αžΈαžšαžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž˜αž·αž“αž’αžΆαž…αž”αŸ‚αž„αž…αŸ‚αž€αž”αžΆαž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαŸ” αž”αžΎαž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαžœαž·αž—αžΆαž‚αž›αž˜αŸ’αž’αž·αžαž‘αŸ αžœαžΆαž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž—αŸ’αž›αžΆαž˜αŸ—αžαžΆαžαžΎαž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡αž˜αž½αž™αžŽαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ”

αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž”αŸ’αžšαž—αž– Trojan αžŠαžΎαž˜αŸ’αž”αžΈαžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΎαž›αž˜αž·αž“αžƒαžΎαž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ

αž‡αžΆαžœαž·αž’αžΆαž“αž€αžΆαžšαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„ αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚ αž“αž·αž„αž§αž”αž€αžšαžŽαŸαž•αŸ’αž‚αž»αŸ†αžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžšαžαž½αž’αž€αŸ’αžŸαžšαž™αžΌαž“αžΈαž€αžΌαžŠαž”αž„αŸ’αž αžΆαž‰αž€αŸ†αž αž»αžŸ αž¬αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžαž½αž’αž€αŸ’αžŸαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαŸ‚αž›αž˜αž·αž“αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹ αž’αž€αŸ’αžŸαžšαž’αž€αŸ’αžŸαžš αž¬αž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αž·αžŸαžŠαŸ…αž“αŸƒαž›αž‘αŸ’αž’αž•αž› (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 αž“αž·αž„ binutils αŸ” GitHub, Bitbucket αž“αž·αž„ Jira αž€αŸαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžšαŸ” αž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ GitLab αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΆαž“αž”αž‰αŸ’αž αžΆ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž±αŸ’αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ– grep -r $'[\u061C\u200E\u200F\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069/'] αž”αŸ’αžšαž—αž–

αž§αž”αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΈ 2αŸ– Russ Cox αžŠαŸ‚αž›αž‡αžΆαž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαž Plan 9 OS αž“αž·αž„αž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Go αž”αžΆαž“αžšαž·αŸ‡αž‚αž“αŸ‹αž€αžΆαžšαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž αž½αžŸαž αŸαžαž»αž…αŸ†αž–αŸ„αŸ‡αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αž‡αžΆαž™αžΌαžšαž˜αž€αž αžΎαž™ (Go, Rust, C++, Ruby) αž αžΎαž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αžαŸ’αž›αžΆαŸ†αž„αž“αŸ„αŸ‡αž‘αŸαŸ” . αž™αŸ„αž„αžαžΆαž˜αž›αŸ„αž€ Cox αž”αž‰αŸ’αž αžΆαž…αž˜αŸ’αž”αž„αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž”αž„αŸ’αž αžΆαž‰αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž–αŸαžαŸŒαž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αž€αžΌαžŠ αž“αž·αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžš αžŠαŸ‚αž›αž’αžΆαž…αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αž·αž„αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž€αžΌαžŠαž’αŸ†αž‘αž»αž„αž–αŸαž›αž–αž·αž“αž·αžαŸ’αž™αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαž‘αžΆαž€αŸ‹αž‘αžΆαž‰αž€αžΆαžšαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžαžΆαž˜αž€αžΆαžšαž”αŸ‰αžΆαž“αŸ‹αžŸαŸ’αž˜αžΆαž“ αžœαžΆαž‡αžΆαž€αžΆαžšαžŸαž˜αžŸαŸ’αžšαž”αž‡αžΆαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž€αžΌαžŠ αž“αž·αž„αž€αžΆαžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αŸ”

Ras Cox αž€αŸαž‡αžΏαžαžΆαž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸ„αŸ‡αž‘αŸ αž–αŸ’αžšαŸ„αŸ‡αžŠαŸ„αž™αž€αžΆαžšαž αžΆαž˜αžƒαžΆαžαŸ‹αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„ αžœαžΆαž“αŸ…αž˜αžΆαž“αžŸαŸ’αžšαž‘αžΆαž”αŸ‹αžŠαŸαž’αŸ†αž“αŸƒαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αž·αž˜αž·αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αŸ…αžαŸ‚αž’αžΆαž…αž‘αž‘αž½αž›αž™αž€αž”αžΆαž“ αžŠαžΌαž…αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαžΆαž„αžŸαž„αŸ‹ αž§αž”αž€αžšαžŽαŸαžŠαŸ†αž‘αžΎαž„αž‡αžΆαžŠαžΎαž˜αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹ αž“αž·αž„αž§αž”αž€αžšαžŽαŸαž‰αŸ‚αž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž•αŸ’αžŸαŸαž„αŸ— αž“αž·αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž‚αž˜αŸ’αžšαŸ„αž„ Rust αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™ αžŠαŸ‚αž›αž αžΆαž˜αžƒαžΆαžαŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΌαžŠ LTR/RTL αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αž‘αŸ…αž€αžΆαž“αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹αž‘αŸ†αž“αž·αž‰ αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαžαžΆαž˜αžšαž™αŸˆαž―αž€αžŸαžΆαžš Cargo.toml αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αžš αž―αž€αžŸαžΆαžšαžŠαžΌαž…αž‡αžΆ BUILD.bazel, CMakefile, Cargo.toml, Dockerfile, GNUmakefile, Makefile, go.mod, package.json, pom.xml αž“αž·αž„ require.txt αž’αžΆαž…αž€αŸ’αž›αžΆαž™αž‡αžΆαž”αŸ’αžšαž—αž–αž“αŸƒαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹