security

How to prevent the Wormhole hack (2022)

What are sysvar accounts? used for classic operations needed within the solana runtime What is Instructions sysvar? needed if an instruction needs to reference instructions in the same transaction How the Solana wormhole hack could have been prevented (and some hypotheticals).

Bitwarden

problems: copy pasting plaintext = stored in register pro: open-source, can self-host store encrypted version on cloud, decrypt on client side. Encrypt and decrypt on client side!

Touch ID

Question: isn’t the fingerprint data just stored on the hardware register and equality checked anyway? No, a hashed version is stored. Input is hashed to check it against it. In a secure “sandboxed” region called the security enclave only part of fingerprint, not whole thing (a sample) How do you create a sandbox in hardware?

Firmware

soft - fluid firm - meant to be read-only, permanent. interface software and hardware. Before OS hard - physical UEFI (Unified Extensible Firmware Interface) BIOS (Basic Input Output System) At the end of the day, UEFI is a spec that needs implementation

Zero Knowledge Proofs (ZKPs)

Motivation I first got introduced to ZKPs through the crypto world, through a currency called Monero. I always thought money laundering with Bitcoin was possible, but it’s not really. Bitcoin is pseudo-anonymous, and there are lots of marked and ‘poisoned’ bitcoins out there people know were acquired through hacks or other black market activity.

Near Field Communication (NFC)

What prevents them from being cloned? - Nothing. - Unique ID in ROM segment (ID cannot be changed then)

Assembly Ref

In computer org, data allocation happens on the stack (more limited, faster, more immediate actions) and heap (adaptable, slower, dynamic memory). data segment for variables, code segment also shellcode is asm instructions in hex code (architectures have shellcodes represent certain operations)

Buffer Overflow

Buffer overflow happens when an unsafe buffer that reads in inputs goes outside the bounds of it’s intended memory address It can be deadly because the stack can be overwritten Can return an overwritten memory address by manipulating the eip register, which is the instruction pointer (next instruction) It may be harder to overwrite local variables and less useful, since compiler optimization may not overwrite where you want it to.