Topics:
In total, there were three security-related sessions: one on each day of the summit.
Notes taken by SofianBrabez originally in text/x-zim-wiki syntax, partly moinmoinified by DagErlingSmørgrav
Present
See DevRandom
ST
Probably for 11.0
rwatson: Use randomness for ASLR in process and kernel markm : RC4 random (dedicated register) use for mititation and aslr randomness in user mode, /dev/random unblock
Recent:
LT:
Whiteboard photos:
Present:
des: libfetch in 10.0 can verify certificate, where we ship the certificate ?! bz: insane to put cert in DNSSEC record rwatson: digital signature ?! bapt: I just need to sign the metadata ?! des: you have to sign packages as well too bapt: already to be able to sign the catalog des: we have around november because pkgng is a port bapt: introduce simon bytesync python tool ⇒ we don't need to use SSH to copy thing.
pjd: LT when using mirrors compromised ? will be a problem / replace a package corrupted
Both ways are OK * easy way
* hard way
future:
10.0 Operational TODO:
10.0 Developer TODO:
10.0 impossible things:
Conclusion: just start adding CPEs and worry about how to use them later.
We will have a short-term plan for 10.0 that isn't pretty but allows us to securely update packages and pkg infrastructure in the field (pkg signing for 10.0.jpeg).
We also need a longer-term plan that we can implement for e.g. 11 (longer term pkg signing plan.jpeg).
A package currently contains: - Two manifest files +MANIFEST - Contains full details, including hashes of each file +COMPACT_MANIFEST - File list, directory list, scripts removed - COMPACT_MANIFEST is only used to know wheter a package needs updated
digest.txz contains: - Signatures of COMPACT_MANIFESTS - digests file is purely an optimisation.
Packagesite.txz contains: - packagesite.yaml - Contains copy of all COMPACT_MANIFEST details, including hash(pkg files)
In the future, digest.txz and packagesite.txz should both be signed.
/usr/local/etc/pkg.conf on client should support: - fingerprint: ….. - include: /etc/… (this support needs to be added, and needs to support multiple includes) - This is to allow people to create their own fingerprint trees and include them
Signatures are RSA, created with OpenSSL
/etc/pkg/keys/ - OpenSSL public keys Contains list of good keys Contains list of bad keys - pkg needs to check bad keys first! /etc/pkg/freebsd.conf “enable: true” to enable official repo
Bootstrapping relies on: pkg.txz pkg.txz.sig (pkg.txz.crt) keys.txz keys.txz.sig pkg bootstrap binary in base verifies SSL signature against /etc/pkg/keys/ key
Need to record which key/certificate created each signature
Signing service needs building - clusteradm (Juniper/pjd?)
Digests need to contain (pkg, reposet, signatures, signature datestamp)
Compromised package sets notified via “pkg audit”, plus security advisory etc
packagesite.txz should contain previous “bad” backage set details
packageset.txz also contains cert/signature mapping
poudriere: ports→packages→repo. Signed. (cert, sig) given to pkg update. pgk update: for each (cert, sig): check cert, fingerprint (with OpenSSL) (check /etc/pkg/fingerprints/bad, check “bad set” list) verify signature (with OpenSSL) …
clusteradm will have key on signing server. so@ will keep copy encrypted against so@ pgp key, just in case.
- CA cert + chain - Key rotation - key distribution through pkgng
OpenSSL doesn't support attribute certificates, so we need to hack around it.
FreeBSD CA \–> sub –» @FreeBSD.org S/MIME | |—> freebsd-update fingerprint (handled in same way as below) \|/ pkg fingerprint file (serves to break the certificate chain) \|/ pkg intermediate \|/ cert \|/ pkg set
Result: FreeBSD CA only signing configuration files. Chain of trust deliberately broken via signing fingerprint files so that lower certificates are untrusted to tools that don't understand how the chain works