Nu används en ny teknik och ett nytt sätt för att försöka sprida trojaner. Koden för dessa farliga dataprogram döljs i källkod och kompilatorer för att utvecklare sedan ska luras att ta med koden i sina program.
Poängen är att få in den farliga koden redan på utvecklingsstadiet, i källkoden, vilket kan göra en trojan svårare att upptäcka men också att ge den mer och bredare spridning.
The trick is to use Unicode control characters to reorder tokens in source code at the encoding level.
These visually reordered tokens can be used to display logic that, while semantically correct, diverges from the logic presented by the logical ordering of source code tokens. Compilers and interpreters adhere to the logical ordering of source code, not the visual order.The attack is to use control characters embedded in comments and strings to reorder source code characters in a way that changes its logic.
Unicode
För att inte bli alltför teknisk och komplicerad så handlar det om att använda vissa tecken, se till att koden ligger logiskt upplagd – utan att det ska vara för uppenbart vad koden egentligen gör. Koden kan sedan döljas i Öppen Källkod (Open Source) och i bibliotek och tillägg som används vid utveckling av mjukvara, för att ta två exempel. Koden kan även döljas i kommersiella program, tillägg och funktioner som kan köpas för att användas i appar och program. Med hjälp av det som kallas Unicode så visas ofarlig kod medan kompilatorn – det verktyg som används för att skapa exekverar kod ser och tar med den farliga koden, trojanen. Unicode används för att datorer ska kunna använda information oavsett vilket programmeringsspråk som används. Granskas koden av en utvecklare så ser koden ofarlig ut. Detsamma om kod klipps ut och klistras in av en utvecklare – den kod som visas ser ofarlig ut medan den farliga koden är det som klistras in.
“Therefore, by placing Bidi override characters exclusively within comments and strings, we can smuggle them into source code in a manner that most compilers will accept. Our key insight is that we can reorder source code characters in such a way that the resulting display order also represents syntactically valid source code.”
“Bringing all this together, we arrive at a novel supply-chain attack on source code. By injecting Unicode Bidi override characters into comments and strings, an adversary can produce syntactically-valid source code in most modern languages for which the display order of characters presents logic that diverges from the real logic. In effect, we anagram program A into program B.”
Säkerhetsproblem
De säkerhetsproblem som nu har identifierats finns i C, C++, C#, JavaScript, Java, Rust, Go och Python – alla de stora programmeringsspråken. Säkerhetsforskarnas rapport har publicerat i samarbete med 19 organisationer och företag för att kunna samordna distributionen av buggfixar och säkerhetsfixar samtidigt som informationen offentliggörs.
0 kommentarer