Đóng quảng cáo

Cách đây vài ngày, Apple đã phát hành phiên bản thứ một trăm Cập nhật iOS 7.0.6, về việc phát hành mà chúng tôi đã thông báo cho bạn. Nhiều người có thể ngạc nhiên khi bản cập nhật cũng được phát hành cho iOS 6 cũ hơn (phiên bản 6.1.6) và Apple TV (phiên bản 6.0.2). Đây là bản vá bảo mật nên Apple không thể chỉ cập nhật một phần thiết bị của mình. Hơn nữa, vấn đề này còn ảnh hưởng đến OS X. Theo người phát ngôn của Apple, Trudy Muller, bản cập nhật OS X sẽ được phát hành trong thời gian sớm nhất.

Tại sao có quá nhiều sự cường điệu xung quanh bản cập nhật này? Một lỗ hổng trong mã của hệ thống cho phép bỏ qua việc xác minh máy chủ khi truyền an toàn ở lớp quan hệ của mô hình tham chiếu ISO/OSI. Cụ thể, lỗi là do triển khai SSL kém ở phần diễn ra quá trình xác minh chứng chỉ máy chủ. Trước khi đi vào giải thích sâu hơn, tôi muốn mô tả các khái niệm cơ bản.

SSL (Lớp cổng bảo mật) là giao thức được sử dụng để liên lạc an toàn. Nó đạt được sự bảo mật bằng cách mã hóa và xác thực các bên giao tiếp. Xác thực là xác minh danh tính được trình bày. Ví dụ, trong cuộc sống thực, bạn nói tên (danh tính) của mình và xuất trình ID của mình để người khác có thể xác minh (xác thực). Xác thực sau đó được chia thành xác minh, đây chỉ là một ví dụ với chứng minh thư nhân dân hoặc giấy tờ tùy thân, khi người được đề cập có thể xác định danh tính của bạn mà không cần bạn xuất trình trước cho họ.

Bây giờ tôi sẽ nhanh chóng nhận được chứng chỉ máy chủ. Trong thực tế, chứng chỉ của bạn có thể là chứng minh nhân dân chẳng hạn. Mọi thứ đều dựa trên mật mã bất đối xứng, trong đó mỗi chủ thể sở hữu hai khóa - riêng tư và công khai. Toàn bộ vẻ đẹp nằm ở chỗ tin nhắn có thể được mã hóa bằng khóa chung và được giải mã bằng khóa riêng. Điều này có nghĩa là chỉ chủ sở hữu khóa riêng mới có thể giải mã được tin nhắn. Đồng thời, không cần phải lo lắng về việc chuyển khóa bí mật cho cả hai bên giao tiếp. Khi đó chứng chỉ sẽ là khóa công khai của chủ thể được bổ sung thông tin của nó và được cơ quan chứng nhận ký. Ví dụ, tại Cộng hòa Séc, một trong những cơ quan chứng nhận là Česká Pošta. Nhờ chứng chỉ, iPhone có thể xác minh rằng nó thực sự đang giao tiếp với máy chủ nhất định.

SSL sử dụng mã hóa bất đối xứng khi thiết lập kết nối, cái gọi là Bắt tay SSL. Ở giai đoạn này, iPhone của bạn xác minh rằng nó đang liên lạc với máy chủ nhất định, đồng thời, với sự trợ giúp của mã hóa bất đối xứng, một khóa đối xứng sẽ được thiết lập, khóa này sẽ được sử dụng cho tất cả các lần liên lạc tiếp theo. Mã hóa đối xứng nhanh hơn. Như đã viết, lỗi đã xảy ra trong quá trình xác minh máy chủ. Chúng ta hãy xem mã gây ra lỗ hổng hệ thống này.

static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa,
SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen)

{
   OSStatus err;
   …

   if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
       goto fail;
   if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
       goto fail;
       goto fail;
   if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
       goto fail;
   …

fail:
   SSLFreeBuffer(&signedHashes);
   SSLFreeBuffer(&hashCtx);
   return err;
}

Ở điều kiện thứ hai if bạn có thể thấy hai lệnh bên dưới thất bại;. Và đó chính là trở ngại. Mã này sau đó khiến lệnh thứ hai được thực thi ở giai đoạn chứng chỉ cần được xác minh thất bại;. Điều này khiến điều kiện thứ ba bị bỏ qua if và sẽ không có xác minh máy chủ nào cả.

Điều này có nghĩa là bất kỳ ai biết về lỗ hổng này đều có thể cung cấp cho iPhone của bạn một chứng chỉ giả. Bạn hoặc iPhone của bạn, bạn sẽ nghĩ rằng bạn đang giao tiếp được mã hóa trong khi có kẻ tấn công giữa bạn và máy chủ. Một cuộc tấn công như vậy được gọi là người đàn ông giữa cuộc chiến, tạm dịch sang tiếng Séc là người đàn ông giữa cuộc chiến hoặc người đàn ông trong số. Một cuộc tấn công sử dụng lỗ hổng cụ thể này trong OS X và iOS chỉ có thể được thực hiện nếu kẻ tấn công và nạn nhân ở trên cùng một mạng. Vì vậy, tốt hơn hết bạn nên tránh các mạng Wi-Fi công cộng nếu bạn chưa cập nhật iOS của mình. Người dùng Mac vẫn nên cẩn thận về những mạng họ kết nối và những trang web họ truy cập trên các mạng đó.

Không thể tin được tại sao một lỗi nghiêm trọng như vậy lại có thể xuất hiện trong phiên bản cuối cùng của OS X và iOS. Nó có thể là do việc kiểm tra mã viết kém không nhất quán. Điều này có nghĩa là cả lập trình viên và người kiểm thử đều có thể mắc lỗi. Điều này có vẻ khó xảy ra đối với Apple và do đó có nhiều suy đoán cho rằng lỗi này thực sự là một cửa hậu, hay còn gọi là lỗi này. cửa sau. Không phải vô cớ mà người ta nói rằng những cửa hậu tốt nhất trông giống như những sai lầm tinh vi. Tuy nhiên, đây chỉ là những lý thuyết chưa được xác nhận, vì vậy chúng tôi sẽ cho rằng ai đó chỉ đơn giản là đã mắc sai lầm.

Nếu bạn không chắc liệu hệ thống hoặc trình duyệt của mình có miễn nhiễm với lỗi này hay không, hãy truy cập trang gotofail.com. Như bạn có thể thấy trong các hình ảnh bên dưới, Safari 7.0.1 trong OS X Mavericks 10.9.1 có lỗi, trong khi ở Safari trên iOS 7.0.6 thì mọi thứ đều ổn.

Tài nguyên: iMore, Reuters
.