Tuesday, 28 March 2017

Why Blogger?

I have been asked a few times why I host my blog on Blogger and not on my own site.

The answer is simple, right now I do not have much time to manage a blog platform and do not feel the need. My personal blog is a secondary activity that I do for fun and in the hope that people find it useful, so there is no incentive to invest a great time on the running of it.

In the past, I not only hosted my own blog, but I also wrote the code behind it. This was a great learning experience but requires a time investment that I do not currently have.

But, you are an expert, you should be showing your skills! Well, yes, I do know what I am doing and that is one of the reasons why I am outsourcing the running of the blog to Google. By doing this, I know I will not make money from the blog (not that I intend to, anyway) and lose control over many things that are only possible when you self-host, but I also do not have to keep the system up to date, manage security issues on my code or any libraries I am using or keep up with spam comments (not that people comment anyway).

Finally, my blog is a perfect candidate for being just static content hosted somewhere but that would require me to use a third party for comments, at which point, I am not far off from where I am now, so I might as well take full advantage of someone else hosting the blog for me.

GDPR - The five things you wanted to know (but were too afraid to ask)

This entry was originally posted on the Workshare blog, at https://www.workshare.com/blog/gdpr-the-five-things-you-need-to-know-but-were-too-afraid-to-ask.

The General Data Protection Regulation (GDPR) is a new law that will come into effect in the European Union (EU) on the 25th of May, 2018. Its primary goal is to strengthen and unify data protection for individuals in the EU. The GDPR replaces the Data Protection Directive from 1995 and marks a major departure in many aspects.

Without further ado, let’s look at the five things you need to know about the GDPR and how it changes the rules.

1. Changes the definition of personal data

Article 4 defines personal data as ‘any information relating to an identified or identifiable natural person’. Up to now, some clarification was required to define ‘identifiable’, but this has been clarified in Recital 26 as being possible to identify by ‘all means reasonably likely to be used’. This means that while data may not be by itself identifiable by the business that holds it, it may still be considered personal if it can be used to identify a person via aggregation with other data sources.

The GDPR also clarifies that personal identification does not need to be a name, it includes things like IDs, online handles, IP addresses and cookies.

2. Requires consent

Valid consent will be required before storing or processing personal data. This consent includes the data collected and the purposes it's going to be used for.

3. Depends on the data subject location, not just the company location

In the past, EU data protection regulation only applied to businesses within the EU. The GDPR specifies that any company that handles the personal data of individuals within the EU are now responsible for the data and must follow regulations, no matter where the company is located. This means you can’t escape this regulation just by being outside the EU region.

Of course, by being in the EU, you’re still subject to the regulation, no matter where your data subjects are.

4. Includes responsibilities for processors, not just controllers

In GDPR parlance, the controller is the business that receives the data and consent directly from the data subject, while the processor is any company that processes or stores the data for the controller.

Under the GDPR, processors are required to demonstrate the same level of compliance and security as the controller. The processor is also required to notify of any breaches ‘without undue delay’. Considering that the controller is required, by law, to promptly notify the authorities of any breaches, this is a major point of contention and the relation between controller and processor must be governed by a binding contract.

Processors are also not allowed to transfer data to any sub-processor without written agreement with the controller and, even in the case of an existing agreement, prior notice will need to be provided in case the controller wants to raise objections.

5. Increases and clarifies the rights of the data subject

The GDPR includes provisions regarding the right of modification and erasure of data, especially in cases of non-compliance with lawfulness.

Just two more things, promise...

Sorry, it’s more than 5 things, but there is much information to digest. At this point, you can see that the new legislation brings major changes to the management of personal data, but we’re not done yet!

We’ve left the best for last.

6. Breach notification

Any data breach including personal data must be reported to the relevant authority within 72 hours. There is no definition of what the lowest level of a data breach is, so potentially any breach at all will require notification.

Individuals concerned must also be notified if it is determined that they will suffer adverse effects.

7. Severe penalties

Failure to follow the GDPR, including failure to notify of a breach, may include a fine of up to 20m EUR or 4% of global revenue for the previous year, whichever is greater, as well as regular audits.

As you can see, the GDPR is an extensive change to data protection regulation in the EU, extending its protection beyond the existing level and scope and massively increasing requirements and fines.
One key thing about this legislation is the fact that it comes into effect in May 2018, which is not long from now, considering that it requires a complete overhaul in the way data is managed.

How can I prepare for the GDPR?

