Adversaries implant malicious code in open source software (OSS) libraries to have it widely distributed, as OSS is commonly downloaded by developers and other users to incorporate into software development projects. The adversary can have a particular system in mind to target, or the implantation can be the first stage of follow-on attacks on many systems.
Description
Attack Execution Flow
Step 1
Explore[Determine the relevant open-source code project to target] The adversary will make the selection based on various criteria:
The open-source code currently in use on a selected target system.
The depth in the dependency graph of the open source code in relationship to other code bases in use on the target system. Choosing an OSS lower in the graph decreases the probability of discovery, but also decreases the scope of its use within the target system.
The programming language in which the open source code is implemented. Different languages present different opportunities for using known software weaknesses.
The quality of processes in place to make a contribution. For instance, some contribution sites use static and dynamic analysis tools, which could increase the probability of discovery.
The security requirements necessary to make a contribution. For instance, is the ownership lax allowing unsigned commits or anonymous users.
[Determina il progetto di codice open-source rilevante da targettizzare] L’avversario effettuerà la selezione in base a vari criteri:
Il codice open-source attualmente in uso su un sistema target selezionato.
La profondità nel grafo delle dipendenze del codice open-source rispetto ad altri codebase in uso sul sistema target. Scegliere un OSS più in basso nel grafo riduce la probabilità di scoperta, ma diminuisce anche la portata del suo utilizzo all’interno del sistema target.
Il linguaggio di programmazione in cui il codice open-source è implementato. Diversi linguaggi presentano opportunità differenti per sfruttare vulnerabilità note del software.
La qualità dei processi in atto per contribuire. Ad esempio, alcuni siti di contribuzione utilizzano strumenti di analisi statica e dinamica, che potrebbero aumentare la probabilità di scoperta.
I requisiti di sicurezza necessari per effettuare un contributo. Ad esempio, la proprietà è permissiva consentendo commit non firmati o utenti anonimi.
Step 2
Experiment[Develop a plan for malicious contribution] The adversary develops a plan to contribute malicious code, taking the following into consideration:
The adversary will probably avoid easy-to-find software weaknesses, especially ones that static and dynamic analysis tools are likely to discover.
Common coding errors or missing edge cases of the algorithm, which can be explained away as being accidental, if discovered, will be preferred by the adversary.
Sometimes no identity is required to make a contribution. Other options are to steal an existing identity or create one. When creating a new identity, strike a balance between too little or too much detail. Using an stolen identity could cause a notification to be sent to the actual user.
[Develop a plan for malicious contribution] L'attaccante sviluppa un piano per contribuire con codice dannoso, tenendo in considerazione quanto segue:
L'attaccante probabilmente eviterà vulnerabilità software facili da individuare, in particolare quelle che gli strumenti di analisi statica e dinamica sono suscettibili di scoprire.
Errori di codifica comuni o casi limite mancanti dell'algoritmo, che possono essere spiegati come accidentali, saranno preferiti dall'attaccante se scoperti.
A volte non è richiesta alcuna identità per contribuire. Altre opzioni sono quella di rubare un'identità esistente o crearne una. Quando si crea una nuova identità, bisogna trovare un equilibrio tra troppo poco o troppo dettaglio. Utilizzare un'identità rubata potrebbe causare l'invio di una notifica all'utente reale.
Step 3
Exploit[Execute the plan for malicious contribution] Write the code to be contributed based on the plan and then submit the contribution. Multiple commits, possibly using multiple identities, will help obscure the attack. Monitor the contribution site to try to determine if the code has been uploaded to the target system.
[Eseguire il piano per un contributo malevolo] Scrivere il codice da contribuire in base al piano e poi inviare il contributo. Più commit, possibilmente utilizzando più identità, aiuteranno a oscurare l'attacco. Monitorare il sito di contribuzione per cercare di determinare se il codice è stato caricato sul sistema target.
Consequences
Consequence Information
{'impacts': [], 'impacts_translate': [], 'scopes': [], 'scopes_translate': []}