Zover ik het lees kan ik de setup van Haskell redelijk vergelijken met de onze bij XBian en de mijne bij pilight.
In de lijst van hun server kan je zien dat ze de volgende belangrijke server hebben:
- Git server: daar staat de ruwe code van haskell.
- Debian builds: daar staat de deb pakketten voor het distribueren van Haskell op Debian verwante linux versies.
De debian build server cloned / pulled om de zoveel tijd de sourcecode van de Git server en compileerd deze geautomatiseerd. Vervolgens wordt er van deze gecompileerde code een deb pakket gemaakt.
Als dit klopt, dan is het probleem bij Haskell zelf eigenlijk maar heel beperkt. De originele code staat op de Git server en die is niet gehacked. De debian build server doet niks anders dan compileren en deb pakketten maken. Als ze een backup hebben van hun scripts, dan is het zo simpel als opnieuw die server installeren + beveiligen en hun scripts (verbeteren en) terugzetten.
Als je in die periode Haskell hebt geïnstalleerd, dan doe je gewoon even een downgrade via apt en hercompileer je je software:
apt-get install haskell=x.x.x
Zodra de nieuwe veilige versie er weer is kan je simpelweg een
apt upgrade doen en je installeert weer automatisch de laatste veilige versie.
Als mijn aannames kloppen en overeenkomen met onze build infrastructuur, dan is Haskell zelf niet gehacked, zitten er ook geen verborgen backdoors in de code, is ook de compiler niet gehacked enz. Het enige wat er is gebeurt is dat de deb pakketten zijn geïnfecteerd.
Dat betekent niet dat dat laatste geen grote gevolgen kan hebben voor de gebruiker. Mogelijke scenario's die ik zou toepassen als ik deze hacker zou zijn geweest:
- Een eigen deb pakket op hun server zetten. Vervolgens er een dependency naar toevoegen aan hun deb.
- Via een
postinst script eigen code injecteren in systeembestanden.
- Als het zich als een virus gedraagd een simpele
rm -rf /* in de
postinst zetten.
Iedereen die in de tussentijd deze Haskell versie heeft geïnstalleerd doet er dus ook goed aan de broncode van deb pakket te controleren. Deze is voor elk pakket hier te vinden
/var/lib/dpkg/info/[naam].*. Voorbeeld:
# ls -1 /var/lib/dpkg/info/apt*
/var/lib/dpkg/info/apt.conffiles
/var/lib/dpkg/info/apt.list
/var/lib/dpkg/info/apt.md5sums
/var/lib/dpkg/info/apt.postinst
/var/lib/dpkg/info/apt.postrm
/var/lib/dpkg/info/apt.preinst
Controleer daarna ook de
*.list zorgvuldig en vergelijk deze met de
*.list na een down- of upgrade. Kijk of er bestanden instaan die niet in de originele deb zitten.
Als dat allemaal schoon is, dan is een simpele hercompilatie van je Haskell code voldoende.
[Reactie gewijzigd door CurlyMo op 23 juli 2024 13:01]