The first thing to do is get an understanding of the data you currently handle. You need to know all the data you process and which of it is considered personal data.

Once you’ve determined what data you handle, you must design and implement processes for correctly handling that data, including all protective measures to prevent breaches. The standard approach is to establish a baseline of what is considered to be normal behaviour and then set protective measures to initially alert on abnormal behaviour or breaches.

Don’t forget, the process is not only about detection and prevention, it must also consider how the business will deal with a breach, including notification and response times to avoid financial penalties.

Last, but not least, you must train your staff to identify and correctly handle personal information and how to escalate quickly in the case of a breach. People will make mistakes, so your processes should prevent errors from causing a breach when possible and, if not, quickly raise awareness of the existence of a breach so it can be investigated, resolved and reported.

The Security Evangelist - Lesson V: Availability

This entry was originally posted on the Workshare blog, at https://www.workshare.com/blog/security-evangelist-lesson-v-availability.

The final aspect of security I want to discuss in this series is Availability; the ability to access data when needed. While this is normally something that is not considered part of security, it is part of the CIA (Confidentiality, Integrity, Availability) approach that we use at Workshare.
Availability can be in conflict with security, especially with confidentiality; after all, the most secure computer is one unplugged from the network and turned off, but that is not useful if you need data.

There are different levels of availability issues, from temporary ones to complete data loss and all of them need to be considered.

In order for data to always be available when needed, we have to first understand the requirements.

Availability considerations usually include the following elements:
  • Determining availability requirements.
    • Availability periods: Some data must be available 24/7, but other data may only be needed Monday to Friday - during office hours. If you do not need 24/7 availability you will be able to schedule maintenance out of business hours without affecting your users.
    • Up-time requirements: Due to the nature of computer systems, it is impossible to guarantee 100% availability and, even if it was possible, it may not be cost effective. Usually, up-time requirements are guaranteed by a Service Level Agreement (SLA) with your customers.
    • Definition of what uptime is: In most cases, availability SLAs may not cover the whole infrastructure or service or include hard limits on response times.
  • Risk analysis: Identifying the different things that may go wrong in the infrastructure (including human error), how they will affect availability and how they can be mitigated.
  • Technical measures: There are a number of technical measures to help with availability. At the most basic level, you can increase availability (and cost!) by adding redundancy and eliminating, or at least reducing, single points of failure, but you can go all the way into self-healing systems.
  • Constraints: There will be multiple constraints at different levels, such as monetary, architectural, staffing or even technical ones, which will lead the requirements.
  • Monitoring: This is a combination of automation and manual intervention to verify that the system is "up". A common approach to monitoring sets different thresholds that go from healthy to warning (the system is approaching its limits) to critical, where the system is unavailable.
  • Processes: A major aspect of maintaining high levels of availability is recovering from failure situations. This includes technical measures as well as processes and documentation ensuring that issues are handled quickly and correctly.
    • One often forgotten approach is the existence of Business Continuity and Disaster Recovery processes and tools that ensure the system can be brought back up after major incidents with the infrastructure or business.
Once all the considerations are in place, it comes to developing a plan that allows us to reach or exceed availability goals within the estimated budget, making sure it gets reviewed on a regular basis. On top of scheduled reviews, the plans should be reviewed after changes to the service, including code, infrastructure or architecture. In most cases, there should be a capacity plan that looks ahead to ensure scalability issues are addressed before they become a problem for availability.

The move to the cloud has changed completely the approach to availability. While in the past the approach was to set up systems that did not fail, with enough capacity to handle peak load, now the normal approach is to have fault-tolerant systems that can scale up and down as required. This approach can be both cheaper and more reliable, but it requires design with those constraints in mind and will complicate the solution.

At Workshare services are designed with availability and scalability in mind. All of our services are replicated, with minimal single points of failure and a multi-cloud approach to ensure that an outage at our main provider will not affect our customers.

This is the final post in The Evangelist series. I hope you have enjoyed them!

Cisco WebEx: What went wrong?!

This entry was originally posted at https://www.workshare.com/blog/cisco-webex-what-went-wrong.

I try to keep up with the latest security news, but sometimes it feels like it's impossible to read everything that happens - too many things going wrong too many times.

One of the most important ones I have seen of late is a remote-execution hole in the Chrome plugin for WebEx, a conferencing program widely used by around 20M people across the world, particularly in enterprises.

