Skip to content

Instantly share code, notes, and snippets.

import cats.effect.{ConcurrentEffect, ExitCode, IO, IOApp}
import scala.concurrent.{ExecutionContext, ExecutionContextExecutor}
object ConsumerApplication extends IOApp {
implicit private val ec: ExecutionContextExecutor = ExecutionContext.global
private val cs = IO.contextShift(ec)
implicit private val concurrentEffect: ConcurrentEffect[IO] = IO.ioConcurrentEffect(cs)
val config = ConsumerConfig("localhost:9092", "test-topic", "consumer-group-1")
import java.util.concurrent.{ExecutorService, Executors}
import cats.effect.{ContextShift, IO, Resource}
import scala.concurrent.{ExecutionContext, ExecutionContextExecutor}
class KafkaContext(cs: ContextShift[IO]) {
// A thread pool with exactly 1 thread
private val threadPool = Executors.newFixedThreadPool(1)
protected val synchronousExecutionContext = ExecutionContext.fromExecutor(threadPool)
def execute[A](f: => A): IO[A] = cs.evalOn(synchronousExecutionContext)(IO(f))

Axios npm Supply Chain Attack — March 31, 2026

What Happened

A North Korea-linked threat actor (UNC1069) hijacked the npm account of an axios maintainer and published two backdoored versions. They were live for ~3 hours before npm removed them.

Timeline (UTC)

  • 00:21 — Malicious axios@1.14.1 published (latest dist-tag)
  • 00:39 — Malicious axios@0.30.4 published (legacy dist-tag)
  • ~03:15 — npm removes compromised versions