Adobe Campaign, Marketing Automation

Fork Bomb on Adobe Campaign: A Controlled Test

Fork Bomb on Adobe Campaign: A Controlled Test

It was around 10 years ago when I first encountered the term ‘fork bomb’. I tried it, it worked, and it made me happy that my virtual server went down quicker than a lightning strike. And that was it – my fork bomb adventure back then. After all these years, I don’t know why I got the same idea years later. Instead of a shell script, I will try to program my very own fork bomb on the Adobe Campaign Classic application server to see that lightning strike again.

Shall we begin? BEWARE: The text below contains falling servers!

What is a fork bomb?

A fork bomb is a malicious computer program designed to create a large number of processes, overwhelming the system and causing it to slow down or crash. The term “fork” refers to the Unix system call used to create a new process. The fork bomb continuously replicates itself by initiating new processes, consuming system resources and depleting the available computing power.

The fork bomb does not typically cause damage to files or data but can render a system unusable by exhausting its resources. It’s considered a form of denial-of-service attack because it denies legitimate users access to the system by making it unresponsive.

It’s important to note that creating and deploying fork bombs or engaging in any form of malicious activity is unethical and potentially illegal. Responsible use of technology and adherence to ethical standards are crucial in maintaining a secure and respectful digital environment.

This should only be attempted in personal sandboxed environments where you have full access to restore the system to its previous state or deploy server backups.

So that said we all know that this should not be run at any of circumstances unless you want to cause unwanted problems and later be held responsible for them. I did run it for so you do not have to.

Oh no anyway meme

Anyway, let’s build one to see what happens when we run it (I mean we already know it). First, we need to understand how to create multiple processes or running threads inside the Adobe Campaign Classic environment. And what better thread can we find than a workflow that will serve our sweetly malicious intent?

We can assume that one workflow running equals a single process or thread of an application that executes.

How to build a fork bomb

Armed with this information, we simply need to create a workflow that, when run, generates two more workflows and executes them. These newly created workflows will each run an additional two workflows. And then the same repeats until we make our server go 500 – Internal server error. You can get the image right?

I won’t provide the exact steps, but you already have the idea of how to set it up and simple search or previous experience will tell you how to deploy workflow with using JSAPI. Now, let’s explore what happened when I ran it on my virtual private server.

The aftermath of the fork bomb

Here we are—I initiated the fork bomb, and it didn’t take long for the graphs to go wild. My CPU is maxed out, and my console connection is broken with nice internal server error. Which meant the fork bomb took over the resources successfully. Is this the end of the story, or is there more to come?

Aftermath of the fork bomb run on adobe campaign application server.
Aftermath of the fork bomb run on adobe campaign application server.

My provider’s ‘automated-black-box-to-me-server-tools’ soon realized something was off and stopped Adobe Campaign services. Shortly after, all the graph metrics returned to normal. Bless them engeneers who figured things out.

Aftermath of the fork bomb run on adobe campaign application server.
Spot the fork bomb in 12 hour chart

Anyway, with the queue not cleared, you might have guessed what happened after the application server started again. It began running all queued workflows, each with the sole task of deploying themselves and causing CPU congestion otherwise known as fork bomb.

Aftermath of the fork bomb run on adobe campaign application server.

Mitigation of the fork bomb

How do we mitigate when a fork bomb occurs? While the chance of intentional occurrence is small, there’s a possibility of unintentional infinite loops or loops that may not crash the server instantly but can significantly slow it down. This happened to me, and I understand the impact.

Adobe Campaign lacks checks for infinite loops, especially in email personalization. To mitigate, one option is to remove all ‘infected’ workflows with a queued status, identifiable through the SQL console on the server level. Alternatively, for a simpler but data-loss-incurring solution, you can restore the server from the backup. I successfully restored my server using the user interface provided by my hosting provider, and Adobe Campaign was back to its peak performance in a short time.

Oh hi there 👋
I have a FREE e-book for you.

Sign up now to get an in-depth analysis of Adobe and Salesforce Marketing Clouds!

We don’t spam! Read our privacy policy for more info.

#adobe campaign classic #programming #workflow
Marcel Szimonisz
Marcel Szimonisz
MarTech consultant As a marketing automation consultant, I specialize in problem-solving, process automation, and driving innovation for clients' marketing platforms.

I hold certifications in Adobe Campaign v6 (3x certified) and Salesforce Marketing Cloud (5x certified), as well as 1x Salesforce Associate certified.

Moreover, I serve as a community advisor for Adobe Campaign, providing expert insights and guidance.

Beyond my professional pursuits, I explore various programming languages, CMSs, and frameworks, enhancing my technical expertise and staying at the forefront of industry advancements.
Take a look at our subscription offering in case you are looking for a Marketing Automation Consultant.

Leave a comment

Your email address will not be published. Required fields are marked *

Similar posts that you may find useful

Adobe Campaign Classic Automate Publishing File Resources With Workflow
Adobe Campaign, Marketing Automation

Automate file resources upload with a workflow

2 minutes read

Sometimes, you will reach a point where you want to upload file resources from a script. Although there are hints on the Experience League, even with those, this problem has caused me some troubles. However, challenges and troubles are what I seek. I have decided to map this functionality, which can become handy once in […]

Continue reading
How to map enumeration with file extract
ACC Tips & Tricks, Adobe Campaign, Marketing Automation

How to map enumeration with file extract

1 minute read

I was recently asked about the purpose of a checkbox, and believe it or not, it turned out to be the function I thought was missing in Adobe Campaign Classic – but it’s actually there. It’s the File Extract activity feature hidden in one of the final steps of the extraction wizard. It is simple […]

Continue reading
SFMC tips and tricks
Marketing Automation, Salesforce Marketing Cloud, SFMC Tips & Tricks

NULL value comparison in IF statement

less than a minute read

If you have field in DE that its value is not always populated for a particular row (customer) and you test field value against any value cloud page will throw an 500 – internal server error. To fix this, you will simply need to add another AND-condition to test field value for NULL with NOT […]

Continue reading
Adobe Campaign Classic OOP concepts in ES5
ACC Tips & Tricks, Adobe Campaign, Marketing Automation

Using OOP techniques in ES5: A Guide

3 minutes read

In this blog I will be exploring object-oriented programming (OOP) and Adobe Campaign Classic in ES5. As you may already know, Adobe Campaign Classic relies on ES5, the version of JavaScript specifically used by the platform. In ES5, there are a few limitations in terms of what you cannot do compared to newer versions of […]

Continue reading
SFMC tips and tricks
Marketing Automation, Salesforce Marketing Cloud, SFMC Tips & Tricks

Redirect 500 internal server error inside try catch SSJS block

1 minute read

If you have Redirect function inside the try catch block, either as mixture of SSJS with AMPScript or only in SSJS, it will throw an 500 – Internal Server Error. Let’s take a look on few examples what can create an error that will take you some quality debugging time to figure it out. And […]

Continue reading