What this means, in plain English, is that by visiting a URL in your Chrome browser, a remote attacker can then run any software on your computer with your current permissions and without you having to do anything. All you have to do is click on the wrong link on your email, Slack, Skype or a website and you may be in for someone doing whatever they want with your computer.

The interesting part is how it works. It looks like the plugin has a backdoor/remote command execution capability. What this does is allow you to control it remotely. The plugin also includes a C runtime, a low-level library that provides various bits of functionality and, which is what allows you to run arbitrary commands via a function to execute arbitrary commands at the operating system level.

How did it get there? We have no idea.

We can guess that it was done during development time, to be able to test different parts of the application and was then forgotten or maybe put there on purpose, but either way it indicates that Cisco security practices have been shaky (to say the least). The fact that the URL requires a reasonably complicated string to trigger the behaviour may indicate that there was some effort to secure the application, which was ineffective.

The recommended solution was to remove the affected version and update to version 1.0.3, but, again, it was not properly tested and did not fully resolve the issue. Any XSS from webex.com would have still allowed a remote attacker to run things on your system. Version 1.0.5, which is the patched version, is still vulnerable. For our clients who are users, or for any users in fact, the only safe option right now is to fully remove the plugin until Cisco issues a valid fix. If you really need the plugin, at the very least upgrade to 1.0.5.

And, be careful out there.

References:
WebEx security issue: https://bugs.chromium.org/p/project-zero/issues/detail?id=1096
Issue with the original fix: https://twitter.com/filosottile/status/823655843388395525
Long standing VPN bug: https://blogs.cisco.com/security/shadow-brokers

The Security Evangelist, Lesson IV: Integrity continued...

This post was originally posted on the Workshare blog at https://www.workshare.com/blog/the-security-evangelist-lesson-iii-integrity-continued.

Data integrity is quite a subject and couldn't be covered in one blog, so here's part ii. How to prove the integrity of your data...

Integrity guarantees do not prevent authorized modification of data, otherwise it would be impossible to add new versions of a document. What they do is provide users with ways of identifying all changes and who made them.

To be able to prove the integrity of your data you have to establish what the baseline is; the original data that you want to protect. A normal assumption is that the first version of a document is the canonical version and that any others that appear later are a modification of the original.

You then have to establish policies and controls around handling the data. This will ensure people understand how to manage it, whether it’s critical or not, and what to do when something goes wrong.

It is important to set permissions and tooling to prevent accidental modification and provide monitoring and metrics that enable you to assess events as they happen, depending on the criticality of the data in question.

There must be an established process to identify changes to data, including details about the changes themselves - the authors, modification times and any other data that will enable auditing. It should not be possible to modify data without leaving traces and common policy indicates that rolling back is impossible. If a version of a document is detected to be faulty, a new version undoing the mistake should be added and both kept for historical purposes.
Logs must be kept for as long as legally required and must include enough protection to prevent tampering. A common approach for this is to allow systems to generate logs that get exported to a separate system to prevent tampering and require a completely different set of permissions to access the logs. The ideal approach is to enable append-only logs, where data cannot be modified once it is in the log, no matter what level of permission you may have.

Finally, you must set up policies and processes to deal with unauthorized modification. This must not be an afterthought, in the event of a major breach you must be working on resolving the issue, not trying to understand how you can start investigating or who you should be talking to. All requirements should be established in advance, including communications, reporting and crisis management. The criticality of this last step cannot be underestimated, specially with new data protection legislation coming out, such as the GDPR, which requires timely reporting to customers and the authorities on any data breaches.

The importance of data integrity must be fully understood across a business. A corrupt or incorrectly modified document in circulation will not only incur reputational loss, it may also cause large amounts of financial pain in the form of legal cases and external audits.
Once policies and controls are in place, it becomes a matter of regularly reviewing and verifying them and taking any learnings from events and the way they are handled, whether successful or not.

In later posts, we will look at how blockchain can help create logs that are open and tamper-proof.



Thursday, 26 January 2017

How to handle a support request: GitLab

The same way as I complain when someone does a lousy job, I want to give props to a company that seems to do it just right.

I am a GitLab user by choice. A while ago I moved most of my repositories there. The initial reason for the move was that, at the time, GitHub did not allow private repositories for free users and I like to keep my projects private until I am ready to publish them.

Since then, I have not found a reason to move, it just works. Admittedly, I am a very light user, but I like what I see. As a security professional, I also like that they offer an on-premises solution and an open source one so you can fix issues if you find them.

