Sửa lỗi "App bị hỏng và không thể mở" trên macOS

beginner🍎 macOS2026-03-19| macOS Catalina (10.15), Big Sur (11), Monterey (12), Ventura (13), Sonoma (14) — ảnh hưởng đến các ứng dụng tải từ internet hoặc chuyển qua USB/AirDrop

Error Message

"App" is damaged and can't be opened. You should move it to the Trash.
#macos#ứng-dụng-bị-hỏng#gatekeeper#quarantine

TL;DR

Chạy lệnh này trong Terminal, sau đó thử mở lại ứng dụng:

xattr -cr /Applications/YourApp.app

Lệnh này xóa cờ quarantine mà macOS đã gắn vào ứng dụng. Có hiệu quả trong 90% trường hợp.

Điều gì thực sự đang xảy ra

Mọi file bạn tải về từ internet đều được gắn một thuộc tính mở rộng ẩn gọi là com.apple.quarantine. macOS tự động thêm cờ này — bạn không hề hay biết. Khi bạn nhấp đúp vào ứng dụng, Gatekeeper đọc cờ đó và kiểm tra chữ ký code của ứng dụng trong cơ sở dữ liệu notarization của Apple.

Lỗi đó xuất hiện khi Gatekeeper không vượt qua được bước kiểm tra. Các nguyên nhân thường gặp:

  • Ứng dụng được tải về ngoài Mac App Store và chưa được notarize
  • Thuộc tính quarantine tồn tại nhưng quá trình kiểm tra chữ ký trả về lỗi (phổ biến với các ứng dụng cũ hoặc phân phối qua tải trực tiếp)
  • Ứng dụng được sao chép từ máy khác, ổ USB, hoặc qua AirDrop, có thể làm hỏng metadata quarantine
  • Một bản cập nhật macOS đã thắt chặt quy tắc Gatekeeper, chặn các ứng dụng vốn hoạt động tốt trước đây

Hầu như ứng dụng không thực sự bị hỏng. File nhị phân hoàn toàn ổn. macOS chỉ đang quá thận trọng mà thôi.

Cách sửa 1: Xóa thuộc tính quarantine (khuyến nghị làm đầu tiên)

Mở Terminal và chạy:

xattr -cr /Applications/YourApp.app

Cờ -c xóa tất cả các thuộc tính mở rộng. Cờ -r làm cho lệnh chạy đệ quy — áp dụng cho mọi file bên trong gói .app, không chỉ riêng gói cấp cao nhất.

Nếu ứng dụng không nằm trong /Applications, hãy điều chỉnh đường dẫn:

xattr -cr ~/Downloads/YourApp.app

Mẹo nhanh: gõ xattr -cr (có dấu cách ở cuối), sau đó kéo file .app trực tiếp vào cửa sổ Terminal. Đường dẫn sẽ tự động điền vào.

Kiểm tra lại: Xác nhận thuộc tính quarantine đã được xóa:

xattr /Applications/YourApp.app

Nếu com.apple.quarantine không còn xuất hiện trong kết quả, cờ đã được xóa. Hãy thử mở ứng dụng.

Cách sửa 2: "Mở Anyway" trong System Settings

Không muốn dùng Terminal? Cách thực hiện qua giao diện đồ họa cũng hiệu quả:

  • Thử mở ứng dụng — macOS sẽ chặn và hiển thị hộp thoại lỗi
  • Mở System Settings → Privacy & Security (hoặc System Preferences → Security & Privacy trên macOS cũ hơn)
  • Cuộn xuống cuối phần Privacy & Security
  • Bạn sẽ thấy thông báo kiểu như "YourApp was blocked from use because it is not from an identified developer"
  • Nhấp Open Anyway
  • macOS sẽ yêu cầu xác nhận — nhấp Open

Nhấp Open Anyway sẽ đăng ký một ngoại lệ vĩnh viễn trong Gatekeeper. Bạn sẽ không bị hỏi lại cho ứng dụng đó nữa.

Cách sửa 3: Nhấp chuột phải để mở (bỏ qua kiểm tra lần đầu)

