Showing posts with label Experienced. Show all posts
Showing posts with label Experienced. Show all posts

Wednesday, May 22, 2013

Testing, in the black box (ATV), Security & Privacy



How Automate Testing Vehicles (ATV) should include Pentesting.

Why should privacy officers get involved in development, regression testing process?

Why does IT need to improve their testing strategies?

Pitfalls in Testing, Security/Privacy concerns is what drives people to have nightmares. Privacy officers need to have a better understanding of the environment they work in. The IT people need to embrace the notion that Privacy/Security starts from the beginning. So in that way the chances of being on a front page of a newspaper because of a breach and/or a failure will be minimized. NO ONE wants to phone the CIO about a problem like this. It is a team effort.

I do have to warn you, the reader, that some of the material may be a  little IT oriented. But in an organization where one needs to satisfy a number of different objectives, I would suggest at least a basic knowledge of the IT process is needed. And that the IT personnel need to understand the present compliance/regulator landscape.

Some definitions are warranted before I begin.

ATV or Automated Testing Vehicle. What is it? Why do I care? And is it a 'best practice'? (one of the most over used phrase at present).

The idea is fairly simple. Having a set of scripts (automated) that can be run to test the system in question. The objective is to test the system before any changes are implemented. The process should set up  the files that will be used for testing(see one of my previous blog posts concerning using data for testing),  then run the test scripts, and afterwards run the comparison reports and highlight items of concern from the test just executed. All this is done in an automated fashion. Rather simple concept, but one that can be 'processes' changing in a good way.

Well there is more to this. But let me define another term or two first.

IT systems that are down cost money in lost revenue, and good will to the enterprise.  As an example, in 2012 Google had an outage.
Google June 2012 down for 10 min.

The ball park figure cost that Google suffered was calculated at about $750,000. And that was for 10 minutes.  Now I am not suggesting all downtime costs are that much. It depends on the circumstances, but I am sure no one would like to find out for their own companies.

Another good example of the costs is sited at costs of web down time per industry

This site allows you to calculate the cost of a web site being down per industry/application. Its an eye opener to say the least.

In another 'word', downtime is BAD/EXPENSIVE *Yea  I know that is two words*. But joking aside we need to reduce unavailability as much as possible.

PenTesting. Wikipedia link  The Information Systems Audit and Control Association(ISACA) defines Penetration Testing as  "A test of the effectiveness of security defences through mimicking the actions of real-life attackers."

(For the reader who is more concerned with Privacy/Security, please read on)

So now let's proceed. When an application change happens IT personnel (or a designated organization) tests the changes (IE regression testing). They test the change to see if it works. Now depending on the process that is followed, a user may also test/approve the same series of changes to the application for user approval. Fine, right? Do you notice something missing in the above? In fact, there is more then one item here that needs to be defined/explored.

For many organizations testing to maintain the basic functions within an application does happen in a haphazardly way.  Sure the change is tested and to get to the enhancements, some basic functions are tested as well, But, based on my anecdotal experiences, on many occasions, the entire core functions of the changed application are not testing on a consistent bases.  A test of the all the basic core functions should also be completely tested whenever there is a change.

As an example, if the application in question is some public facing web application (a web store as an example), basic function testing should also be done. Test for example, the ability to add/change a Credit card information and make sure that the update still works. Test adding an item to the shopping cart etc.

So if the new function within the application fails, you have verified that the basic core functions, the one you need to keep the doors open, will still operate.

Imagine if an error occurs at your bank, yet the basic functions were tested successfully with the 'improved mobile bank portal' (the change that will be implemented).  Then logic would dictate that the basic functions should still work (you can still pay bills) even if the enhancement of the bank's mobile app does not. Corrections can be retested and implemented with minimal cost/embarrassment to the organization.

I am therefore advocating that there should be standard testing scripts that confirm, even with the changes that are going to be implemented,  that ALL the core functions still are accessible.