A couple of days ago I got a GitLab invitation to a group I had not heard about. It sounded suspicious but I am currently waiting for a couple of technical tests to come my way and thought that it could be related and, in any case, there should be nothing that could attack my computer on the locked-down browser I use, so I accepted.

When I got into the group, there were over 180 users in there, but no other content. I dug out a bit more and all of the users had joined in the last 3 or 4 hours or were pending. At this point, I was sure that there was something wrong with this group, so I left and went to report it.

I sent an email to the support email (readily available in multiple places) and an email address that I guessed for the security team (no bounce, so it may actually have reached them) and got a receipt notification at 15:24. So far, so good.

At 16:34 I got a confirmation email to let me know that someone was looking into the reported issue.

At 16:38 got another confirmation email telling me that the user that invited me had been identified as a spammer and was being dealt with and a link referring to a ticket about a similar issue.

So, in less than 1:30 they read my report, performed an investigation and sent me a reply with the actions they were taking. Colour me impressed, specially because this is for a free account and I have never paid them a penny.

I have seen GitLab representatives in multiple technical sites. Whenever someone mentions any issue with the product, there will be one asking for more details and I have not seem them been rude or anything like that.

They have also been increasing the capabilities of the free version of the software as people requested them, while keeping obviously enterprise-related features for the paid one.

I was obviously pre-disposed to use them professionally before but now, after this experience, I am even keener. If they provide this level of support and responsiveness for free customers, I expect them to be great for paying ones.

Well done GitLab!

Wednesday, 4 January 2017

Choosing Your Next Programming Language

It's the time for New Year resolutions and many of you will choose to learn a new programming language.

As with all choices, there are many ways of deciding the one you want but, having done this a few times, this is the criteria that I use.

First all, what do you want to achieve by learning a new language?

If you want to find a new job, your best bet is one of the really popular languages, which means something like JavaScript, Java, C#, Python, PHP or Ruby. These are not the most exciting languages but they will increase the possibility of getting a new job.

Of course, if you do know of a company you want to work for, just choose whatever stack they use. 

Also keep in mind that you are not only choosing a new programming language, you are also choosing a complete environment, with different tooling, libraries, documentation and even may require different OS. With the rise of Open Source and Free software, the cost should not be that much of an issue anymore and most licenses will allow you to use the software for free, but it's worth keeping an eye on.

If you would like to improve your development skills, there are two approaches that you can take, take a language that you already know and focusing in pushing the boundaries, EG. writing a complete new framework from scratch, try focusing on areas you do not normally do like doing embedded work if you normally do desktop applications or backend if you do frontend.

You can also choose a new language, using a different paradigm from what you normally use. For functional languages, you can use Haskell (pure, lazy evaluation), Scala (hybrid functional/oop on the JVM), F# (hybrid functional/oop on the CLR) or OCaml (hybrid functional/oop, compiled to native). For actor based systems, Erlang, Elixir (a more modern language on the Erlang VM, with improved libraries, tooling and macros), Scala. If object oriented is what you want, you could look at Ruby (dynamically typed, OO), Smalltalk (the daddy of OOP) or many others. If you want to program with statically typed languages, you can choose a new one (Go, Rust and Swift are popular) or go with statically typed languages that extend dynamic ones, such as Flow or TypeScript.

A different (and complimentary) way to choose a language is to decided what you want to do. Web development? Java, C#, Ruby, Python, PHP, JavaScript. Web APIs? The previous ones plus Go. Desktop application development? C#, Java, C++. Mobile applications? Swift for iOS, Java for Android, JavaScript for both (with Cordova/React Native), C# with Xamarin for both. System and command-line development? C, C++, Rust.

Again, you will often use the language that provides the frameworks and libraries that you need. If you want to do Windows desktop development, your best bet is C#, if you are doing Linux, probably C++ or C, etc.


In my experience, the most important thing about learning a new language is to find a project that you want to do and driving it to completion. Start small and then, once you have something completed, then add to it or find a more ambitious target.

Before someone asks, my chosen languages for early 2016 are a completely new language for me in an area I haven't done for a while, systems programming, for which I've chosen Rust and a language that I know but haven't done seriously for a while, JavaScript, both backend and frontend.

Thursday, 8 December 2016

The Security Evangelist, Lesson III: Integrity

This post was originally posted on the Workshare blog at https://www.workshare.com/blog/the-security-evangelist-lesson-iii-integrit.

