Dùng GitHub private vulnerability reporting: trang Security → Report a vulnerability của repo. Vui lòng không mở issue công khai cho lỗ hổng chưa vá. Chúng tôi phản hồi trong vòng 7 ngày và phối hợp công bố sau khi có bản vá.
Phiên bản được hỗ trợ: bản release mới nhất.
Bộ gõ là phần mềm đọc mọi phím bạn gõ — thiết kế của PinaKey tối thiểu hoá đặc quyền và minh bạch về từng thành phần:
| Thành phần | Chạy với quyền | Ghi chú |
|---|---|---|
Addon fcitx5 (pinakey.so) |
tiến trình fcitx5 của user (không đặc quyền) | Toàn bộ xử lý phím trong tiến trình; không mạng, không telemetry. |
Lõi Rust (pinakey-ffi) |
như addon | Logic thuần; I/O duy nhất: đọc/ghi file cấu hình trong ~/.config/pinakey/ (ghi atomic). |
| GUI thiết lập | user | Ghi config + gọi D-Bus session org.fcitx.Fcitx5 để áp config (#69). |
| Daemon uinput (TÙY CHỌN, mặc định KHÔNG cài/bật) | user tại seat (ACL uaccess trên /dev/uinput) |
Xem chi tiết dưới. |
Không thành phần nào ghi lại nội dung gõ: engine chỉ giữ buffer từ đang soạn trong RAM; log (stderr/journal) không chứa văn bản người dùng.
Thành phần "đặc quyền" duy nhất, và chỉ tồn tại khi bạn tự build với
-DPINAKEY_BUILD_UINPUT_SERVER=ON và bật service + PINAKEY_UINPUT=1:
- Khả năng duy nhất: tạo một thiết bị bàn phím ảo chỉ khai báo phím Backspace
(
UI_SET_KEYBIT KEY_BACKSPACE) và phát tối đa 999 Backspace mỗi yêu cầu. Không đọc thiết bị nhập nào, không đổi cấu hình thiết bị của bạn. - Socket filesystem có quyền:
$XDG_RUNTIME_DIR/pinakey/uinput.sock— thư mục0700, socket0600(sinh ra đã đúng quyền qua umask, không có cửa sổ chmod) — tiến trình khác user bị chặn ngay từconnect(). - Xác thực client 2 lớp (phòng thủ tầng hai sau quyền filesystem):
SO_PEERCRED(UID phải trùng user phục vụ) vàreadlink /proc/<pid>/exephải là binary fcitx5 ở prefix chuẩn (/usr/bin,/usr/local/bin) — không tinargv[0]/cmdline vì giả được. Có unit test (fcitx5/test/testpeerauth.cpp). - Quyền hệ thống tối thiểu: udev rule chỉ gắn tag
uaccesscho đúng/dev/uinput(ACL theo seat đang hoạt động — user không ngồi máy không mở được); systemd unit chạy quyền user vớiNoNewPrivileges,ProtectSystem=strict,ProtectHome=read-only,PrivateTmp.
readlink /proc/<pid>/execó cửa sổ TOCTOU hẹp (pid tái sử dụng) — chấp nhận được trong threat model desktop (kẻ tấn công cùng UID vốn đã thao túng được phiên của bạn).
- Tiến trình độc hại cùng UID với bạn: trên desktop Linux, nó vốn đã đọc được
~/.config,ptraceđược fcitx5, và ghi âm bàn phím qua nhiều đường khác — PinaKey không (và không thể) bảo vệ chống lại nó, chỉ bảo đảm không mở rộng thêm bề mặt (daemon uinput chỉ cho nó bơm… Backspace). - Nội dung clipboard / bộ nhớ các ứng dụng khác.