So to implement a process like this, you first need to map out the basic functions that you can not live without. Once that is done and scripts are created, an automated process should be created. When ready, a series of script can be executed with little human intervention. (less change for human error). The 'Best Practice' (there is that phase again) would be something along the lines of submitting the scripts and going home. When you get into the office the following day the results are ready for analysis/correction etc.

This should ensure that at even if the new change fails. You, the customer, can still do business with the organization in question. This is what some people call a ATV (see above). This process can be called your insurance policy.

However, lets' takes this further. Why just test  the basic functionality of the application? Should we also test for Security/Privacy issues?  Should the company's Privacy/Security office ensure that this type of testing, verification is also included within an ATV and executed whenever anything changes?

Absolutely!

A process that includes PenTesting (see above) is something one should consider adding to the above mentioned ATV. With any change there is always a chance that a vulnerability is created that may not have been there before.

Any failure can by it's very nature, cause the potential to expose sensitive information. It can be business secrets, and/or Personnel Identifiable Information (PII) to name but two potential headaches.

There is software in the marketplace that has the capability to engage/test/analyze applications for vulnerabilities. Some of the software I have previously mentioned as well as others which are available with the capabilities needed.

So I suggest that one creates an ATV process that includes the basic functionality of the application/system in question as well as additional testing for security/privacy. All  this should be automated so that more extensive testing can be executed as well as reducing the chance for human error.

Privacy officers need to ensure that any changes that are implemented will not cause exposure that may be costly. IT people need to make sure that the basic systems functions still run, no matter what is changed.

Finally, while no one can claim in absolute terms that there will be no issues, following these basic concepts can help reduce the chance that the CIO needs to be called because of an issue.











Monday, March 18, 2013

Testing and Data Privacy, is there an iIssue, (PART III out of IV)?


Let's recap. In the previous posts I discussed why we should be aware of how application changes are tested within your IT department etc. or we may have a data breach before you know it. Then I explained how to mitigate some of the risks  with different processes/choices and listed the pros and con for each of them.
I will now continue the discussion about the various options, and which ones are the best etc.

So lets get started

The four choices that I presented previously are
1) Create your own test data
2) Copy production data into the test environment
3) Same as #2 but have everyone sign Non-disclosure agreements
4) Same as number #2 but obfuscate(scrub) the data

Looking at the obvious option #2. that is clearly a TABOO or is it?. The reason that we should not do this is obvious, right?  Copying Data  is what happens in the real world today. As far as I know there are not studies along these lines, (most companies would not want to share this type of information) but experience tells me that you would be surprised at the number of companies which have at least some areas where this practice is done regularly. While it can be argued that this would happen only within smaller companies, experience would say otherwise. Remember that you may have a policy in place forbidding this, but in some corner area of IT that has been around for years, they may be practicing "copy the data" because that is how it was always done. That being said, you may be surprised to hear me say that there can be times when there is a legitimate reason (fooled you) to copy production data within a testing environment.

This will be a topic for a future post concerning (and this is a BIG hint) testing, cost, risk  and support issues that revolve around data and data privacy.

For now let's just say this is not a good option and should only be considered in specific areas and reasons.

Option #3 in my opinion is slightly different then just 'saying no'. It should be standard policy that all individuals, no matter who they are, employees, consultants or outsourceers need to sign a non disclosure agreement.  But let me clear, this will not help in preventing any data breaches. And just to remind you why, there are studies concerning data breaches that state that more than 70% of all data breaches are non malicious. If the breach is malicious (disgruntled employee, criminal activity etc.) it will not stop data from be exposed either. So if it does not prevent breaches, why bother? What this  does is make it easier for legal remedies in case there is a need.

Option #1 is a viable option. Many companies I worked with have policies along those lines And in fact chances are that your testers will have to make up some data to test things that should not happen in real life. IE testing for error checking/handling. But is it be all to end all? No. One can never make up all the permutations and combinations one would need to test  to ensure that, first the change worked, and two that it did not break anything else. Now there are processes that mitigate the risks (for another post) involved. However there are no guarantees.