In this post, I am going to talk about integrity.
When talking about security, integrity is one of those factors that most people take for granted. At its most basic level, integrity is about making sure that the data you put somewhere is exactly what you get out, that it has not been corrupted or modified in any sense.
For individuals, this means that the data must be kept exactly as you put it in. You do not want the data to become corrupted, accidentally deleted or lost. Nobody wants to lose those really cute pictures of their baby or their honeymoon, or to realize that the 10 hours they spent updating a CV have been wasted because the document is corrupt.
In a business setting, there are multiple types of data, they may have different levels of importance, but it is critical that the integrity is maintained on all of them. It is important that the file data doesn’t get modified inadvertently or by unauthorized users, but also that any modifications to the file’s content are known and understood.
There is also a need to prove that integrity has been maintained at all times, with strict requirements for compliance or auditing purposes.
Integrity can be compromised in multiple ways, which may be malicious or not. Some of the typical ones are:
- Internal 
  • People accidentally modify or delete data
  • Misconfiguration allows modification of data by unauthorized personnel
  • Lack of logging and monitoring prevents the company from proving that the data has not been modified
  • Lack of logging prevent the identification of change authors
  • Sharing of credentials prevent determining who is responsible for modification
  • Software bugs cause data corruption
- External
  • Attackers modify customer or critical data
  • Misconfiguration enables attackers to modify confidential information
  • Human error causes confidential data to be corrupted
The three main ways of ensuring data integrity are:
  1. Restricting access to the data
  2. Identification of all the changes and who made them
  3. Being able to verify all changes applied to a set of data against a known baseline
As usual with security, it is not enough to set and enforce a static set of rules, you should continuously review them, monitor for unauthorized access and verify that the audit log contains enough accurate information.
A safe assumption to make is that you lose control of data once it leaves your system. If you want to ensure that you can verify the data you receive from external actors, you have to check anything they send you against the original document that you sent out. Workshare Comparison Edition enables you to get a clear overview of everything that has been changed between two versions of a document, no matter how it is sent or received. And, with the Sharing Edition you get full access to compare any two versions of an existing document history and a full audit log on who accesses a document or uploads new versions.
In the next post, we will talk about how you can prove whether data integrity has been compromised.

Saturday, 3 December 2016

The P-word

When working in Agile environments, you will often find a complete aversion to the infamous P-word.

I bet you're asking what's that word? In case you haven't guessed it, it's process.

Yes, the typical big-enterprise approach of change advisory board meetings being the cut-off for new features being released, with red tape all over, signed forms in triplicate and enough bureaucracy to make Asterix go mad is pretty much anathema to agile but, as everything, there is a middle-ground where things are just right.

Every single thing you do in a regular basis has its own process. It may not be the most efficient, it may be improvable but it does work. After all, you use it regularly and it does produce results.

Every workday I wake up, usually get up on my second alarm (yes, I have it set up with two alarms), do my exercises, have a shower, get dressed, have breakfast, brush my teeth, leave the house. It takes me about 45 minutes to go through all that. I can probably speed it up (increase efficiency) to 25 to 30 minutes but I don't need to, so I don't normally do so, unless I am running late.

As a developer, your normal code writing process will be something like:

1. Write a user story.
2. Split the story into smaller sections you can work on individually.
3. Start section.
4. Write code.
5. Write tests.
6. Run tests.
7. If the tests don't pass, go to 4 or 5 to fix the issue.
8. Do a test of the feature at its current state (I am assuming that regression and integration tests run automatically).
9. If the test fails, troubleshoot and then go to 4 or 5 to fix the issue.
10. Commit to local source repository.
11. If there are any sections left, go to 3
12. Push to the main source repository.

There may be a lot more steps but, more or less you're doing something like this. This is all in your head and it's great but, how do you share this? Well, the answer is process (and documentation).

Processes are not designed to hinder engineers or to make things difficult for everyone, they are designed to make sure that people share a way to do things and the knowledge of what has been done and how it has been done.

Let's look at the typical way of working with Github, the pull request. Someone wants a feature added or a bug fixed, so they:
- Clone the repository
- Create a new branch
- Do all their work in the branch
- When the branch is ready, they create a pull request
- The project owner / maintainer, will then review the request and either send it back for fixing (with suggestions) or merge it into mainline

This is simple but this process does not need anything else.

Now, let's say that you are using this process in your company (well done, you're already doing code reviews!) and are required to add Change Management.  How do we do it? Well, you can do it in a reasonably simple way by adding a couple of requirements:

