De aanleiding voor de storing waar Rabobank donderdag 7 april 2011 mee te maken had, blijft vooralsnog onbekend. De bank is intern wel een technisch onderzoek gestart, maar weet vooralsnog niet hoe alles kon mislopen en negenhonderd klanten via internetbankieren de rekening van iemand anders voorgeschoteld kregen. Ondertussen speculeren lezers van Computable over de oorzaak.
Lezer Marcel merkt op dat onderhoud aan de website zeer waarschijnlijk niet de storing heeft veroorzaakt en dat er zeer waarschijnlijk in de achterliggende systemen iets is misgegaan. ‘Een website verzint natuurlijk niet zomaar om de gegevens van een andere klant op te halen, dat ligt waarschijnlijk in de back-office daarachter waar een query niet goed gaat.'
Check, check en dubbelcheck
‘IT-er' is het met Marcel eens. ‘Waarschijnlijk is er een verkeerde query gedraaid waardoor na inloggen de verkeerde rekeninggegevens opgehaald worden. Als dat het geval is, is de oplossing simpel voor in de toekomst: check, check en dubbelcheck nog beter je queries voordat je deze uitvoert.'
Lezer Chris denkt dat het probleem te maken heeft met kernel caching op een IIS-webserverfarm. ‘Onder grote load worden dezelfde sessionIDs verstrekt voor meerdere sessies. Dit stond standaard aan (machine.config) op IIS-servers van voor versie 6. Het zou me niet verbazen als banken nog achter zouden lopen en een boerderijtje met IIS 5-machines hebben draaien. Inmiddels heeft Microsoft deze configuratieoptie standaard uitgezet en dit probleem in de top tien gezet van application pitfalls.'
Hybride oplossing
Het idee dat het aan een IIS-server zou liggen, wordt door ‘knutsel' ontkend. ‘Ik heb als beheerder gewerkt op de afdeling waar dit fout gegaan is. Ik kan je verzekeren dat zo'n grote bank geen IIS-servertjes heeft. Ze hebben fouttolerante systemen, meerdere beveiligingslagen en uitwijklocaties.'
‘Chris' laat zich niet te snel afpoeieren door ‘knutsel'. ‘Ik zeg niet dat alle applicatieservers een IIS frontend farm gebruiken. Ik kan me voorstellen dat voor een hybride oplossing is gekozen en dat de financiële transactiesystemen strict gescheiden moet zijn qua technologie als de frontend servers. Anders kom je de audits al meteen niet door. Dus die queries waar IT-er mee komt, lijken me ook niet de oorzaak.'
Iemand anders worden
Toch denkt lezer Chris wel het probleem te herkennen. ‘Dit lijkt alles te maken te hebben met de frontend servers, die delen de sessieIDs uit. Veel architecten vinden frontend servers minder belangrijk ,zetten daar het stempel ‘niet business/mission critical' op, want deze hebben de functie om gegevens vanuit backend systemen alleen maar te tonen; wie wat mag zien wordt daar niet geregeld. Dat ze ook nog een functie hebben om het http-protcol statefull te 'laten lijken', wordt vaak vergeten of geacht dat een webserver dat automagisch regelt. Dat klopt, maar dus niet altijd! Aannemlijk is dat dat de login een sessionID heeft opgeleverd die meerdere keren is uitgegeven. Tijdens je sessie was de gebruiker eerst nog jezelf op de frontend server, maar na een aantal requests kun je dan iemand anders worden, omdat de webserver de requests niet meer uit elkaar kan halen.'
‘Chris' weet niet of dat hier ook gebeurd is, maar deze casus komt hem wel iets te bekend voor. ‘Ook omdat je dit in labtests bijna niet kunt reproduceren, omdat dit alleen voorkomt onder specifieke high-load omstandigheden. Voordat ik deze conclusie in mijn geval kon trekken, heeft mij dit een half jaar onderzoek gekost in samenspraak met Microsoft Redmond, die daarna heeft besloten deze kernel caching in volgende versies uit te zetten.'
Hetzelfde ip-adres
Lezer knutselis het met ‘Chris' eens. ‘Ik denk ook wel dat de fout in verwisseling van sessies zit. Misschien stelt iemand zich voor dat een bank draait op twee pc's en dat de hele administratie van de bank bestaat uit een paar MySQL-tabellen. Zo is het niet. Alles draait om onvoorstelbaar grote getallen en een tekening met alle betrokken hardware voor telebankieren beslaat meerdere A3'tjes. Wat denk je dat er gebeurt als alle 5 miljoen klanten van een bank kerstinkopen gaan doen? Daar zijn die systemen op berekend. Ik denk eerder dat het iets banaals is als twee machines hetzelfde ip-adres geven, na een verhuizing. Ik denk niet dat dit de schuld is van een programmeur.'
Gist? Wat moet de rabobank met gist? Brood bakken?
Sorry, ik kon het niet laten :’)
@Sander Hulsman
Ik wacht met smart op een reactie van de schrijver van dit kwaliteits artikel!
Er staan toch gewoon F5 Loadbalancers voor de webserver farm, die zien toch wel of er een dubbel ip adres gebruikt is, dus zal het zeker wel in de backend gezocht moeten worden.
Ja eerst een laag F5 load balancers die load balancen naar IIS 5 webservers die ook de link die ik eerder geplaatst heb (netcraft) in het andere artikel.
Hahaha, wat is dit voor een Sesamstraat voorlees artikel zeg: “Toen kwam Tommy binnenlopen en vroeg aan Pino, Pino waarom zit je zo sip te kijken. Pino zei: tja, ik wilde mijn laatste banksaldo opvragen maar nu zie ik ineens dat meneer Aart veel meer geld op zijn rekening heeft dan ik? Meneer Aart, vroeg Tommy, kan je zijn gegevens inzien dan? Tja, ik snap het niet, Ieniminie vertelde mij dat het ook al vreemd was…”
KLasse hoor, en lekker zo vanaf de bron opgezet!
Er wordt hier van alles geschreven door mensen die geen idee hebben hoe de automatisering van Rabobank Nederland in elkaar zit. Ik weet wel iets, en daarom reageer ik, maar ik word door de eerste de beste PC-boer weggezet als onbenul.
Computable had ook zelf even wat onderzoek kunnen doen. Dan hadden ze in ieder geval een inschatting kunnen maken van wie er iets zinnigs te melden heeft en wie de plank volledig mis slaat.
( hint : ik zou de reactie van “Marcel” er uit gelaten hebben. )
De Rabobank gebruikt diverse soorten hardware en software, maar de kern van de transactieverwerkende systemen wordt gevormd door HP-NonStop computers.
“kern van de transactieverwerkende systemen wordt gevormd door HP-NonStop computers”
Heeft er iemand ooit anders beweert?
Het is een feit dat de rabo ergens in http://rabobank.nl IIS 5 webservers gebruikt zoals ik reeds bewezen heb
Jij zei dat Rabo geen IIS gebruikt “servertjes” alsof het pruts software is, en ze gebruiken WEL IIS.
@knutsel: Ik heb ooit een presentatie meegemaakt van de ICT infrastructuur van de Rabo op een NGI-lezing. Ik weet er vrijwel niets meer van maar kan me ook niet herinneren dat het bijzonder complex was.
Een dubbel ip-adres als oorzaak – zoals jij suggereert -kan ik me niks bij voorstellen, zeker niet op het front end platform. De doublerende server merkt het onmiddelijk en gaat offline. Bij de server met hetzelfde adres en de domeincontrollers komt er een melding dat er een adres conflict is. Ook lijkt het mij ondenkbaar dat daardoor op toepassingsniveau perfect informatie van de verkeerde Raboklant in een sessie geleverd zou worden. Retourverkeer van TCP-handshakes zou gewoon op de verkeerde ip-node afgeleverd worden.
Als de pool van interne IP-adressen kleiner is dan het aantal externe verzoeken wat binnenkomt, en wat door de security handler wordt afgehandeld die achter de firewall zit, neemt een nieuw binnenkomend verzoek het reeds uitgegeven interne ip-adres over (immers de pool is op). Vervolgens ziet diegene de gegevens van de ander.
Komt zo vaak voor….
Ongetwijfeld hebben ze ergens in de organisatie wel windows-servers en IIS.
Het punt is dat kritische systemen als telebankieren op HP-NonStop draaien.
Ook de webservers.