Fons Troianus impetum in codicem invisibilem in elit

Investigatores ex academia Cantabrigiensi technicam ediderunt, ut malignum codicem tacite insereret in fonte recensito codicem parem. Praeparata oppugnationis methodus (CVE-2021-42574) sub nomine Fons Troiano exhibetur et fundatur in formatione textuum diversorum ad compilatorem/interpretem et ad personam spectantium codicem. Exempla methodi demonstrantur variis compilatoribus et interpretibus pro C, C++ (gcc et clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go et Python.

Modus innititur notis singularibus Unicode notis in codice commentis quae ordinem textus bidirectionalis ostentationis mutant. Auxiliante tali moderamine characterum, nonnullae partes textus a sinistro ad dextrum exponi possunt, aliae vero a dextra ad sinistram. In cotidiana exercitatione, talis moderatio characteres adhiberi potest, exempli gratia, codicem lineae hebraicae vel arabicae in fasciculum inserere. Sed si lineas cum diversis textibus in una linea coniungas, characteribus determinatis adhibitis, textus textus a dextra ad laevam exhibitus potest aliudque esse textum regularem a sinistra ad dextrum monstratum.

Hac methodo utens, malevolam fabricam ad codicem addere potes, sed tunc textum cum hac invisibilia fac cum codice inspectante, addendo in sequenti commento vel in notis litteralis a dextro ad sinistram demonstratis, quae omnino ducunt. diversis characteribus superimpositis malevolis inserendis. Talis signum remanebit semantically emendate, sed aliter interpretabitur et exponetur.

Fons Troianus impetum in codicem invisibilem in elit

Dum codicem recensebimus, elit cum characterum ordine visui opponetur et commentarium non suspectum videbit in textu recenti editore, interface vel IDE, sed compilator et interpres adhibebit ordinem logicum characterum et voluntatem. malignam insertionem ut est processus, sine attentione ad textum bidirectionalem in commentis. Difficultas varias editores codicem popularem afficit (V. Codex, Emacs, Atom), nec non interfacies ad videndum codicem in repositoriis (GitHub, Gitlab, BitBucket et omnes fructus Atlas).

Fons Troianus impetum in codicem invisibilem in elit

Plures modi sunt utendi methodus ad actiones malicias deducendi: addito expressio abscondita "reditus", quae perficit munus ante tempus; elocutiones explicans quae normaliter visibiles essent ac validae constructae (exempli gratia, ut inactivandi magni ponderis compescmenta); alii valores chordae tribuentes quae defectibus in radice chordae agunt.

Exempli gratia: oppugnator mutationem proponere potest quae in linea includit: si access_level != "user{U+202E} {U+2066}// Perscriptio si admin{U+2069} {U+2066}" {

quae in actione electronica tamquam access_level != "usor" {// Perscriptio ostendetur si admin

Accedit, alius impetus variantis propositus (CVE-2021-42694), cum usu homoglyphorum, characterum specie similes, sed ratione differunt et codicibus unicodes diversis (exempli gratia, character "Ι‘" similis est. a ", " - "g", "Ι©" - "l"). Similia ingenia in nonnullis linguis in nominibus functionum et variabilium adhiberi possunt ut tincidunt seducantur. Verbi gratia, duo functiones nominibus indivisibilibus definiri possunt, quae diversis actibus exercent. Sine analysi accurata, non statim patet quaenam harum duarum functionum in loco certo nominetur.

Fons Troianus impetum in codicem invisibilem in elit

Pro mensura securitatis, commendatur ut compilatores, interpretes et instrumenta conventus, quae characteribus unicodes sustinent, errorem vel admonitionem ostendant si characteres in commentis, chordis literalis, vel identificantibus qui directionem output mutent (U+202A) indiscreta sint; U+202B, U 202C, U 202D, U 202E, U 2066, U 2067, U 2068, U 2069, U+061C, U 200E, U 200F). Tales characteres etiam explicite prohiberi debent in specificationibus programmandi et observandi in codicibus editoribus et interfaces repositoria.

Addendum 1: Vulnerabilitas inaequaliter parata GCC, LLVM/Clang, Rust, Ite, Python et binutilla. GitHub, Bitbucket et Jira etiam exitus constituerunt. A fix pro GitLab in progressu est. Ad cognoscendum codicem problematicum, praeceptum uti suggeritur: grep -r $'[\u061C\u200E\u200F\u202A\u202B\u202C\u202D\u202E\u2066\u2067\u2068\u2069]' / iter/to/ fons

Addendum 2: Russ Cox, unus ex enucleandis Plani 9 OS et in lingua programmandi Go, nimiam attentionem impugnandi methodi descriptam reprehendit, quae iamdudum nota est (Go, Rust, C++, Ruby) et non contemnitur. . Secundum Cox quaestio maxime pertinet ad rectam informationem in codice editorum et interfaces interfaces, quae solvi possunt instrumentis rectis ac analysibus in recensendis codice adhibitis. Ideo potius intendatur ad impetus speculativos, aptius erit ut in meliori codice ac dependentiae recognitionis processibus intenderetur.

Ras Cox etiam credit compilatores non esse ius loci ad problema figere, cum symbola periculosa in compilatoris gradu prohibendo, ingens instrumentorum stratum remanet in quo usus horum symbolorum acceptabilis manet, sicut systemata aedificandi, conventiculi; involucrum mancipes et variae conformationis parsers et data. Exemplum, consilium Rust datum est, quod processus LTR/RTL in compilator codice prohibitus est, sed fixum in sarcina villico onerariae non addidit, quae similem impetum per fasciculum Cargo.toml admittit. Similiter, lima ut BUILD.bazel, CMakefile, Cargo.toml, Dockerfile, GNUmakefile, Makefile, go.mod, package.json, pom.xml et requisita.txt fontes impetus fieri possunt.

Source: opennet.ru