1. Master is your Production branch.
2. Every commit requires a ticket number, referring to a user story or bug report with a fixed format (EG. ticket#1234 or [1234]) in the message.
3. Only people in the approvers group can merge into Master.

That's it! To have basic Change Management you only require 2 things: a way to understand what changes were made and why (the commit messages + ticket number) and a process for approving changes (the merging into Master).

So now, if we want to see when feature 1234 was added to the system we only need to know when it was merged into Master. Do you want to have a high-level view of the changes between two releases for the release notes? Get a list of the ticket numbers from version control and you are 90% there. Do you want to know who approved the changes? Look at who merged the code.

The key to not just agile processes, but process in general is to adapt the process to the existing way of doing things. Your company (or group) is already releasing something, you already have a process and it works. Instead of changing it completely, adapt it slightly and make it easy to adopt. You can always go back and refine it later.

If you can also provide value to the people affected by the process, you have a great chance at the process being accepted with low friction. Say, you provide them with automation that will save them time as part of the process implementation.

When possible, make it so it is impossible to do the wrong thing. If you require the ticket number of every commit, create a pre-commit hook that checks that the ticket exist and is open and enforce it as part of the standard environment. Soon, developers will be doing this automatically as part of the workflow and won't even notice anymore, but management will have all of the shiny reports they need and compliance will be ecstatic that you have a Change Management process.

The next time someone tells you that they want to set up process, instead of shutting them down and making them do the work from the outside, welcome them into your world and help them build the process around the way you already do things. You will be surprised how efficient this can be for everybody involved.

One final thing to mention is that automation and tooling can really help with process - nothing better than having someone doings things for you and to make sure that you don't forget anything.

Let me know your thoughts.

PS. If you did not get the Asterix reference, please watch The Twelve Tasks of Asterix and pay attention to Task #8.

Wednesday, 12 October 2016

The End of PPTP

MacOS Sierra, the latest version of the Apple OS has been out for a little while.

One of the most disruptive changes in this release is the removal of support for the PPTP protocol, used for establishing VPN connections which, for a long time, was the default way of doing VPNs in Microsoft systems.

While I have heard some people complaining about it, as a security professional, my opinion is that it was about time they did so. The PPTP protocol is not secure - it is not that the implementation is not secure, the actual protocol has flaws in its design that make it insecure. The only way to make it secure is to stop using it, so Apple supporting stop for it will force laggard IT departments to solve this issue once and for all.

For more information about the protocol, please see the following links:

Wednesday, 5 October 2016

On Recruiters (the good kind)

As a candidate and hiring manager, I have not got much love for recruiters. Most of the times, they are a necessary evil, but this post is not about those recruiters, just browse LinkedIn and you will find many examples of that.

This post is about good recruiters and how to build a relationship with them.

First of all, I have to say that finding a good recruiter is hard. Finding any person who excels at their job is hard anyway, the low bar to becoming a recruiter makes it even harder.

I am lucky enough to have a few people I have been working with for a while. They have all proven me that they are completely trustworthy and I will try to work with them as often as possible. A couple of them go as far as sending me offers for jobs in companies that are not their customers! Of course, that means that, if I get in, they will have someone who likes working for them, but still, it's a nice thing to do.

Common traits of a good recruiter:
  • Communication: A good recruiter will be clear about what they are looking for and make sure that you get all the information you need. If you ask for more information, they will provide it as soon as possible or will chase it for you. If they need more information, they will ask for it.
  • Focus: When they contact you, it will be because they really have something you may want. If they do not have it, they will not waste your time. They will not try to sell you just any job, only what you are looking for. They will not just spam you with endless keyword-matching emails.
  • Continuous contact: They will keep in touch with you at a regular basis, even if it is just to tell you that they have nothing new.
  • Efficiency: If they have something to talk to you, they always tell you directly - no point in beating around the bush.
  • Responsiveness: They provide feedback or contact me as soon as possible. They return the calls, even if it is via email to let me know that they can't call me back.
  • Honesty: They will not lie to you or give you the runaround and, when possible, they will tell you things straight away.
  • Flexibility: Things change. Often. Adapting is not optional.
  • Long-term vision: An immediate sale will not come above a long term relationship.
How do you get to build a good relationship with recruiters? It's simple, the above rules apply for you as well. Recruiters love a customer that goes the extra mile to make sure they have enough information on what's going on because, as you, they are extremely busy!

It goes without saying, a good recruiter will make your life a lot easier, make sure you look after them.

Thursday, 29 September 2016

Microsoft's New Windows Patching Policy

As of last Tuesday Microsoft will no longer provide separate patches for Windows 7, 8.1, Servere 2008 R2, Server 2012 and Server 2012 R2 to address individual issues, the patches will all be bundled together in a 'monthly mega-patch'.

This might not sound like such a bad thing but this means is that it will no longer be possible to skip or revert functionality-breaking patches without also reverting security ones. So, should you hit an issue caused by the latest patch, your choice will be to have a functional or secure system, but not both.

Each patch now bundles together bugfixes, new features, some of which may be unwanted (like the telemetry ones) and security ones, increasing the footprint and so the possibility of the patch causing breakage.

It will also push Desktop users toward Windows 10, a system that, unless you use the most expensive versions of, offers you no control of which or when patches get applied.

While it's not the case yet, the apparent goal is to provide cumulative patches, which include the previous ones. This will exarcebate the problem of missing security patches, should you have to roll-back or skip a patch due to bugs.

So, once again, Microsoft ignores their customers and does what it is best for them, reducing the number of supported configurations.

Oh well! The silver lining to all this is that, working in a company that writes Windows desktop applications, we will now have to deal with far fewer patch levels when trying to troubleshoot customer issues.

For the full details go to:

Current changes: https://www.helpnetsecurity.com/2016/09/14/microsoft-ends-tuesday-patches/
Later changes: https://blogs.technet.microsoft.com/windowsitpro/2016/08/15/further-simplifying-servicing-model-for-windows-7-and-windows-8-1/


Tuesday, 27 September 2016

The Security Evangelist, Lesson II: Confidentiality

This post was originally posted in the Workshare blog as The Security Evangelist, Lesson II: Confidentiality.

Today I’m going to be talking about confidentiality and how to protect it.

Confidentiality is all about restricting access to information; ensuring that only those who are entitled to see certain data can get access to it. In plain English, it’s about keeping secrets.

As an individual, you make sure your personal data remains confidential by keeping it secret and not sharing information with those you do not know and trust. This protects your data.

The easiest example related to this is your credit card; I am completely sure that you do not give it away to anybody, that you keep it safely in your wallet or purse, and you would never give your PIN to anybody.

In a business, you have multiple types of confidential data: personal data, like your employee records; confidential data, like your business plans; and customer data, including account information. While all of them are important, there are different levels of confidentiality depending on how critical the data is.

The importance of the data can be determined by the impact that a confidentiality breach would have on the business overall. Damage can come in the shape of reputational damage, direct loss of business, legal liability and, in some cases, financial damage in the shape of fines or trading restrictions.

Unauthorized access can come in many ways. Some of the most typical ones are:

- Internal:
  • People move jobs and they are not removed from relevant groups
  • Misconfiguration allows access to restricted resources
  • Sharing of credentials allows access to restricted data
- External:
  • Attackers use vulnerabilities to attack the system and gain access
  • Misconfiguration exposes confidential data
  • Human error causes confidential data to be exposed
There are two main ways to ensure data remains confidential: 1) restricting access to the data and 2) auditing all access. It is not enough to set and enforce rules preventing people from accessing data, you also have to continuously review those rules and monitor for unauthorized access.

