At the time of writing this post I’m on holiday in Dubrovnik, Croatia. It’s a beautiful place and I urge you to go and visit if you have never been.
Anyway, I’m sat here on the balcony of my villa, enjoying the sun. In front of me is a fairly large tree that’s swaying in the breeze.
As I sit here sweating away in the 36 C (96 F) heat, considering whether to hide away inside where there is air con, I think to myself that tree is so lucky that it can’t feel this heat.
Then my mind begins to wander; if that tree can’t feel, is it really alive? Is feeling what really makes us alive?
Obviously that tree is alive, we all know that. But it then got me to thinking about what alive really means. Obviously being able to feel doesn’t equate to being alive. Neither does being able to communicate, or have sex, or eat. What is being alive?
According to the Oxford Dictionary, the definition of life is as follows:
The condition that distinguishes animals and plants from inorganic matter, including the capacity for growth, reproduction, functional activity, and continual change preceding death.
So the things that make life, life are:
- Capacity for growth.
- Functional activity.
- Continual change preceding death.
This had my mind wandering even further…
If that’s all there is to life, can software be alive?
Let’s look at a specific example and see if we can apply it to the 4 points above. I’ll use the humble computer virus, after all I am an InfoSec guy. 🙂
Capacity for growth – many virus’ can grow both literally and metaphorically. They can download additional pieces of malware, which adds bits of data, thus making the virus actually grow bigger.
Metaphorically, a virus can learn the behaviours of the host and take action depending on that behaviour. A logic bomb could be a simplified example of this.
Reproduction – this is an easy sell where virus’ are concerned. They’re designed to copy themselves and infect more hosts. If this isn’t reproduction, I don’t know what is.
Functional activity – this one is open to interpretation. To me, this means that in order to be alive, you need both a purpose and the ability to act on that purpose.
In my opinion a virus can be functionally active; they reproduce and they actively carry out functions during their “life”. That could be beaconing a C2 server, encrypting portions of your hard drive, or just snooping on your activity.
Change preceding death – a polymorphic virus can literally change itself in order to avoid detection.
These could easily be different stages in a lifecycle before completing their task and becoming dormant (dying of natural causes), or before being caught by AV and succumb to an early death.
I originally posted this on Mastodon and Twitter, but decided to write my thoughts out in long form instead. I realise some of my justifications are a little far fetched, but technically a humble virus could conform to these 4 requirements of being alive.
So, my question to you is; can computer software be classed as “alive”?
That’s enough deep thinking for one day. I’m off to the pool…