Sử dụng Browser Cache để vượt qua SOP

B nhớ đệm có cu hình sai có thể dn tnhiu l hng khánhau. Ví dcác k tn công có thể s dng các máchủ trung gian có cu hình kém (proxy ngược, câbng bộ tihoc b đệm proxy) để dành lquytruy cp vào dữ linhy cm. Thông qua Web Cache Poisoning cũng là mt cách tn công khác để khai thác b nh. 

Chúng ta thường lm tưởng rng bộ nhớ trình duyt là nơi rt an toàđể tthi lưu trữ cáthông tin cá nhân. Nhưng ri ro chính là ở đây khi k tn công có thể giành lquytruy cp vàđó thông qua hệ thng file, là l hng mà thường đượcoi là có độ nguy hithp nht. Bên cnh đótrong mt vàtrường hpcu hình sai tiêđề có thể dn tnhiu vn đề an ninh nghiêtrng. 

Ri ro khi tương tágia các têmin 

Mt vài website có nhiu tên min phụ và các data cđược chia sẻ vi nhau. Điu này thường là bt khả thi do chính sách ca ngun cung (SOP). Có mt vài phương pháp có thể gii quyếđược tình trng rủi ro tương tác gia các tên min, ví dụ như, JSONP (JSON vi Padding). Nhng lp trình viên dùng các phương pháp nàđể thc hin các hành động bo vệ chng li vic lộ thông tin ti các site khác. 

Mt ví dụ đin hình mà có đến 2 tên min phụ đó làblog.example.com và account.example.com. Trong đó account.example.com có JSOP endpoint chuyv nhng dữ liu nhy cm da trên cơ sở ca người dùng. Để tránh bị rò rỉ thông tin, endpoint cn xác nhn tiêđề  Referer để chng li mdanh sách trng”  trong đó bao gblog.example.com. 

Vi s càđặt này, khi người dùng bị d d truy cp vào mt website có mã độc, k tn công không thể trc tiếp ly cáthông tin nhy cm được. Bên cnh đónếu JSONP endpoint cài tiêđề liêquan đến cache, kẻ tn công sẽ có kh năng truy cp vào cáthông tin cá nhât cache ca trình duyt. 

Hành vi ca trình duyt 

Trong lúc cáđặt bộ nhớ đệm sẽ có thay đổi nhỏ trong trình duyt nhưng các khía cnh khác chc chn vn ging nhau. Đầu tiên, chỉ phn hi GET mi có thể được lưu tr. Khi mà trình duyt tiếp nhn các phn hi cho yêu cu ca GET, nó sẽ kim tra các tiêđề phn hđể biết thông tin lưu tr: 

  • Nếu các phn hi bao gm tiêđề Cache-Control: private hay Cache-Control: public, các phn hi sẽ được lưu li cho Cache-Control: max-age=<seconds>. 
  • Nếu phn hi bo gm mt tiêđề Expires, phn hi sẽ lưu li theo giá trị ca chính nó (tiêđề này có đượít sự ưu tiên hơn Cache-Control) 
  • Nếu không có mt tiêđề nào xut hin, mt vài trình duyt sẽ kim tra li tiêđề Last-Modified và thường lưu trữ phn hi này cho 10% chênh lch ca ngày hin ti và ngày chnh sa cui. 
  • Nếu hoàn toàn không có mt tiêđề nào, trình duyt sẽ lưu li phn hi nhưng thường xác nhn li trước khi sử dng nó  