A safe assumption to make is that you lose control of data once it leaves your system. Your only option is to remove any confidential data before it leaves your system in order to protect it. With email, for example, Workshare provides Workshare Protect, which scans outgoing documents to remove any hidden metadata that may leak confidential information inadvertently or maliciously.

How do you ensure the confidentiality of your data?

Before anything else, you have to understand what data you control; what type of data it is and how you process it. This means going through every system your company manages, whether directly or through third parties, and understanding what it does and the level of access required for the normal functioning of the business.

Then you have to establish policies and controls around the handling of the data. This will ensure people understand how to manage data, critical or not, and what to do when something goes wrong. It also provides monitoring and metrics that enable you to assess events as they happen.

Finally, you must set up policies and processes to deal with data breaches. This is often an afterthought, but it is critical. In the event of a major breach, you do not want to be working out what to do, everything should be established in advance, including communications, reporting and crisis management. The criticality of this last step cannot be understated.

A good response can make the difference between containing a data breach and a company “going under” due to legal and financial penalties. For companies operating in the European Union, the new General Data Protection Regulation, coming into force in 2018, states that all breaches involving personal data must be reported immediately and that failure to do so may incur a fine of up to 4% of global revenue. In order to report, you need to know what is happening, and getting the processes and tools in place to manage this will take time and resources.

