ShellShock is a Bash vulnerability, which allows bypassing environment restrictions in certain environments. See Ubuntu Security Notice USN-2363-1. And for more detailed description, see CVE-2014-7169.
This Bash bug can be potentially bigger than the Heartbleed bug, because Bash shell is usually the default shell for the user, and many commands will also spawn Bash to execute. See this answer http://askubuntu.com/a/528102 from StackOverflow.
Running the following command will determine if the system is vulnerable or not:
1
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Luckily, this is relatively easy to patch. Simple apt-get update && apt-get upgrade will patch the Bash with the latest security fix. For example, this is a patched Bash version:
1
2
$ bash --version
GNU bash, version4.2.25(1)-release
This is for Ubuntu 12.04 LTS. If you are running Ubuntu 14.04 LTS, you have to upgrade to Bash 4.3-7ubuntu1.3.
Because CoffeeScript binary (coffee) use the following format:
#!/usr/bin/env node
Which does not specify fully qualified path on the shebang line, and will result in:
/usr/bin/env: node: No such fileordirectory
We can compile CoffeeScript into JavaScript and use fully qualified node executable. But this is not necessary. Since we are using Debian based system, which uses Vixie cron. It allows environment variables to be defined. We can make Cron aware of the custom path in environment variable:
Default settings of the application is provided by the upstream, therefore, it should not be modified.
There are four types of environments: development, testing, staging and production. Environment can be set by using the shell environment variable: ENV. If the environment variable is not specified, it is set to development as default. Environment settings override default settings.
Custom settings override environment settings. The search path for custom settings is:
Environment variable SETTINGS
config/settings.yml
If both paths are not available, that means the custom settings are not specified.
config/settings.yml is a custom settings, therefore, it will be ignored by git in .gitignore file:
config/settings.yml
The complete directory structure regarding to the configuration setup: