Architekturní útoky

SQL Injection

V rámci SOA zahrnují útoky SQL Injection vložení fragmentů SQL do dat XML tak, aby byly vráceny nesprávné informace, nebo za účelem vzniku chyby, která by odkryla přístupové informace k databázi.Úspěšný útok SQL Injection má v rámci SOA dva předpoklady:  Data přijatá službou v architektuře SOA jsou přímo vkládána do příkazu SQL a příkaz SQL je spuštěn s oprávněním dostatečným k vykonání útoku.Pro ochranu před tímto útokem je důležité, aby data přijímaná od nedůvěryhodných uživatelů nebyla přímo vkládána do příkazů SQL. Toho lze dosáhnout vynucenou kontrolou obsahu a pravidly pro zjišťování hrozeb v příchozím obsahu.

Útoky capture-replay

Představte si tento scénář: služba v architektuře SOA je chráněna zásadou, která zajišťuje, že požadavky služby jsou digitálně podepsány. To vypadá bezpečně, ale je to tak? Odpovědí je to, že tento systém je zranitelný vůči útoku, který jednoduše přehraje platně podepsanou zprávu, a získá tak neautorizovaný přístup. Řešení tohoto problému zahrnuje použití časových razítek. Standard WS-Security obsahuje podporu pro časová razítka a zásady WS-Policy lze použít k vyžadování přítomnosti podepsaného časového razítka v příchozích zprávách. Přehraná zpráva bude proto odhalena díky zastaralosti jejího časového razítka. Interval důvěryhodného časového razítka musí být zvolen opatrně. Musí být dostatečně krátký, aby útočník neměl dost času na zachycení, dešifrování a přehrání platné zprávy. Musí však být i dost dlouhý, aby malé rozdíly mezi hodinami počítače webové služby a počítače jejího uživatele nezpůsobily zablokování platných zpráv. Dejte si pozor, abyste si nepletli útoky přehráním s útoky DoS (Denial-of-Service), které způsobí odepření služby zaplavením cíle útoku hrubou silou. Ačkoli oba útoky zahrnují přehrávání zprávy, je útok DoS navržen k zahlcení cílového systému, a tím k jeho zablokování, kdežto ten druhý zneužívá slabinu ověřovacího schématu cílových systémů.

Útok XML External Entity

V tomto případě útočník využívá skutečnosti, že vnější data lze vložit do XML dokumentu pomocí položky DTD [Document Type Definition]. Specifikací místního souboru mohou být některé XML enginy donuceny přistupovat k neautorizovaným informacím z místního souborového systému. SOAP však nesmí používat definice DTD.

XPath Injection

Je pravděpodobné, že útok XPath Injection, který je analogický k útoku SQL Injection, může být použit k získávání informací z databáze XML. Lze jej blokovat zajištěním, že data předávaná výrazu XPath sama neobsahují výraz XPath.

XML Denial-of-Service (XDoS)

Tento útok zneužívá vlastnost definic DTD, zejména schopnost obdržet entity, které jsou definovány v DTD. Rekurzivním získáváním entit může útočník vytvořit XML zprávu, která v paměti „vybuchne“ (odtud pojem XML bomb) a způsobí odepření služby.

Škodící přílohy SOAP

Stejně jako e-mailové zprávy mohou i zprávy architektury SOAP obsahovat přílohy. Tyto mohou být hrozbou, pokud jsou velmi velké a obtížné ke zpracování (např. útok clogging – ucpáním) nebo pokud nesou viry. Řešením je zajistit, aby byly přílohy SOAP blokovány, filtrovány podle typu MIME nebo prověřeny antivirovým skenerem.

Útoky XML Signature dereference

Podpis XML obsahuje element „Reference“, který ukazuje na podepsaná data. Analyzující aplikace musí provést tzv. dereferenci, tj. zjistit referenční identifikátor URI. Standard podpisu XML uvádí, že: „Aplikace pro podpisy XML musejí být schopny analyzovat syntaxi URI. Doporučujeme, aby byly schopny provést dereferenci identifikátorů URI ve schématu HTTP.“ [RFC3075 – XML-Signature Syntax and Processing (Syntaxe a zpracování podpisu XML)]. Přináší to však zranitelnost, pokud jsou odkazovaná data falešná, nebo to může být jen způsob plýtvání prostředky počítače příjemce při stahování velkého souboru.

REST, Web 2.0 a SOA

Ačkoli byla architektura SOA původně spjata s triumvirátem SOAP, WSDL a UDDI, zvolilo mnoho vývojářů použití odlehčených služeb REST, které jsou bližší způsobu, jak prohlížeče komunikují s webovými servery. Přispěl k tomu i trend Webu 2.0, protože bohaté internetové aplikace (RIA, Rich Internet Applications) využívají službu REST k přenosu dat z webových serverů do prohlížečů. Technologie, která umožňuje využívat Web 2.0, obsahuje na straně prohlížeče JavaScript a z větší části na straně serveru volá webové služby REST. Například web Flickr obsahuje JavaScript, který běží v prohlížeči a při přejmenování fotografie volá webovou službu na straně serveru. U technologie Ajax (Asynchronous JavaScript and XML) volá JavaScript na klientské straně webové služby na serveru za účelem získání dat XML nebo JSON (JavaScript Object Notation). To probíhá asynchronně bez nutnosti uživatele přecházet na novou webovou stránku (proto A ve zkratce Ajax znamená Asynchronní). Ve světě Webu 2.0 je to právě backendové prostředí webových služeb, které se stává klíčovým prvkem k útoku. Občas je to nazýváno velkou plochou pro útok na Web 2.0. Útočník se může pokusit zaútočit na aplikaci přes její klientské rozhraní nebo může jednoduše interfejs obejít a zaměřit se namísto toho přímo na backendové webové služby.