Vn đề có thể phát sinh do s tht rng chỉ có mt b nhớ cache duy nht ca trình duyt dùng cho tt cả các website và nó ch dùng duy nht 1 chìkhoá để xáminh dữ liumt URI sẽ tuyt đối đượchuyn hoá sang (scheme://host:port/path?query). Điu đó có nghĩa rng bộ nhớ cache ca trình duyt không có thêbt cứ thông tin bổ sung nào về yêu cu bt đầu mphn hi cụ thể (ví dkhi ngun t site/origin chc năng JavaScript và thẻ mà to ra nócác cookies liêquan và các tiêđề…). Bt k trang web nào cũng s nhn đượphn hi được lưtrong bộ nhớ cache từ account.example.com min là nó bt đầu mt yêu cu GET cho cùng mt URI.  

Trình tự ca mt cuc tn công  

Dướđây là tng bước gii thích làm thế nào mà các lỗ hng được nhng kẻ tn công dùng để to mt ra mcuc tn công :  

  1. Người dùng vàblog.example.com. 
  2. Mt tp lnh trên blog.example cn thông tin tài khon người dùng 
  3. Trình duyt ca người dùng gi yêu cu ti JSONP endpoint tblog.example.com. 
  4. Phn hi từ JSONP endpoint taccount.example.com chđựng tiêđề cache-related. 
  5. Trình duyêt ca người dùng lưu trữ ni dung phn hi 
  6. Người dùng bị la ti các site độc 
  7. Các site độc cha tp lnh mà cáđim hướng thng ti JSONP endpoint ti account.example.com 
  8. Trình duyt trả li các phn hđược lưu trữ ti các tp lnh ti web độc hi 

Trong trường hp này, tiêđề Referer không bao gi được kim tra li vì phn hi đến t cache. Vì thếk tn công dành được quytruy cp vào cáthông tin cá nhân. 


sop-bypass                 

Các lỗ hng tương t 

Vi cùng mt cách tiếp cn có thể dùng được để khai thác nhiu Cross-Site Script Inclusion (XSSI) và các cuc tn công SOP khác nhau. Các cuc tn công có thể thoát khi sự kim tra cserver-side, ví d, tiêđề Origin, thuc tính SameSite hay các tiêđề tuỳ chnh khác. 

Chúng ta sẽ giả dụ rng account.example.com sử dng Cross-Origin Resource Sharing (CORS) thay cho JSONP endpoint. Nó trả li tiêđề Access-Control-Allow-Origin: * nhưng sử dng mt mã thông báđặc bit từ mt tiêđề tự chđể xác minh người dùng và bo vệ các thông tin nhy cm. 

Nếu các phn hđược lưu li, kẻ tn công có thể ly cp thông tin cá nhân bng cách to yêu cu ti cùng mt URI. Sẽ không có sự bo vệ ca CORS (do Access-Control-Allow-Origin: *) và trình duyt ca người dùng sẽ gi li dữ liđược lưu trong bộ nhớ cache mà không cn kim tra mã tiêđề token. 

Bn có thể thy cách mà nhng lỗ hng này hot động trong thc hành bng cách đánh giá đầu ra ca bng điu khin trình duyti website chuyên dụng. 

Làm cách nàđể bo vệ chng li SOP Bypass  

L hng SOP bypass được miêt là do cu hình sai. Trong trường hp xy ra s tương tác ca cross-originbn nên vô hihoá trình duyt cache. Hu hết các frameworks và các tp lnh được to sn đều không đặt các tiêđề cache-related hoc càđặt li theo mc định (Cache-Control: no-store). Bên cnh đóngườdùng luôphi kim tra li các tiêđề nàđể đảm ban toàn. 

Acunetix với tính năng thu thập thông tin và scan một cách chính xác cùng công nghệ Deepscan, kết hợp khả năng rà soát chuyên sâu lỗ hổng website: SQL Injection và XSS, Out – of – band SQL Injection, DOM – based XSS… giúp phát hiện và đưa ra cảnh báo kịp thời giúp các đơn vị doanh nghiệp, tổ chức tránh được các rủi ro có thể xảy ra.

VNCS – Đơn vị phân phối chính thức sản phẩm Acunetix tại thị trường Việt Nam.

Nguồn: https://www.acunetix.com/blog/web-security-zone/bypassing-sop-using-the-browser-cache/