Viimeksi päivitetty: 28 syyskuuta 2026

Excel-tiedostojen turvallisuus selitetty: XLSX, XLSM ja makroriskit
Vuosikymmenten ajan Microsoft Excel on toiminut liiketoiminnan yleisenä moottorina. Se tasapainottaa yritysbudjetteja, visualisoi monimutkaisia tietoaineistoja, seuraa varastoa ja ohjaa analyyttisiä putkia lähes kaikilla toimialoilla.
Kuitenkin sama laskennallinen joustavuus tekee taulukkolaskentaohjelmista pysyvän suosikin kybervastustajien keskuudessa. Hyökkääjät ovat aseistaneet taulukkolaskentaohjelmat jo 1990‑luvun lopun makrovirusten varhaisista ajoista. Vaikka Microsoft ja järjestelmänvalvojat ovat ottaneet käyttöön useita puolustuskerroksia — kuten tiedostomuotojen erottelua ja oletusmakrojen estämistä — sosiaalinen manipulointi ja hienovaraiset arkkitehtoniset riskit pitävät Excel‑keskeiset hyökkäykset edelleen merkityksellisinä.
Rakentaakseen kestävän turvallisuusasenteen kehittäjien, järjestelmänvalvojien ja edistyneiden käyttäjien on tarkasteltava työkirjan käyttöliittymän alla olevaa tasoa. Ymmärtäminen siitä, miten taustalla oleva OpenXML-muoto toimii, miten .xlsx ja .xlsm eroavat arkkitehtonisesti, ja miten makrojen suorituksen mekanismit toimivat, on elintärkeää nykyaikaisten päätepisteiden suojaamiseksi.
1. Modernien Excel-tiedostojen anatomia: OpenXML purettu
Ennen Microsoft Office 2007:n julkaisua Excel tallensi tiedostot pääasiassa omilla binäärimuodoillaan, erityisesti .xls-muodossa (joka noudattaa Binary Interchange File Format -standardia, eli BIFF8). .xls-tiedostoissa tietueet, muotoilumäärittelyt, kaavat ja Visual Basic for Applications (VBA) -makrovirrat pakattiin yhteen strukturoituun tallennuskonttiin. Tämä teki ohjelmallisen tarkastelun vaikeaksi ja antoi hyökkääjille mahdollisuuden piilottaa haitallisia kuormaskriptejä läpinäkymättömien binäärisektoreiden sisään.
Excel 2007:stä alkaen Microsoft esitteli Office Open XML (OOXML) -standardin (standardoitu ECMA-376:n ja ISO/IEC 29500:n mukaisesti). OOXML:n alla Excel-työkirjat eivät enää ole monoliittisia binääripaloja. Sen sijaan ne ovat pakattuja arkistoja, jotka sisältävät hierarkkisen rakenteen XML-dokumenteista, suhdetietotauluista ja upotetuista media‑resursseista.
ZIP-kontainerin sisällä
Jos otat minkä tahansa nykyaikaisen Excel-työkirjan ja muutat sen tiedostopäätteen .zip-muotoon, voit purkaa sen sisällön millä tahansa tavallisella purkuohjelmalla:
my_workbook.xlsx (extracted)
│
├── [Content_Types].xml <-- Registry of MIME types and structural parts
├── _rels/ <-- Package-level relationship mappings
│ └── .rels
├── docProps/ <-- Metadata (author, creation date, revision)
│ ├── app.xml
│ └── core.xml
└── xl/ <-- Core spreadsheet contents
├── workbook.xml <-- Workbook-level parameters and sheet list
├── styles.xml <-- Cell styles, fonts, and borders
├── sharedStrings.xml <-- Unique string index for performance optimization
├── _rels/
│ └── workbook.xml.rels <-- Sheet and component dependencies
└── worksheets/
├── sheet1.xml <-- Raw cell values, formulas, and grid geometry
└── sheet2.xml
Tämä rakenteellinen muutos tarjosi välittömiä turvallisuusetuja:
- DPI (Syväpakettien tarkastus) & Yhdyskäytävän näkyvyys: Turvallisuuslaitteet, välityspalvelimet ja päätepisteiden agentit voivat purkaa arkiston lennossa ja jäsentää tavallista XML-puuta tunnistaakseen epäilyttävät merkkijonot, ulkoiset URL-osoitteet tai upotetut objektit.
- Deterministinen tiedoston validointi: Jos tiedosto väittää olevansa OpenXML-dokumentti, mutta rikkoo skeeman rajoituksia, Excel kieltäytyy avaamasta sitä tai suorittaa sen hiekkalaatikkotilassa tapahtuvassa palautustilassa.
- Formaattien erottelu: Microsoft erotti tavalliset laskentataulukot tiedostoista, jotka pystyvät suorittamaan upotettuja proseduraalisia skriptejä.
2. XLSX vs. XLSM: Arkkitehtoninen raja
Ensisijainen ero .xlsx- ja .xlsm-tiedostojen välillä on se, salliiko tiedostorakenne suoritettavien makroprojektien sisällyttämisen.
| Ominaisuus / Ulottuvuus | .xlsx (Excel OpenXML -taulukko) | .xlsm (Excel-makroilla varustettu taulukko) |
|---|---|---|
| MIME-sisältötyyppi | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | application/vnd.ms-excel.sheet.macroEnabled.12 |
| VBA-tallennuskontti | Tiukasti kielletty. Ei voida tallentaa vbaProject.bin | Sallittu. Sisältää xl/vbaProject.bin |
| Alkuperäisen suorituksen riski | Merkityksetön makrojen suorittamiselle; rajoittuu kaavainjektiot/DDE | Korkea; voi suorittaa automatisoitua VBA-koodia työkirjan vuorovaikutuksen yhteydessä |
| OpenXML tiukka skeema | Vastaa tiukkoja, makroja sisältämättömiä XML-määritelmiä | Sisältää määritelmät perinteisille ja nykyaikaisille automaatiolaajennuksille |
| Käyttäjän visuaalinen indikaattori | Standardi vihreä taulukkoikoni | Taulukkoikoni, jossa on huutomerkki |
Pakottava mekanismi: Miksi XLSX ei voi suorittaa makroja
Yleinen kysymys juniori‑järjestelmänvalvojien ja kehittäjien keskuudessa on: Mitä tapahtuu, jos hyökkääjä ottaa haitallisen .xlsm-tiedoston, injektoi suoritettavaa koodia ja nimeää tiedostopäätteen uudelleen .xlsx:ksi?
Lyhyt vastaus: Tiedosto ei suorita makroa.
Excel ei perustu pelkästään tiedostopäätteeseen määrittäessään suoritussääntöjä. Kun avataan tiedostoa, jonka nimi on .xlsx:
- Excel tarkastelee zip‑pakettia ja viittaa
[Content_Types].xml-tiedostoon. - Aidossa
.xlsx-tiedostossa kaikki määritetyt sisältötyypit edustavat vakiodatakohteita (kutenworksheet,sharedStringstaistyles). - Jos hyökkääjä injektoi manuaalisesti käännetyn VBA‑virran (
xl/vbaProject.bin).xlsx‑pakettiin ja päivittää suhteet, Excel kohtaa selkeän skeeman ristiriidan:- Se näkee
.xlsx-päätteen, joka on sidottu sisältötyyppeihin, jotka viittaavat makro‑kykyyn. - Excel heittää kohtalokkaan eheysvirheen: “Excel ei voi avata tiedostoa ‘filename.xlsx’, koska tiedostomuoto tai tiedostopääte ei ole kelvollinen. Varmista, ettei tiedosto ole vioittunut…”
- Se näkee
- Jos hyökkääjä jättää sisäiset tyypit koskemattomiksi rekisteröimättä binääritiedostoa, Excel käsittelee
vbaProject.bin-tiedostoa viitteettömänä, orvona liitteenä zip-arkistossa ja hylkää sen kokonaan latausjakson aikana.
Tämän seurauksena tiedosto, joka toimii tiukasti aitojen .xlsx-konttien tavoin, ei voi suorittaa natiivista VBA-koodia. Kuitenkin tämä ei tarkoita, että .xlsx-tiedostot olisivat vapaita kaikista hyökkäysvektoreista, kuten myöhemmin tässä oppaassa tarkastellaan.
3. Makrojen riskit & hyökkäyksen elinkaari
Makroja suunniteltiin automatisoimaan toistuvia kirjanpito-, rahoitusmallinnus- ja datankäsittelytehtäviä Visual Basic for Applications (VBA) -kielen avulla. Koska VBA rakennettiin työpaikan automaatioon, sille annettiin laaja pääsy taustalla olevaan Windows-käyttöjärjestelmään Component Object Model (COM) -rajapinnan, Windows Script Host (WSH) -palvelun ja suorien Win32 API -kutsujen kautta.
Kun epäluotettava makro suoritetaan, se toimii täsmälleen samoilla oikeuksilla kuin kirjautunut käyttäjä. Se ei ole loukussa virtuaalisessa JavaScript-tyylisessä selaimen hiekkalaatikossa.
+--------------------------------------------------------------------------------+
| ATTACK LIFECYCLE |
+--------------------------------------------------------------------------------+
│
▼
[ Delivery & Evasion ] ──────► Spear-phishing email with .xlsm, .xlam, or .zip.
│
▼
[ Social Engineering ] ──────► Lures victim to bypass Protected View ("Enable Content").
│
▼
[ Auto-Execution ] ──────► Auto_Open() or Workbook_Open() triggers automatically.
│
▼
[ System Invocation ] ──────► VBA creates COM objects (WScript.Shell, WinHttp.WinHttpRequest).
│
▼
[ Payload Retrieval ] ──────► Spawns hidden PowerShell/cURL to fetch staging binary.
│
▼
[ Post-Exploitation ] ──────► In-memory execution, credential theft, lateral movement.
Yleiset makrojen sisäänpääsymenetelmät
Automaattisen suorituksen koukut: Hyökkääjät sijoittavat sisäänpääsymekanismin sisäisiin tapahtumankäsittelijöihin, kuten
Sub Auto_Open()taiPrivate Sub Workbook_Open(). Heti kun käyttäjä myöntää suoritusoikeudet, nämä rutiinit käynnistyvät ilman, että käyttäjän tarvitsee klikata taulukossa.Obfuskaatio ja Stomppaus:
- Merkkijonon hämärtäminen: Payloadit piilottavat URL-osoitteet ja järjestelmäkutsut käyttämällä merkkijono-taulukoita, XOR-koodausta, Base64-purkamista tai ympäristömuuttujien yhdistämistä (esim.
Chr(112) & Chr(111) & Chr(119)...). - VBA Stomppaus: VBA on kahdessa muodossa
vbaProject.bin-tiedostossa: tulkattu lähdekoodi ja käännetty p-koodi (pseudokoodi, joka on kohdistettu tietylle Office-versiolle, joka sen käänsi). Hyökkääjät voivat poistaa selväkielisen lähdekoodin kokonaan, jättäen jäljelle vain käännetyn p-koodin. Monet perusvirustorjuntaohjelmat ja staattiset analyysityökalut tarkastelevat vain lähdekoodivirtaa, jolloin p-koodi jää havaitsematta, kunnes se suoritetaan vastaavalla Office-versiolla.
- Merkkijonon hämärtäminen: Payloadit piilottavat URL-osoitteet ja järjestelmäkutsut käyttämällä merkkijono-taulukoita, XOR-koodausta, Base64-purkamista tai ympäristömuuttujien yhdistämistä (esim.
Eläminen maassa (LotL): Nykyaikaiset haitalliset makrot harvoin pudottavat
.exe-tiedostoa suoraan levylle, mikä heti hälyttäisi Endpoint Detection and Response (EDR) -agentit. Sen sijaan ne käyttävät sisäänrakennettuja järjestelmätyökaluja:WScript.Shell-instanssin luominen komentoriviargumenttien suorittamista varten.- Kutsutaan
PowerShell.exesuorituspolitiikalla ohittaen (-ExecutionPolicy Bypass -WindowStyle Hidden). - Kutsutaan natiiveja Win32-API-rajapintoja
Declare PtrSafe Function CreateProcess- taiVirtualAlloc-menetelmien kautta injektoimaan shellcode suoraan järjestelmämuistiin.
4. Muita taulukkolaskentaohjelmien uhkavektoreita (Ylittäen tavallisen VBA:n)
Ympäristön suojaaminen .xlsm-tiedostoja vastaan on vain puolet taistelusta. Vastustajat käyttävät myös mekanismeja, jotka toimivat itsenäisesti perinteisestä VBA:sta.
Dynaaminen tietojen vaihto (DDE) ja CSV -injektio
Excelissä on vanha protokolla nimeltä Dynamic Data Exchange (DDE), jonka tarkoitus on mahdollistaa tietojen jakaminen käynnissä olevien sovellusten välillä (esimerkiksi suoratoistamalla reaaliaikaisia osakekurssitietoja erillisestä ohjelmasta Excel-soluun).
- Miten kaavainsyöttö toimii:
Kun taulukkolaskennan solu alkaa merkeillä kuten
=,@,+tai-, Excel tulkitsee sisällön kaavaksi. Jos hyökkääjä hallitsee syötettä, joka viedään taulukkoon (esimerkiksi puhdistamatonta “Kommentit”-kenttää web-sovelluksessa, joka viedään CSV- tai XLSX-muotoon), hän voi injektoida:=cmd|'/C powershell.exe -w hidden -enc <base64_payload>'!A0 - Kun avataan, Excel arvioi kaavan, varoittaa käyttäjää kehotteella ulkoisen sovelluksen käynnistämisestä ja, jos käyttäjä hyväksyy, suorittaa järjestelmän kuoren.
Excel 4.0 (XLM) -perintömankrot
Ennen kuin VBA otettiin käyttöön vuonna 1993, Excel käytti kaavapohjaista makrojärjestelmää, joka tunnettiin nimellä Excel 4.0 (XLM) makrot. Nämä makrot sijaitsevat omistetuilla makroarkkeilla sen sijaan, että ne olisivat erillisessä VBA-projektissa.
Koska XLM-makrot on kirjoitettu solukaavoina (esimerkiksi =EXEC("calc.exe")), ne kiertävät monia tavallisia VBA:n staattisia tarkastusmoottoreita. Hyökkääjät suosivat XLM-makroja 2010-luvun loppupuolella ja 2020-luvun alussa välttääkseen automatisoidun havaitsemisen, ennen kuin Microsoft poisti ne oletusarvoisesti käytöstä nykyaikaisissa yritysversioissa.
Vahingolliset ulkoiset yhteydet ja OLE-objektit
Tavallinen .xlsx-työkirja voi edelleen aiheuttaa riskin ulkoisten resurssien kautta:
- Upotetut OLE-paketit: Hyökkääjä voi lisätä suoritettavan tiedoston, joka on naamioitu upotetuksi PDF-kuvakkeeksi, suoraan laskentataulukkoon.
- Ulkoiset työkirjalinkit ja verkkokyselyt: XLSX-tiedosto voi sisältää ulkoisia viitteitä, jotka käynnistävät automaattisesti HTTP GET -pyynnöt hyökkääjän hallitseville komentokeskus (C2) -palvelimille tiedoston avautuessa, ja niitä käytetään pääasiassa tiedusteluun tai netNTLM-hashien keräyshyökkäyksiin.
5. Yrityksen koventaminen ja syväpuolustuksen strategiat
Exceliin liittyvien uhkien torjuminen vaatii kerroksellisen lähestymistavan, joka kattaa verkon tarkastuksen, järjestelmäasetukset, käyttöoikeudet ja operatiiviset prosessit.
+─────────────────────────────────────────────────────────+
| ENTERPRISE DEFENSE LAYERS |
+─────────────────────────────────────────────────────────+
| PERIMETER: Drop inbound .xlsm, .xla, and .xltm at mail |
| gateway unless cryptographically signed or exempted. |
+---------------------------------------------------------+
| IDENTITY & POLICY: Enforce ASR rules and apply |
| Mark of the Web (MotW) macro execution blocks. |
+---------------------------------------------------------+
| RUNTIME: Hook AMSI into Office to evaluate dynamic |
| VBA buffers directly before execution. |
+---------------------------------------------------------+
| STORAGE: Restrict macro execution exclusively to |
| managed, centralized Trusted Locations. |
+─────────────────────────────────────────────────────────+
1. Pakota Web-merkintä (MotW) makrojen estäminen
Vuonna 2022 Microsoft päivitti Office-sovellusten oletuskäyttäytymisen: internetistä peräisin olevissa tiedostoissa olevat makrot estetään oletuksena.
Kun käyttäjä lataa tiedoston selaimen tai ulkoisen asiakasohjelman kautta, Windows merkitsee tiedoston vaihtoehtoisella tietovirralla (ADS) nimeltä Zone.Identifier (vyöhyke 3 tarkoittaa Internetiä). Tämän merkin omaaville tiedostoille Excel poistaa makrot kokonaan käytöstä ja näyttää punaisen turvallisuusbannerin: > “TURVALLISUUSVAAJA: Microsoft on estänyt makrojen suorittamisen, koska tämän tiedoston lähde on epäluotettava.”
Hallinnollinen toimenpide: Varmista, että tämä toiminta toteutetaan ryhmäkäytännön kautta, eikä loppukäyttäjät voi ohittaa sitä:
- GPO-polku:
User Configuration > Administrative Templates > Microsoft Excel 2016 > Excel Options > Security > Trust Center - Asetus: Ota käyttöön “Estä makrojen suorittaminen Office-tiedostoissa Internetistä”.
2. Määritä hyökkäyspinta-alan vähentämissäännöt (ASR)
Organisaatioiden, jotka käyttävät Microsoft Defender for Endpointia, tulisi ottaa käyttöön ydin‑Attack Surface Reduction -säännöt, jotka on suunniteltu erityisesti Office-sovelluksia varten:
Estä Office-sovelluksia luomasta aliprosesseja(GUID:D4F940AB-401B-4EFC-AADC-AD5F3C50688A)- Estää Exceliä käynnistämästä PowerShelliä, CMD:tä tai skriptausmoottoreita.
Estä Office-sovelluksia injektoimasta koodia muihin prosesseihin(GUID:75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84)Estä Win32 API -kutsuja Office-makroista(GUID:92E6390C-CF9E-43CE-BD8C-0E6F0FE66680)
3. Hyödynnä haittaohjelmien skannausrajapintaa (AMSI)
Microsoft 365:n nykyaikaiset versiot integroivat VBA-suorituksen suoraan AMSI:in. Vaikka hyökkääjä käyttäisi monimutkaista merkkijonojen peittokoodausta tai VBA-stomppia, VBA-ajonaikainen moottori välittää rekonstruoidut, salaamattomat komennot asennettuun virustorjunta-/EDR-moottoriisi juuri ennen suoritusta, millisekunnin tarkkuudella. Varmista, että päätepisteen suojaus valvoo aktiivisesti AMSI-ajonaikaisia tapahtumia.
4. Siirry luotettuihin sijainteihin ja digitaalisiin varmenteisiin
Organisaatioille, jotka ovat riippuvaisia automatisoiduista taulukkolaskentaohjelmista päivittäisissä toiminnoissa:
- Poista löysät XLSM-tiedostot käyttäjän Lataukset- tai työpöytäkansioista.
- Käytä luotettuja sijainteja: Rajoita makrojen suoritus vain IT-järjestelmänvalvojien hallinnoimiin kirjoitussuojattuihin verkkojaettuihin kansioihin.
- Koodin allekirjoitus: Vaadi, että kaikki sisäisesti kehitetyt makrot allekirjoitetaan kryptografisesti yrityksen julkisen avainin infrastruktuurin (PKI) myöntämällä sertifikaatilla. Määritä Excel suorittamaan vain digitaalisesti allekirjoitetut makrot ja estämään hiljaisesti allekirjoittamattomat.
6. Kehittäjän näkökulma: Turvallisen automaation rakentaminen
Jos rakennat ohjelmistoa, joka jäsentää, luo tai käyttää Excel-tiedostoja (esim. Python-putkistoja käyttäen pandas/openpyxl, Node.js-mikropalveluita tai C#/.NET-sovelluksia), ota käyttöön nämä kehityssuojaustoimenpiteet:
Hylkää odottamattomat tiedostomuodot latausrajapinnassa: Jos sovelluksesi odottaa talousraportteja, tarkista tiukasti, että saapuvat tiedostot noudattavat
.xlsx-muotoa. Tarkista sisäiset magic-tavut (standardin zip-otsake50 4B 03 04) ja varmista, ettei arkiston indeksissä olevbaProject.bin-merkintöjä ennen tallentamista pilvipalveluihin tai tietokantaan.Puhdista data kaavainsinjektioita vastaan: Kun viet käyttäjän luomaa syötettä CSV- tai XLSX-tiedostoihin, lisää solun alkuun heittomerkki (
') tai välilyönti, jos solu alkaa vaarallisilla merkeillä (=,+,-,@,\t,\r):def sanitize_for_spreadsheet(value: str) -> str: if value and value[0] in ('=', '+', '-', '@', '\t', '\r'): return f"'{value}" return valueSiirry VBA:sta Office Scriptsiin tai Web-lisäosiin: Modernissa yritysautomaatiossa vanha VBA tulisi poistaa kokonaan:
- Office Scripts: Kirjoitettu TypeScriptillä, Office Scripts toimii eristettyssä pilviympäristössä ja toimii sujuvasti sekä web- että työpöytäversioissa paljastamatta natiivijärjestelmän kutsuja.
- Office Web -lisäosat: Rakennettu käyttäen standardi HTML:ää, CSS:ää ja nykyaikaista JavaScriptiä, web-lisäosat kommunikoivat hallittujen JavaScript-rajapintojen kautta ja ne ovat eristettyjä paikallisesta käyttöjärjestelmästä.
7. Yhteenvetotarkistuslista taulukkolaskentaohjelmien turvallisuudesta
- Pakota
.xlsxoletuksena: Vaadi, että kaikki tavalliset käyttäjän työnkulut tallentavat makroittomina.xlsx-tiedostoina. - Estä internetistä peräisin olevat makrot: Vahvista, että MotW‑käytäntöjen toteutus on otettu käyttöön organisaatiossasi GPO:n tai Intunen kautta.
- Ota ASR-säännöt käyttöön: Kieltää Office-tuotteiden käynnistää komentotulkkeja tai aliprosesseja.
- Vanhennetaan Excel 4.0 (XLM): Varmista, että vanhat XLM-makromoottorit on poistettu pysyvästi käytöstä kaikilla työasemilla.
- Puhdista sovelluksen vienti: Suojaa CSV- ja Excel-luontirutiinit CSV-/kaava-injektiolta.
- Siirry kohti Office Scripts -ratkaisuja: Muuta vanhat hallinnolliset makrot TypeScript-pohjaisiksi Office Scripts -skripteiksi ja hallituiksi API:ksi.
Kun taulukkolaskentaohjelmat käsitellään eivät pelkästään asiakirjatiedostoina, vaan rakenteellisina ohjelmistokonttainerina, joilla on suoritettavuusominaisuuksia, turvallisuustiimit ja kehittäjät voivat tehokkaasti neutraloida yhden vanhimmista hyökkäysvektoreista yritystietojenkäsittelyssä.
Usein kysytyt kysymykset (FAQ)
K1: Voiko .xlsx-päätteinen tiedosto suorittaa haitallisen makron?
Ei, OpenXML-standardi kieltää tiukasti makrokoodin .xlsx-tiedostoissa, ja Excel hylkää tai poistaa kaikki VBA-projektit, jotka on injektoitu aitoon .xlsx-konttiin.
K2: Mitä minun pitäisi tehdä, jos Excel‑tiedosto pyytää minua “Enable Editing” tai “Enable Content”?
Myönnä oikeudet vain, jos tunnet lähettäjän ja odotit tiedostoa; tämä kehotus on ensisijainen tarkistuspiste, jonka kautta epäluotettavat makrot voivat suorittaa koodia.
K3: Miten Microsoft Excel määrittää, onko tiedosto tullut internetistä?
Windows liittää ladattuihin tiedostoihin piilotetun "Mark of the Web" (Zone.Identifier) -virran, mikä kertoo Excelille avata ne suojatussa näkymässä ja estää makrot oletuksena.
K4: Ovatko CSV‑tiedostot turvallisempia kuin XLSX ja XLSM -tiedostot?
CSV-tiedostot eivät voi sisältää natiivimakroja, mutta ne ovat edelleen alttiita kaava-injektiohyökkäyksille, jos ne sisältävät haitallisia komentoja, jotka Excel suorittaa avattaessa.
K5: Miten nykyaikaiset Office‑skriptit eroavat perinteisistä VBA‑makroista?
Office Scripts -skriptit suoritetaan TypeScriptillä eristetyn ajonaikaisen ympäristön sisällä, mikä estää niitä pääsemästä paikalliseen tiedostojärjestelmääsi, komentoriville tai käyttöjärjestelmän API:hin.