Once policies and controls are in place, it then becomes a matter of regularly reviewing them and taking any learnings from events and the way they are handled, no matter whether you are always successful or not.

It is often said that security is not a project, it is a process that needs continuous refinement. A system that is completely secure today may not be the same in the future as new technologies and vulnerabilities are discovered.

Friday, 23 September 2016

Yahoo: Dear, oh Dear!

Today Yahoo! finally confirmed what everybody expected, that they had a major security breach.

Many companies have had security breaches but I cannot think of many that have handled it as poorly as Yahoo!

The breach supposedly happened in 2014, 2 years ago, and it only comes out now. As a consumer, I can't wait for the EU General Data Protection Regulation to be in place - Yahoo would have been fined a nice 4% of its global revenue due to failing to promptly report the issue. And in this case, it's very, very likely that they would have gone for them, considering that it affects an estimated 500 million users.

There only was one announcement. On their Tumblr page. No announcement on the main Yahoo! site or Yahoo! Mail :

(if you squint and look carefully, notice that there is a mention of the hack on the trending news and, if you wait or are lucky, you will see it as one of the highlighted news). 
There are no emails sent to the users, at least, not to my old Yahoo account, which I do not use anymore but still gets emails and gets checked every so often, so it's still active. When you log in, you get the following welcome:
No mention of the breach. No mention of why you really, really, should change your password and security questions. No mention that you should change your password and security questions in any other system where you use the same information, just in case.

The announcement explains that 'The account information may have included names, email addresses, telephone numbers, dates of birth, hashed passwords (the vast majority with bcrypt) and, in some cases, encrypted or unencrypted security questions and answers' - considering that the data seems to be available, a quick check against their systems should be able to confirm that this is the case, the 'may' here sounds like covering their backs.

Verizon, who are currently in the process of buying Yahoo!, mention that they only found out about the breach a couple of days ago and had 'limited information'. That should ring alarm bells everywhere and also makes me think that the only reason why the breach is coming out now is because Verizon are doing their due diligence and Yahoo!'s hand has been forced on this, otherwise it would have stayed hidden forever.

Finally, Yahoo mentions that the attack was 'state-sponsored'. If that's the case, why was the data available to buy in the market? Usually, states do not want to sell the data, they want to keep access running as long as possible.

All in all, this is one of the worst security breaches ever, even if it is just because of the number of users affected. The response from Yahoo! does nothing to help and inspires no confidence in their ability to handle security issues.

I know, for a fact, that I am deleting my account as soon as I find out how to do so and will make that I avoid using their services as much as possible.

Wednesday, 21 September 2016

The Evangelist

This post was originally posted in the Workshare blog as The Security Evangelist.

Workshare Security Series

This is my first blog post in a new series on "security". I'll be discussing various aspects of security - how it affects you and how the team at Workshare handles the challenges around it through our products and operations.

The goal of the series is to help you understand how to better protect yourself and your clients, and to raise awareness of common issues and approaches to help resolve them. I'll also look into any relevant security events that may happen.

What is security?

To begin then - and this might sound a strange question - what is security?

This is a question that’s commonly asked and for which there are many different answers. When it comes to security on computer systems, we are talking about Information Security.

Information Security is based on the principle that data, whether customer, personal or business-related, needs to be stored and managed in a safe way. The industry-standard approach is built around three main concepts:

1. Confidentiality

Making sure that only authorized users have access to data.

2. Integrity

Ensuring data does not get corrupted, and keeping track of all modifications, including information about who modified what and when. In an ideal world, you will be able to go back to an exact point in time to identify this.

3. Availability

Having the most secure data store is of no use if the data is not there when you need it, so great care has to be taken to make sure the data is always available.

On top of information security requirements, there are also legal and compliance requirements that have to be considered as part of security.

So, now we’ve defined it, why do we need to worry about it?

From a personal point of view, you want to protect your privacy and make sure nobody can use your data for nefarious purposes, be it identity theft, fraud or any other crime.

As a business, you want to protect assets, both tangible and intangible, including business and customer-specific ones. Not only is it in the best interests of your firm to protect your client data, you will no doubt have contractual agreements and legal requirements to make sure you’re providing adequate security.

At Workshare, we’re constantly working to enable collaboration on files, while keeping data protected. Whether you’re an individual or a business, we help protect and manage data, while integrating that into normal document workflows of daily life.

In later posts, I’ll look further into how you can best achieve security and reduce risk to yourself and your business.