Last but not least there is  Option #4. This option states that all product data copied over to testing should have the Personnel Identifiable Information (PII) scrubbed. There are problems even with this option. To do a good job in scrubbing the data (it took me two years to be able to even pronounce obfuscate, never mind to spell it, so scrub is the term that describes the option as well, and easier to roll off my tongue) takes time, money, expertise and some risk.

So what does the process entail. How does one go about scrubbing data? The first step is to identify all the fields that have PII. Easy, right?. Nope. In this complex world we live in, I can assure you in saying,  No 'data' is an island entire of itself' (to Paraphrase John Donne)

Programs (applications, process etc) work together. The bill that is entered in the Accounts receivable system needs to be posted into the GL (as an example). etc. The bill also has a purchaser's Credit Card Number that feeds the Credit Card processor etc. The address on the bill is entered in the customer information system.

This interaction can be complex to say the least. One application has edits in place to verify a Zip/Postal code matches the address because the program that sends out mail needs to make sure the combinations make sense. But the application that is used for analyzing buying habits may not even look at this.

 Once all the PII fields are discovered and how they are related between applications/files/databases, the next step is to figure out what method should be used to scrub the data given the interaction I just described. Do we scramble the values, or should we generate new ones. Does the data need to follow certain business rules? Are there home made systems that need to be used to mask the data (IE. account number generator).

There are basically four differnet types of scrubbing methods. 

#1 A simple scrambling method. Taking wherever the letter 'A' appears and changing it to 'X' as an example. (there are variations of this to make it harder to reverse it the results).

#2 Looking up a translation table. by various methods  using the original value as a key to find an entry within the translation table. So if that value appears in another location, the same scrubbed value is returned.

#3 Generating new data. Basically either randomly or with some guidelines. This is an issue because every time the same value will be scrubbed, the result will be different this losing consistency.

#4 Replace the data with a 'string' or blank etc. As an example putting 'N/A' in each free form field because no processing is done to that data.

And there are other techniques that I did not mention, such as, date aging, flip flopping of real data, mathematically manipulating the values etc.

After it is determined what techniques are to be used, the next step is 'coding' the rules to be applied. and then testing them. Expect that this is an iterative process because the more you do, the more will appear that you may have missed something.

And finally the implementation of the process.

This is not an easy task, nor is it something that should be taken on lightly. But if you don't want to have your company in the cross hairs of journalists, bureaucrats, courts, general public. You need to do due diligence (making sure you do the best you can to prevent data leakages).

In the next chapter I will talk about how this  fits together in the overall picture, how one needs to  consider other factors when talking about testing.





View Robert Galambos CIPP/C CIPP/IT VA3BXG's profile on LinkedIn























Robert Galambos's Resume


Robert Galambos
M: 416.876.2979   |   rgalambos@gmail.com   |   http://galambos.me/

Professional, results oriented Presales Engineer and Consultant with a proven track record within the software industry, combining high-level sales and marketing knowledge with deep operational experience, technical savvy and cross-functional communication skills. Extensive experience supporting sales initiatives, managing customer relationships, handling customer service calls and consultations, and maximizing client ROI on software solutions.
RELEVANT  SKILLS & CERTIFICATIONS
  • Data Privacy
  • Client Relations
  • Trouble Shooting
  • Security+
  • Data Management
  • HTML/CSS
  • C-level & Client Presentations
  • Executive Communications
  • Staff Training & Development
  • Data Optimization
  • Oracle/SQLServer/DB2
  • WebEx
  • MS Project
  • Customer Service
  • Solutions Demonstrations
  • Technical Consulting
  • Salesforce.com
  • MS Office

Security+   |  CIPP/C  |  CIPP/IT  |  IBM / DB2 9 DBA for z/OS