Đôi khi một thao tác nhấp chuột phải đơn giản là đủ để xử lý mà không cần đụng đến Terminal:

  • Nhấp chuột phải (hoặc Control-click) vào ứng dụng
  • Chọn Open từ menu ngữ cảnh
  • Nhấp Open trong hộp thoại xác nhận

Cách này chỉ cần làm một lần — sau đó ứng dụng sẽ khởi động bình thường. Tuy nhiên, cách này không phải lúc nào cũng hiệu quả khi lỗi thông báo cụ thể là "damaged"; Cách sửa 1 đáng tin cậy hơn trong trường hợp đó.

Cách sửa 4: Tải lại ứng dụng

Vẫn bị kẹt sau tất cả những cách trên? Bản thân file ứng dụng có thể thực sự bị hỏng:

  • Xóa bản hiện tại và tải mới từ nguồn chính thức
  • Nếu file đến dưới dạng .dmg hoặc .zip, hãy so sánh checksum với checksum mà nhà phát triển công bố
# macOS native
shasum -a 256 ~/Downloads/YourApp.dmg

# Thay thế (yêu cầu GNU coreutils qua Homebrew)
sha256sum ~/Downloads/YourApp.dmg

Dán kết quả đầu ra cạnh checksum trên trang tải về của nhà phát triển. Nếu không khớp, file đã bị hỏng — hãy tải lại.

Cách sửa 5: Tạm thời tắt Gatekeeper (dùng hạn chế)

Đang chạy nhiều công cụ nội bộ chưa được ký trong môi trường phát triển? Bạn có thể tắt Gatekeeper toàn cục:

sudo spctl --master-disable

Lệnh này chuyển System Settings → Privacy & Security → Allow apps downloaded from sang Anywhere. Apple ẩn tùy chọn đó trong giao diện, nhưng CLI lại hiển thị nó.

Bật lại khi xong:

sudo spctl --master-enable

Đừng để Gatekeeper tắt. Đây là lớp bảo vệ đầu tiên của bạn chống lại phần mềm độc hại chưa được ký.

Tự kiểm tra chữ ký của ứng dụng

Muốn biết chính xác tại sao Gatekeeper từ chối một ứng dụng? Ba lệnh này cho bạn biết tất cả:

# Kiểm tra chữ ký code
codesign --verify --deep --strict --verbose=2 /Applications/YourApp.app

# Kiểm tra trạng thái notarization
spctl --assess --verbose /Applications/YourApp.app

# Liệt kê tất cả các thuộc tính mở rộng
xattr -l /Applications/YourApp.app

Nếu spctl trả về rejected, ứng dụng chưa được notarize — Cách sửa 1 hoặc Cách sửa 2 là lựa chọn của bạn. Nếu codesign hiển thị lỗi chữ ký không hợp lệ, bản thân gói ứng dụng có thể thực sự bị hỏng và bạn cần tải lại.

Tại sao điều này xảy ra nhiều hơn trên Apple Silicon (M1/M2/M3)

Các máy Mac dòng M thực hiện kiểm tra Gatekeeper nghiêm ngặt hơn so với Mac Intel trước đây. Các ứng dụng chỉ dành cho Intel trên Apple Silicon phải qua Rosetta 2 — và nếu chúng cũng gặp vấn đề cờ quarantine, bạn sẽ gặp lỗi "damaged" cộng thêm với sự không tương thích kiến trúc. Cách sửa 1 vẫn giải quyết được. Nếu nhà phát triển chưa phát hành bản binary universal hoặc bản native cho Apple Silicon, ứng dụng có thể không chạy được dù bạn làm gì với cờ quarantine.

Tóm tắt kiểm tra lại

  • Sau xattr -cr: chạy xattr /Applications/YourApp.appcom.apple.quarantine không nên xuất hiện
  • Sau "Open Anyway": ứng dụng sẽ khởi động mà không có hộp thoại nào
  • Sau khi tải lại: kết quả của shasum -a 256 khớp với checksum trên trang của nhà phát triển

Related Error Notes