Taggat med: rubygems

Bakdörrar identifierade i flertalet RubyGems

Att cyberattacker mot Supply Chains såsom rubygems blir vanligare och vanligare är vi många som har förutspått i flera år. Och igår så identifierades en bakdörr i ruby rest-client.

Bakdörren las in via ett hackat konto (mwmanning) och hämtade hem kod från pastebin som sedan exekverades. Liknande attacker har tidigare inträffat mot bl.a. JavaScript-biblioteket (npm) event-stream.

Just denna bakdörr som fanns i Ruby-gems gjorde ett antal olika saker såsom att skicka iväg miljövariabler till hostnamnet mironanoru.zzz.com.ua.

Även identifierades bakdörrar i många andra RubyGems såsom:

  • rest-client: 1.6.10 (downloaded 176 times since August 13, 2019), 1.6.11 (downloaded 2 times since August 14, 2019), 1.6.12 (downloaded 3 times since August 14, 2019), and 1.6.13 (downloaded 1,061 times since August 14, 2019)
  • bitcoin_vanity: 4.3.3 (downloaded 8 times since May 12, 2019 )
  • lita_coin: 0.0.3 (downloaded 210 times since July 17, 2019)
  • coming-soon: 0.2.8 (downloaded 211 times since July 17, 2019)
  • omniauth_amazon: 1.0.1 (downloaded 193 times since July 26, 2019)
  • cron_parser: 0.1.4 (downloaded 2 times since July 8, 2019), 1.0.12 (downloaded 3 times since July 8, 2019), and 1.0.13 (downloaded 248 times since July 8, 2019)
  • coin_base: 4.2.1 (downloaded 206 times since July 9, 2019) and 4.2.2 (downloaded 218 times since July 16, 2019)
  • blockchain_wallet: 0.0.6 (downloaded 201 times since July 10, 2019) and 0.0.7 (downloaded 222 times since July 16, 2019)
  • awesome-bot: 1.18.0 (downloaded 232 times since July 15, 2019)
  • doge-coin: 1.0.2 (downloaded 213 times since July 17, 2019)
  • capistrano-colors: 0.5.5 (downloaded 175 times since August 1, 2019)

Vad man man göra för att förhindra och försvåra för denna typ av attacker? Jo det finns ett antal saker:

Säkra upp utvecklarkonton

Kontot som hackades hade inte tvåfaktorsautentisering påslaget. Gör detta obligatoriskt för denna typ av behörighet. Vilket är något som nu RubyGems funderar på.

Granskning av kod

Precis som processen för att publicera appar i Apple App Store eller Google Google Play så bör kod exekveras i en sandlåda och observeras. Gör den konstiga saker såsom DNS-uppslagningar som inte fanns tidigare?

Givetvis är även manuell kontroll av kod som publiceras bra, men vid många ändringar och mycket kod är det inte alltid möjligt att manuellt granska all kod.

Signering

Se till att det finns ett flöde gällande signering, från exempelvis en hårdvarunyckel såsom YubiKey där en obruten kedja kan verifiera från utvecklaren till den person som installerar paketet.

Isolering

Precis som med all obetrodd källkod som du laddar ner och kör så bör denna isoleras i största möjliga mån. Alla servrar och klienter kanske inte bör ha direkt koppling mot Internet, alla anslutningar och uppslag bör loggas.

Håll nere antalet beroenden

Om du har möjlighet att själv utveckla och underhålla delar av källkoden så är detta att fördra. Men inte alltid möjligt då vi många gånger är beroenden av tredjepartskod såsom bibliotek. Reproducerbara byggen är också ett bra sätt att försvåra för bakdörrar.