professional experience
COMPUWARE                                                                                                                1996 to 2013
Sales Engineer / Consultant / Trainer
  • Helped close minimum $2 million dollar sales 13 years in a row.
  • Contributed to a team that achieved a minimum 95 percent maintenance renewal.
  • Held Discover Meetings with current and potential clients to discover client issues, concerns and sales opportunities.
  • Delivered high-impact presentations, trained clients, staff and c-level executives on various solutions, concepts and best practices.
  • Worked with Multiple Projects/Clients simultaneously.
  • Facilitated customers and partners, as well as on-site professional services support such as installations, post sales transition, and configurations upon deployment of software.
  • Liaised with Product Development and Marketing departments reporting on industry/market trends, competition, and proposed new product functionality.
  • Provided technical analysis as well as collaborated with sales to develop cost justifications, to facilitate completion of RFI and RFP responses for various clients in an efficient manner and helped prepared sales package proposals.
  • Managed interoperability and alliance between software solutions and customers’ strategic business plans.
  • Helped potential clients understand, compare and contrast several IT solutions.
  • Produced detailed phone support, and on-site evaluations of clients’ current software solutions.
  • Engaged and coordinated implementation engagements with a +90% success ratio.
  • Served as Project Manager/Team Lead with the participation of 10 team members, developed, updated, disseminated training materials for 10 software products with a specific timeline.
  • Mentored individuals for the Professional Development Program, training non-IT professionals to become support personnel.
  • Was one of the ‘Go To Guys’ for difficult situations/clients.

Delivery Consultant and/or Solution Architect services to major financial institutions I.E. Barclays (UK), Kasikornbank (Thailand), Royal Bank of Canada, Banque National du Canada, among  others.                                                           

  • Determined requirements, Designed, and then Deployed Data Privacy process and successfully meld various complex relationships into a cohesive business process.
  • Resource person on the functionality to both Compuware’s software and the client’s own software environment.
  • Mentored local consultants, foreign consultants, non-bank consultants in both evaluations and interpretation of the project results.
  • Addressed concerns and provided pro-active concepts to the client to maintain the quality of data as well as reducing QA costs. This lead to a 20% reduction of time and material costs.
  • Targeted training on usage of the software.
  • Designed and implemented pilot projects/POCs to completion and presented the solution to the stakeholders.
  • Proactively advised on best practices within the industry and provided various industry resources.

MONTREAL TRUST / BANK OF NOVA SCOTIA                                     1984 to 1996
Principal Analyst & Team Lead
  • Team Lead responsible for financial systems, including payroll, human resources, general ledgers, accounts receivable and accounts payable within the Trust Unit.
  • Supervised analysts responsible for critical financial, HRS and payroll systems. Systems.
  • Apprised management of more efficient methodologies to ensure better business decisions.
  • Provided guidance, instruction, direction and leadership to the team to achieve key results for internal clients & users.
  • Coached and matured the skill level of direct reports in order to continue their long-term development and ensure solid succession planning and departmental success.
  • Liaised with Payroll, HR and Executive Offices as a subject matter expert.
  • Created “What if” scenarios and provided support for non-technical end-users.
  • Worked with the Finance Team to determine the ongoing business needs and requirements for the reporting of all assets, sales, redemptions, management fees, trailer fees, and advisory fees      
Education And Professional Development

B. Comm. - Bachelor of Commerce, Accounting                                                              1979
Concordia University, Montreal, Quebec

IBM DB2 DBA for z/OS                                                                                                         2008
International Business Machine, USA

CIPP/C. – Certified International Privacy Professional/Canada                                       2007
CIPP/IT. – Certified International Privacy Professional/Information Technology              2008
International Association of Privacy Professional, USA

Security+                                                                                                                               2013
CompTIA, USA

CCENT. – Cisco Routing and Switching                                                                 spring 2014
Cisco, USA