db và dbx khác nhau thế nào?
Giải thích db và dbx trong Secure Boot: allowed database, forbidden database, revoke image, certificate/hash, dbx update và debug boot bị chặn.
Bạn có một file BOOTX64.EFI đã ký. Trước đây boot được, sau một lần BIOS update hoặc Windows update thì boot thất bại với EFI_SECURITY_VIOLATION. Khi kiểm tra Secure Boot variables, bạn thấy db vẫn còn key cho phép, nhưng dbx đã được cập nhật. Đây là lúc cần hiểu rõ db và dbx.
Nói ngắn gọn: Trong Secure Boot, db là allowed signature database, dùng để cho phép image/certificate/hash được tin cậy. dbx là forbidden signature database, dùng để chặn hoặc revoke image/certificate/hash không còn được tin cậy. Khi xác thực image, firmware thường kiểm tra dbx trước, rồi mới xét db.
db và dbx nằm ở đâu?
Secure Boot variable database
UEFI Variable Store / NVRAM
├─ PK
│ └─ Platform ownership
├─ KEK
│ └─ Authority to update db/dbx
├─ db
│ ├─ Allowed X.509 certificates
│ ├─ Allowed image hashes
│ └─ Allowed signature lists
└─ dbx
├─ Forbidden certificates
├─ Forbidden image hashes
└─ Revoked vulnerable bootloaders/drivers db và dbx đều là authenticated variables. Muốn cập nhật chúng, update phải được ký bằng authority phù hợp, thường liên quan đến KEK hoặc PK tùy policy.
Secure Boot kiểm tra db/dbx như thế nào?
Firmware loads EFI image
Image có thể là bootloader, UEFI app, driver hoặc Option ROM.
Calculate image hash
Firmware tính digest và đọc chữ ký/certificate của image.
Check forbidden database
Nếu image/hash/cert match dbx, image bị chặn.
Check allowed database
Nếu image/cert/hash match db, image được cho phép.
Apply platform policy
Xét thêm SetupMode, SecureBoot, image type và vendor policy.
Allow or Security Violation
Không allowed hoặc bị revoked thì trả lỗi/chặn boot.
db là gì?
db chứa những thứ firmware tin cậy để cho phép UEFI image chạy.
| Entry trong db | Ý nghĩa | Debug |
|---|---|---|
| X.509 certificate | Cho phép image được ký bởi cert/chain tương ứng | Signer phải chain tới cert trong db |
| Image hash | Cho phép đúng một image cụ thể | Rebuild image làm hash đổi |
| Signature list | Format chứa nhiều entry theo UEFI | Parser/dump cần đọc đúng |
| Owner GUID | Cho biết entry thuộc owner nào | Audit nguồn trust |
| OEM/OS vendor cert | Cho phép bootloader vendor | Restore factory keys thường khôi phục |
| Custom cert | Cho phép custom bootloader | Dễ mất khi restore defaults |
| Append entry | Thêm trust mới | Sai thành replace sẽ mất trust cũ |
| Replace database | Thay toàn bộ db | Có thể làm OS không boot |
dbx là gì?
dbx chứa các entry bị cấm hoặc revoke. Nó là cơ chế quan trọng để chặn bootloader/driver đã từng trusted nhưng sau đó phát hiện lỗ hổng.
| Entry trong dbx | Ý nghĩa | Debug |
|---|---|---|
| Forbidden image hash | Chặn đúng image cụ thể | Bootloader cũ bị block |
| Forbidden certificate | Chặn mọi image ký bởi cert đó | Ảnh hưởng rộng hơn hash |
| Revoked bootloader | Image bị revoke vì vulnerability | Sau dbx update boot fail |
| Revoked Option ROM | UEFI OpROM bị chặn | Pre-boot network/storage mất |
| Signature list | Format chứa nhiều forbidden entries | dbx có thể lớn |
| Owner GUID | Nguồn revoke entry | Audit update |
| Append dbx | Thêm revoke entry | Có thể làm image đang dùng bị chặn |
| Replace dbx | Thay toàn bộ revoke database | Có thể mất revoke quan trọng |
So sánh db và dbx
| Khía cạnh | db | dbx |
|---|---|---|
| Tên đầy đủ | Allowed Signature Database | Forbidden Signature Database |
| Vai trò | Cho phép image trusted | Chặn image/cert/hash bị revoke |
| Khi match | Image có thể được chạy | Image bị block |
| Ưu tiên | Thường xét sau dbx | Thường xét trước db |
| Entry phổ biến | Cert vendor, custom cert, image hash | Hash/cert bị revoke |
| Tác động update | Thêm trust mới | Thu hồi trust cũ |
| Rủi ro khi sửa sai | Cho phép quá rộng hoặc mất OS key | Chặn nhầm bootloader đang dùng |
| Debug lỗi | Image không trong db | Image nằm trong dbx |
Certificate vs hash trong db/dbx
Một entry có thể là certificate hoặc hash. Hai kiểu này có phạm vi ảnh hưởng rất khác nhau.
| Loại entry | Trong db | Trong dbx |
|---|---|---|
| Certificate | Cho phép nhiều image được ký bởi cert đó | Chặn nhiều image ký bởi cert đó |
| Image hash | Cho phép đúng image có hash đó | Chặn đúng image có hash đó |
| Phạm vi | Rộng hơn | Rộng nếu cert, hẹp nếu hash |
| Khi image rebuild | Vẫn pass nếu ký lại bằng cert trusted | Hash allow cũ không còn match |
| Rủi ro | Cert bị lộ làm nhiều image nguy hiểm được ký | Revoke cert có thể chặn nhiều image hợp lệ |
| Dễ quản lý | Tốt cho vendor/key chain | Hash tốt cho exception cụ thể |
| Debug | Check signer chain | Check exact digest |
| Policy | Phụ thuộc mức trust muốn cấp | Phụ thuộc mức revoke muốn áp |
dbx update đến từ đâu?
dbx có thể được cập nhật qua BIOS update, OS update hoặc cơ chế vendor-specific.
| Nguồn | Ý nghĩa | Debug |
|---|---|---|
| BIOS/firmware update | Vendor cập nhật default dbx hoặc migrate dbx | Behavior đổi sau BIOS update |
| OS update | OS đưa dbx update qua authenticated variable | Sau Windows/Linux update bootloader cũ bị chặn |
| Manual enrollment | Admin thêm forbidden hash/cert | Custom policy |
| Factory restore | Restore dbxDefault | Có thể mất hoặc thêm revoke entry |
| Enterprise management | MDM/security baseline | Nhiều máy đổi cùng lúc |
| Recovery flow | Có thể áp policy riêng | Debug môi trường recovery |
| Security advisory | Revocation do vulnerability | Cần update bootloader trước |
| Custom mode | Người dùng tự quản dbx | Dễ mismatch với OS expectation |
db/dbx và Secure Boot modes
Secure Boot mode ảnh hưởng cách db/dbx được sử dụng và cập nhật.
| Mode/trạng thái | Ảnh hưởng | Debug |
|---|---|---|
| Setup Mode | Chưa có PK active, key enrollment thường dễ hơn | Không giống production enforcement |
| User Mode | PK active, db/dbx update cần authenticated authority | Policy enforce thật |
| Standard Mode | Dùng factory/default keys | db/dbx theo vendor/OS baseline |
| Custom Mode | Admin tự quản keys/db/dbx | Dễ mất key hoặc block nhầm |
| SecureBoot OFF | Image verification không enforce như ON | db/dbx vẫn có thể tồn tại |
| SecureBoot ON | db/dbx dùng để allow/block | Security Violation nếu fail |
| Audit Mode | Có thể log thay vì block tùy platform | Không nên nhầm với production |
| Deployed Mode | Policy chặt hơn | Key update/debug khó hơn |
Debug Diary: Image signed nhưng bị Security Violation
Triệu chứng:
Image đã ký
Secure Boot ON
LoadImage -> EFI_SECURITY_VIOLATION
Checklist signed image bị chặn
Debug Diary: Sau dbx update, bootloader cũ không chạy
Triệu chứng:
Trước update boot OK
Sau dbx update: Security Violation
Checklist dbx update làm boot fail
Debug Diary: Restore Factory Keys làm custom boot fail
Triệu chứng:
Custom bootloader trước đó chạy
Restore Factory Keys xong bị chặn
Checklist factory keys làm mất custom db
Debug Diary: Thêm cert vào db nhưng image vẫn fail
Triệu chứng:
Enroll custom cert vào db
Custom EFI app vẫn Security Violation
Checklist db enrollment nhưng vẫn fail
Debug Diary: dbx chặn quá rộng
Triệu chứng:
Sau khi thêm forbidden certificate vào dbx
Nhiều image hợp lệ cũng bị chặn
Checklist dbx entry quá rộng
Anti-pattern khi hiểu db/dbx
| Anti-pattern | Vì sao sai | Cách sửa |
|---|---|---|
| Chỉ kiểm db, bỏ qua dbx | Revoked image vẫn bị chặn | Luôn check dbx trước |
| Nghĩ signed là đủ | Signer phải trusted và không revoked | Check db + dbx |
| Replace db khi muốn thêm cert | Mất vendor/custom keys | Append đúng cách |
| Revoke certificate khi chỉ cần revoke một file | Chặn quá rộng | Cân nhắc hash revoke |
| Không backup keys/databases | Khó recover | Export db/dbx trước khi sửa |
| Apply dbx update trước bootloader update | Boot fail | Update bootloader trước |
| Disable Secure Boot để fix | Che root cause | Xác định db miss hay dbx hit |
| Không log owner GUID/entry | Audit khó | Document từng entry |
Instrumentation nên có
| Vị trí | Nên log | Mục tiêu |
|---|---|---|
| Variable dump | db/dbx size, hash, entry count | Biết database đổi không |
| Entry summary | Cert subject/hash/owner GUID | Audit trust/revoke |
| Image verify | Image path, signer, digest | Biết image target |
| dbx check | Match cert/hash nào | Root cause bị block |
| db check | Match cert/hash nào | Root cause allowed |
| SetVariable | Append/replace, status | Enrollment debug |
| Factory restore | Before/after db/dbx diff | Detect lost custom key |
| dbx update | Update source/version | Regression debug |
| Boot fail | EFI_SECURITY_VIOLATION + image path | Support debug |
| Good/bad diff | Database entries and image digest | Tìm thay đổi |
db/dbx debug playbook
db/dbx debug playbook
Security checklist
Security checklist cho db/dbx
Khi đọc db/dbx dump nên tìm gì?
| Cần hiểu | Tìm trong dump | Câu hỏi |
|---|---|---|
| Database size | db/dbx size | Có thay đổi bất thường không? |
| Entry count | Số signature lists/entries | Có entry custom/factory không? |
| Signature type | Cert hay hash | Phạm vi allow/revoke rộng hay hẹp? |
| Owner GUID | Owner của entry | Entry từ vendor, OS hay custom? |
| Certificate subject | Signer identity | Image chain có match không? |
| Hash | Exact image digest | Image cụ thể có match không? |
| Before/after diff | Entry thêm/xóa | Update nào gây fail? |
| dbx overlap | Same cert/hash trong dbx | Có revoke override db không? |
| Mode | Standard/Custom | Database có expected baseline không? |
| Attributes | Authenticated variable attrs | Update path hợp lệ không? |
Câu hỏi tự kiểm tra
Tự kiểm tra sau khi đọc note này
Blog seeds
- db và dbx trong Secure Boot khác nhau thế nào?
- Vì sao signed bootloader vẫn bị Security Violation?
- dbx update là gì và vì sao có thể làm boot fail?
- Certificate vs hash trong Secure Boot database
- Debug db/dbx khi custom UEFI app không chạy
Bài liên quan
- Secure Boot là gì?
- Secure Boot Keys là gì?
- Authenticated Variable là gì?
- Image Authentication là gì?
- Secure Boot Setup Mode là gì?
- Secure Boot User Mode là gì?
- EFI Security Violation
- PCI Option ROM là gì?
- Measured Boot là gì?
- TPM Event Log là gì?
Nguồn tham khảo public
- UEFI Specification
- Tianocore EDK II
- EDK II SecurityPkg
- Microsoft Secure Boot documentation
- Trusted Computing Group specifications
Bài viết này hữu ích với bạn?
Bạn có thể chia sẻ cho người đang học firmware, BIOS/UEFI, embedded systems hoặc ủng hộ tác giả.
Nội dung liên quan
Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.
Image Authentication là gì?
Giải thích Image Authentication trong UEFI: PE/COFF signature, Secure Boot db/dbx, hash, certificate chain và debug EFI_SECURITY_VIOLATION.
Secure Boot User Mode là gì?
Giải thích Secure Boot User Mode trong UEFI: PK active, key update authority, db/dbx enforcement, Custom Mode và debug Security Violation.
Secure Boot Setup Mode là gì?
Giải thích Secure Boot Setup Mode trong UEFI: khi chưa có PK, enrollment keys, custom mode, factory keys và debug Secure Boot chưa enforce.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.