Onderzoekers hebben een nieuwe aanval ontwikkeld genaamd "Trojan Source" waardoor het mogelijk is om kwetsbaarheden op zo'n manier in broncode te verbergen waardoor het niet zichtbaar voor menselijke ogen is. "We hebben manieren ontdekt om broncodebestanden zo te manipuleren dat menselijke reviewers en compilers een andere logica zien", zegt Ross Anderson, hoogleraar Security Engineering aan de Universiteit van Cambridge en één van de onderzoekers achter de aanval.
Voor het uitvoeren van de aanval wordt er gebruik gemaakt van Unicode "directionality-control override characters" die een anagram van de werkelijke logica tonen. Voor het encoderen van tekst moeten zowel talen worden ondersteund die van links-naar-rechts lezen, zoals Engels en Russisch, en talen die van rechts-naar-links lezen, zoals Arabisch en Hebreeuws.
Wanneer scripts verschillende teksten bevatten moet er een manier zijn om de conflicterende leesvolgorde op te lossen. Unicode maakt hiervoor gebruik van het Bidirectional, of Bidi, algoritme. In sommige gevallen is de volgorde die Bidi gebruikt niet voldoende. Voor deze gevallen zijn er "override control characters". Deze "Bidi overrides" zijn onzichtbare karakters die het mogelijk maken om de weergavevolgorde van groepen karakters te veranderen.
Dit kan voor problemen zorgen. De meeste programmeertalen staan namelijk toe om deze Bidi overrides aan comments en strings in de code toe te voegen. Compilers en interpreters negeren de tekst in deze opmerkingen. "Door Bidi override characters binnen comments en strings te plaatsen, kunnen we ze de broncode binnensmokkelen op een manier die de meeste compilers accepteren", aldus de onderzoekers. "Ons belangrijkste inzicht is dat we broncodekarakters kunnen herordenen op een manier dat de resulterende weergavevolgorde ook syntactisch geldige broncode weergeeft."
De code zou voor een menselijke reviewer onschuldig lijken, maar in werkelijkheid iets vervelends kunnen doen, aldus Anderson. Hij merkt op het vooral slecht nieuws is voor opensourceprojecten zoals Linux en WebKit waar willekeurige mensen aan kunnen bijdragen. "Door het injecteren van Unicode Bidi override characters in comments en strings, kan een aanvaller in de meeste moderne talen syntactisch geldige broncode produceren waarvan de weergavevolgorde van karakters een logica weergeeft die verschilt van de echte logica", merken de onderzoekers op.
Als oplossing adviseren de onderzoekers dat compilers en interpreters die Unicode ondersteunen foutmeldingen laten zien bij unterminated bidirectional control characters in comments of strings. Programmeertalen zouden in hun specificaties het gebruik van deze karakters moeten verbieden. Verschillende partijen, waaronder Atlassian, hebben advisories over de aanval uitgebracht.
Deze posting is gelocked. Reageren is niet meer mogelijk.