Does X-Content-Type-Options really prevent content sniffing attacks? In Tangled Web Michal Zalewski says:

Refrain from using Content-Type: application/octet-stream and use application/binary instead, especially for unknown document types. Refrain from returning Content-Type: text/plain.
For example, any code-hosting platform must exercise caution when returning executables or source archives as application/octet-stream, because there is a risk they may be misinterpreted as HTML and displayed inline.
The text/plain logic subsequently implemented in Internet Explorer and Safari in order to detect HTML in such a case is really bad news: It robs web developers of the ability to safely use this MIME type to generate user-specific plaintext documents and offers no alternatives. This has resulted in a substantial number of web application vulnerabilities, but to this day, Internet Explorer developers seem to have no regrets and have not changed the default behavior of their code.

Site uses X-Content-Type-Options:nosniff. Author says the following about this header:

The use of this header [X-Content-Type-Options] is highly recommended; unfortunately, the support for it [...] has only a limited support in other browsers. In other words, it cannot be depended on as a sole defense against content sniffing.

What content sniffing attacks X-Content-Type-Options:nosniff doesn't prevent? What Content-Type should be returned to user instead of text/plain?

Background. X-Content-Type-Options: is a header that is designed to defend against MIME content-sniffing attacks.  MIME content-sniffing attacks are a risk when you allow users to upload content (e.g., images, documents, other files) to your website, where they can be downloaded by other users.

As @Rook says, this has nothing to do with eavesdropping/capturing network traffic.

What attacks doesn't it prevent? Because X-Content-Type-Options: is only supported on some browsers, it does not protect attacks against users who use other browsers.  In particular, it is supposed on IE, Chrome, and Firefox 50.  See also What are the security risks of letting the users upload content to my site? for some other attacks it doesn't prevent, e.g., uploading of malware or unsavory content, uploading of content that exploit a vulnerability in the user's browser, etc.

What content type should be returned? You should return the appropriate content type for that file.  You should not allow users to upload untrusted content with dangerous content types.  For more details, please see the answers to the following questions:

Is it safe to serve any user uploaded file under only white-listed MIME content types?
Is it safe to store and replay user-provided mime types?
MIME sniffing protection
Why should I restrict the content type of files be uploaded to my site?
What are the security risks of letting the users upload content to my site?
How can I be protected from pictures vulnerabilities?
Using file extension and MIME type (as output by file -i -b) combination to determine unsafe files?

This topic has been extensively discussed and documented elsewhere on this site, so I'm not going to try to repeat all of the useful advice found there.

Update: I just learned that setting the Content-Type and X-Content-Type-Options headers appropriately is not enough for security.  Apparently, Flash ignores the Content-Type header, which could allow loading a malicious SWF, which can then do everything you'd do with a XSS.  (Sigh, stupid Flash.)  Unfortunately, no amount of whitelisting of file content types can stop this attack.  Consequently, it appears that the only safe solution is to host the user-uploaded content on a separate domain.


How can I verify the certificates when connecting to an FTP server with Filezilla? Today most hosting providers start a TLS connection whenever you connect to their FTP server. But Filezilla doesn't store any root certificates, so whenever you connect to an FTP server and the TLS connection is started, you get this message:

  The server's certificate is unknown. Please carefully examine the certificate to make sure the server can be trusted.

Then there are some details about the certificate: fingerprint, subject, issuer, etc. It is also possible to see the details of the other certificates in the chain, up to the root certificate. I don't see any way to download the whole certificates though, but I might be wrong. Filezilla just asks me: "trust this certificate and carry on connecting?" So I'd like to know what I should do to make sure I can trust it.

Here are the screenshots for more information. Under those windows the only buttons are "ok" or "cancel" (not included in the screenshots). Note the first is "certificate in chain #0", then there's #1 and #2. From what I understand, in this example the root certificate should be "AddTrust External CA Root".

FileZilla never automatically trusts certificates.

You mention a chain of trust, but not much about the root certificate. Does it seem like one that should be trusted? You could compare the fingerprint of the provided root certificate to one in the certificate trust store on your local machine. This would emulate the basic/default behavior for most TLS clients, to trust the client because you trust the CA.

To be particularly fastidious you could contact the owner of the FTP server and ask what the fingerprint of their certificate is. When connecting, if the presented certificate has the correct fingerprint and you trust it, your future connections will henceforth be secure from MITM attacks.

Supposing the FTP owner is not particularly helpful, another way to increase trust would be to observe the certificate fingerprint over an extended period of time using several different internet connections and devices. If you only ever see a single key fingerprint it would indicate that either nobody is attempting an MITM attack or that they are successfully doing so every time you connect. Supposing you are an optimist, trust the key with this fingerprint.


Difference between "Unknown" and "Hidden" Caller ID I remember the times when I had an old Nokia phone as my main; there was some weird behaviour with Caller ID which was strange for me. When somebody with subscription to "Hide your number" service called me, instead of Caller ID "Hidden" was displayed except the cases when that person's number was in my contacts. However, there was something wrong with my land line because when I called my number from home phone it displayed "Unknown" even if the number was in my contacts. What is happening on the GSM/SS7/PSTN layer in those 2 cases?

Very good question!
Let me explain:
Hidden:
In every packet being sent to call centers there is a attribute of "hidden" this is a simple flag of true or false and so if the packet has this attribute set to "True" then the caller id will be hidden.
Unknown:
There is an attribute in the packet that holds the origin number that started the call. Since theses packets are editable this attribute is set to an empty number/erased attribute and so the call you are getting is actually from someone who stripped the origin number attribute in one of the two ways.
Note:

Some carriers may attach a random number(Example: 0000000) to the original caller id when attribute is empty/does not exists.
Some carrier may even drop a call with no attribute!
While a number with the hidden flag is still in the packet and is recoverable by the carrier a "unknown" cannot be recovered and so strong spammers prefer to strip the original number attribute.


OAuth2 - Benefits for using Grant-Type:Password for machine-to-machine web-service calls I'm using a 3rd party service developed by the Experian Credit Bureau. Looking at their documentation, they are using OAuth2 & are expecting Grant_type: password in order for external developers to obtain an access_token. So, the developer must pass their username/password/client id & client secret (the last 2 of which you create and retrieve via the developer portal)
To get the access_token you would call the following endpoint;
curl -X POST https://sandbox-us-api.experian.com/oauth2/v1/token \
  -H 'Accept: application/json' \
  -H 'Content-type: application/json' \
  -H 'Grant_type: password' \
  -d '{"username": "<USERNAME>","password": "<PASSWORD>","client_id": "<CLIENT_ID>","client_secret": "<CLIENT_SECRET>"}'

Everything works fine and I've no problem obtaining the access token however I don't understand how this is any more secure than simply passing a username/password (which oauth2 was designed to avoid); These services are normally machine-to-machine invoked so you will need to have the credentials stored on the system calling their services so if a bad actor was to steal these then they can obtain the client_id & client_secret by simply logging into the developer portal.
They are using Okta who says that password grants should only ever be used for trusted internal apps but this isn't the use-case for these services - we are not internal nor trusted.
Alternatively, I could architect so that the calling machine only works with the access_token and refresh_token however that means you need to re-authenticate when the refresh_token expires (24 hours) which in my case the service is only invoked once per week - this means I would have to reset the access_token manually each week.
What am I missing that makes this approach more secure than a simple username/password exchange?

As described in the section 4.3 of the RFC6749 (here)

The resource owner password credentials grant type is suitable in
cases where the resource owner has a trust relationship with the
client, such as the device operating system or a highly privileged
application. The authorization server should take special care when
enabling this grant type and only allow it when other flows are not
viable.
It is also used to migrate existing clients using direct
authentication schemes such as HTTP Basic or Digest authentication to
OAuth by converting the stored credentials to an access token

In sum, you can use it if you have a strong trust relationship with the client application OR to "update" legacy applications in such a way as to avoid the use of authorization methods in the original HTTP spec and to benefit from stuff like scopes, expirations that you cannot guarantee with a simple basic auth
So to answer your question: No, you are missing nothing, the Grant-Type is not suitable for modern applications.


Posting from HTTPS without specifying protocol - secure? I have a form that is on a secure (HTTPS) page, which posts to another page.
In the form action, the protocol is not specified but I would assume uses the same protocol as the page that it came from, please see below:

<form id="dummy_form" action="do_action.php" method="POST">
    <input type="hidden" name="some_field" id="some_field">
</form>

The way I have believed this worked is that the relative URL would use the same protocol as the page it is sat on, therefore all traffic is encrypted.

However, I recently had someone contact me saying that the form is insecure and that the information is being transmitted in plaintext. I assume they have just inspected the network traffic using their browsers dev tools (they sent me a screenshot of their data in the network tab of the Google console), but I thought it would be better that I ask the wider community and check?

Better safe than sorry!

A relative URL as used here will inherit the method  and domain and part of the path of the base URL. The base URL is typically the URL you'll see in the browsers URL bar but it might also be changed using the base tag. Thus, if the base URL uses https then the relative URL will too.

Note that the base tag might actually specify a different method than the URL actually loaded (and which is shown in the URL bar). In the following example the form will be submitted over plain HTTP even if the page was originally loaded using HTTPS and is shown as such in the URL bar:

<!doctype html>
<base href=http://example.com/> <!-- plain HTTP in base URL -->
<form action=submit.php> <!-- will be submitted with plain HTTP -->
...
</form>

This means just looking at the particular part of the source code and to the URL in the URL bar is not sufficient to determine which method will actually be used to submit a form.


Is rootkit detection by comparison of file, process and connection lists a good practice? I'm currently reading the Blue Team Handbook and one of the recommended methods to detect rootkits is to compare technical data obtained from various sources. As I understood it this is practiced like this:

Compare a list of all Files on a HDD obtained through the system with a list of all files obtained using a live CD
Compare a list of all connections shown by the system with a list of connections captured by a network tap.
Compare a list of all processes shown by the system with a list of processes extracted from a memory image with a tool like volatility.

The lists should all match up of cause. If not the host might be compromised. As I have quit some expirience in scripting I'm able to do all these things but is this really a common and good method of detection?

It's quit costly and to be honest I don't know a single person who has ever done something ornate like that to detect a rootkit. It should be noted that I'm a adminsitrator and not a IR guy.

It's a good method of detection, to repeat:

Memory check for hidden processes
Network traffic check
Filesystem check

The above solution is flexible, scalable and secure, however it's not your average scripting if large scale is involved, for which this is best suitable solution. But this doesn't mean it would not work on smaller scales, however effort might be too high. Possible implementation could be done in the following way:

Memory checks built-in Virtualization Host
Network traffic monitoring on the network layer (e.g. netflow)
Filesystem checks on the network storage layer

Now the problem is, since it's quite custom job, you won't be able to really rely on the results before sufficient time and money are spent on the development of such solution, so it works, but on large scale, e.g. a lot of servers, let's say, 10.000 of them or more, that would make sense. Also if these servers run various things and are not the same kind of server. However, there can be done some trade-offs, you might want to evaluate some software to do some of it, and then it may be easier to do, see below.

If you want to try by yourself, try setting up Netflow (sflow) monitoring and with just this, you can successfully detect malicious traffic when it happens. Using ready-made software would be more efficient. So for example, you can select patters for packets to raise alarm. A lot of unusual traffic can be successfully detected not only related to hacking and that helps a lot. It's cheap, easy, multi-purpose and effective. The only thing is you need to invent proper patters (e.g. which packets you want to capture), these could be basically anything unusual but permitted, e.g. outgoing tcp connections, which upon initial detection can be whitelisted if not malicious.
Another easy way would be to run tcpdump, then netstat and run comparison. But this is less useful, it would only detect hidden network connections, and if you search internet, you might find some helpful scripts already.

Regarding filesystems, you can also use normal script to check for the consistency of the binaries (for example, using standard rpm or dpkg commands), and also check consistency of config files. Such script can be run from external host which connects over ssh, uploads the generated script (e.g. with latest checksums calculated from git repo were are configs), run the check and return result. Rundeck may be software to help you with this. Running command from external host assures you it is being run at all in first place, and it's simple and efficient method in the end.

Regarding RAM, this is the most difficult part, and you may skip this part for the moment because it's more advanced. Dumping and analyzing RAM is far from anything easy.

Also look for chkrootkit and rkhunter scripts and similar. There's free antivirus Clamav and paid solutions like Kaspersky. These do check for known backdoors, however, in average corporate / hosting environment there's 50 / 50 chance if it's custom patched sshd with secret key or a known backdoor.

And don't forget at assuring whatever kernel is not patched or there's no malicious module, but that's a different subject. I would try researching it and using same script to check both kernel and hidden processes. There might be some scripts doing that on the internet already.

In summary, Netflow (or Sflow, it's the very same thing) will help you a lot not only with security but with the network as well. It has nothing to do with servers, it works the way, that switch sends every n-th packet to the netflow receiver whre it is checked against predefined patterns and accounted for stats. It should provide you reports as well. Filesystem checks are easy to do with rpm and dpkg, and the rest can be checked from git or with build server. Note that package managers are using crystallographic signatures so you do not need to use LiveCD. Finally, check out the kernel and hidden processes and you are sorted. And before deploying software, scan it with "Kaspersky".

Take time, develop a plan, and slowly bit by bit it's not hard to make it all.


Would the Stagefright vulnerability existing in Android be able to run on other phones? I saw a question about Android's "Stagefright" vulnerability, and I got to thinking: other OS'es pre-process MMS messages to make it easier to view. iOS does it and shows a preview. Even BREW OS (the OS that comes with a basic flip/slider phone) has an option to auto-download an MMS.

If the vulnerability operates by exploiting a flaw in a 3GPP video's metadata, then wouldn't iOS and many other mobile OS's be susceptible to this vulnerability? Or is it just Android's "Hangouts" app?

The bug isn't with the file format, it's with the software of Hangouts the Android software library. iOS, Android, and Windows phones run system software from three different groups of developers. As such, this vulnerability probably doesn't exist on other platforms. Even if it did, one payload couldn't affect all three systems, because their software isn't binary compatible at the ABI (application binary interface) level of the OS. A valid exploit in system code on one system that caused, say, a rootkit install would likely only cause the other systems to crash, which would still be bad, but the systems could probably recover without too much trouble.


Is flashing an OpenGApps package over Cyanogen secure? I wanted to flash CyanogenMod onto my cellphone, but noticed this requires also flashing a package from opengapps.org. I know Google Apps are signed by keys but how secure is flashing one of these packages? Am I opening myself up to Malware by installing this? Due to the apps being closed source, there's no way to inspect these files myself that I am aware of.

Due to the apps being closed source, there's no way to inspect these files myself that I am aware of.

I'm pretty sure that you did not inspect Cyanogenmod source code or checked if the provided ROM for your platform matches the source code available. You've probably also did not check the firmware of the device which is usually only available as binary too and is actually the source of security problems.

This means that downloading GApps from a widely published source is probably as risky as what you did before. Yes, these files could contain malware but the chance is low since lots of others use these files and did not notice anything more malicious than the expected privacy problems with these apps. But of course someone could have recently compromised the download server and exchanged the downloads like done in case of other trusted sources.

But at the end you should trust your device only as much as you trust all parties which were involved in building and distributing it. This not only includes custom ROM's and apps but but also hardware (which is not this hard anymore, i.e. often software too). And this is not only true for your phone but also for your computer, router, internet provider, car ...


Preserving crime evidence from a website I do not own Is there a standard procedure when it comes to preserving evidence of a crime committed on a website of a third party?
Let's assume that a crime was committed on a website I visit, like defamation. Other than using the Wayback Machine or browser plugins to save the page in case either the website owner or the perpetrator removes the evidence, is there a better way?
My goal is to be able to prove to the authorities that a crime was committed so that they start an investigation. For not-so-serious crimes unless it's very easy to prosecute - e.g. the evidence is still accessible without the need for a warrant - the police might not even bother.

Is there a standard procedure when it comes to preserving evidence of
a crime committed on a website of a third party?

Screenshots of the evidence are a good start-off point. While the text on the web pages can be modified before the screenshot is taken, it would be a very foolish thing to do so and then to submit it as evidence to the law enforcement. At least that is what is assumed by the cops who take in the initial evidence to file the case, that the submitter is not that stupid.
If you want to take this one step further, you could get the screenshots notarized by an attorney (after the attorney verifies your screenshot with the content on the website and confirms that they match) and then use them as evidence. It is generally assumed that court officials and attorneys would not want to get themselves perjured (since the attorney could need to swear in court under oath that they verified the contents at the time of signature) and hence such notarization would be mostly held as acceptable evidence.
Furthermore, most servers do have backups in some form or the other and if the evidence (screenshots) is submitted to the law enforcement officials quickly enough, they may be able to get actual confirmation from the server webmasters or owners of the site.
Forensic tools and techniques are available to take forensically acceptable backups of the site, but most of such tools are somewhat expensive and are not within the scope of most home users. They may not be needed in most cases unless advised by a lawyer.
Wget is a good tool to scrape websites/webpages but again, it is not forensically acceptable since the downloaded webpages can be manually edited in text editor.

Let's assume that a crime was committed on a website I visit, like
defamation.

The jurisdiction matters a lot. Which country are you located in and in which jurisdiction is the site server hosted in (if it's possible for you to know)?
Also, did someone use your "real name" to defame you or just a nickname moniker that you use on forums? That is also quite important to establish certain facts but this is not a part of your question and so I will not into the details.
My goal is to be able to prove to the authorities that a crime was committed so that they start an investigation.
Like I wrote above, you may need to prove that you actually suffered damage from that "defamation" before they would consider that a "crime" or take it to court or even files a police report, in some jurisdictions.

For not-so-serious crimes unless it's very easy to prosecute - e.g.
the evidence is still accessible without the need for a warrant - the
police might not even bother.

Did your opponent use their real names to attack you (using your real name) or was this just some sort of a fight on a platform like reddit where one usually does not use their real names? If real names are not used then the police may not even bother to get involved unless serious threats are made which could endanger life and such (again ths depends on the jurisdiction).
Finally please be aware that in most cases and in most jurisdictions, it would not be possible to file a case without your real name and your details ultimately becoming public data. Only in very few cases which could pose a real danger to the complaining party, the police allow the case details to remain private. Otherwise if and when the case reaches the court, in most cases your details would become public.
Are you ready for that?


Is it possible for one Division of an organization to be certified ISO 27001? Is it possible for an entity or a division part of an organization to be certified ISO 27001, specifically the Division Information Security Management System?

Yes, that is possible. ISO27001 requires you to define the scope of the certification, so you could restrict the scope to that one specific division.

Of course, any smart auditor would check what relations that division has with other divisions and which risks and controls are related to that.


Do I REALLY need to change my email password when idnotify.com Dark Web Monitoring recommends? I occasionally get alerts from idnotify.com Dark Web Monitoring, such as this one:

08/31/2019
COMPROMISED EMAIL ADDRESS
Email Addresses:    Jt***an@gmail.com
Date Found: 08/26/2019
Password *************************
Potential Site DUBSMASH.COM
Immediately change the password for the email address that was found compromised.

My thoughts:

My email account uses 2-factor authentication. So unless I know for sure that someone somehow learned my actual password, I don't know why I'd want to change my password every time I get one of these alerts.
The amount of asterisks in the "Password" in these alerts differs. Some alerts say ************************* and others say ********. I don't know if the lengths are reliable, but if the length doesn't match my real password, I wonder if that means I don't need to change it.
What the heck does Dubsmash have to do with anything? That app sounds only vaguely familiar. I checked my password manager and don't seem to have an entry for it.

P.S. It's not phishing. After the Equifax breach, I enrolled in their TrustedID program in Sep 2017. In Nov 2018, they gave me "this extension of free credit monitoring through IDnotify™, a part of Experian."

If you have not registered for Dubsmash ,ignore the alert. Please check the headers of the mail that your have received this alert from. If the source seems suspicious to you or blacklisted, ignore the alert. Request you to report the abuse activity of the source(relay server) here.

If you have signed up for the service and headers seem good follow below.

Check if any reports/news of Dubsmash has been breached recently.
Do advance googling to see if your account has been really breached.
Do check about your email in sites like pastebin,doxbin, etc.

If any entries found, no harm in changing your password. But try to change password from the official site or app of Dubsmash.


Encrypt in C# program, Decrypt in android application By RSA Keys I use RSA encryption for sending messages between a server and client.

The server program is implemented in C# and the client is an Android application.

I want to know if it is possible for a message that is encrypted with a public key to be decrypted by the corresponding private key in the Android application?  Is the standard for padding the same in Java libraries and .Net libraries?  Can I send a message without padding?

Do not use RSA without padding (textbook RSA):
padding fixes undesirable properties of textbook RSA like malleability and semantical security.
It is possible to decrypt the message in the Android application if you use the same padding in each implementation.
In C#, you can specify the padding you want to use by creating an RSAEncryptionPadding object and using it as a parameter of the encrypt method from the RSACryptoServiceProvider class.
In Java, you can pass a standard cipher transformations string like RSA/ECB/OAEPWithSHA-256AndMGF1Padding as parameter of the Cipher.getInstance method.


How do I purge Windows of my private data when formatting the drive is not an option? I'm changing my employer, and I'm about to leave my office computer. Due to internal regulations and my supervisor's orders, I'm unable to format the disk drive. I was hoping I would be able to do this, as I was using that computer partially for my private purposes. The computer is running Windows 7.

Beside uninstalling any software that contains my personal data (like Google Chrome or Dropbox) and clearing everything in every browser cache / history, what other steps should I undertake or take into consideration in order to leave my office computer without any personal data-related concerns?

Note that I understand that formatting the drive is the best option here (and thus I really regret that such an option was taken from me). As far as I know and understand, using an office computer for private purposes isn't the best idea. A bad thing happened, however, so comments about that won't help me in this situation.

As per comments: My computer must be fully usable after I leave the office and thus I can't simply trash my disk! :> And my Windows is not a part of a domain.

Note that if you were on an AD Domain, domain administrators would have had full access to your computer anyway. The usual caveats about physical access, unencrypted drives, etc, all apply, so this is not real security but will prevent subsequent users of your computer from getting easy access to your data.

If you were not part of a domain, then the best you can do is create a new administrator account, and then delete your old account and profile from the new one.

Make sure that the recycle bin has been emptied. If the Volume Snapshot Service is running, delete any volume shadow copies by running cmd with elevated privileges:

vssadmin delete shadows /for=c:

Finally run the following command for each drive:

cipher /w:c:\

Where c: in both cases is the drive letter designation. This will wipe all free space, making it unrecoverable. See this answer for more information.


How would disabling IPv6 make a server any more secure? I was reading this article about hardening security on Linux servers, and in point #23, the article says:

  #23: Turn Off IPv6

  Internet Protocol version 6 (IPv6) provides a new Internet layer of
  the TCP/IP protocol suite that replaces Internet Protocol version 4
  (IPv4) and provides many benefits. If you are NOT using IPv6 disable
  it:

The article then gives links to different websites which tell how to disable IPv6. Neither the article nor any of the links, however, seem to tell why IPv6 should be disabled if not used.

Since the article was on hardening security on Linux servers, how would disabling IPv6 make a server any more secure?

From a firewall perspective it is important to realize that both IPv4 and IPv6 (if enabled) are configured on a system and this is not always the case.

In my experience, I have been able to bypass (internal) firewalls. In one scenario, on a Linux machine, iptables was configured however, ip6tables was not, which exposed (vulnerable) services that were not available over IPv4.

Since most services bind to 0.0.0.0 and [::]:[port] (every interface), these services are also available over IPv6.

So, yes it is important to consider disabling IPv6 if you do not use it. If you do use it, you or administrators in general should be made aware that (at least on Linux servers) extra firewall configuration is required.

And before you start that administrators should be aware of this, you are totally correct. However, from experience there is lacking a lot of IPv6 knowledge among system administrators.


Can biometric photos / finger prints be forged when they are taken by a human? Imagine a scenario, where you have a person p online which has a very good profile. For example, you want to hire them. This person is identified by a public key and has some information I about him signed with this public key. However, there is no way of contacting this person.

Now somebody p' shows up and wants to prove that he is p. He does not have his computer with him, so he can't sign anything with his private key.

What would "I" have to be so that it is possible to identify him an make sure the person who is in front of you is not a swindler?

I thought maybe biometric photos could be something? I guess a human would easily see when you would try to wear a mask to pretend you are p?
I think I've seen that one can put something on the finger to get another fingerprint, so I guess finger prints are not a good identifier?
Are there other identifiers of a person which are hard / impossible to forge, without having to create a shared secret? (Note that in this scenario, the biometric data is public)

One identifier which cannot be forged is DNA. But getting the DNA data is also quite expensive / time consuming, I guess?

Even a DNA sample can be forced to be inaccurate: it's dangerous, expensive - but it's possible, beleive me. The way you're 100% sure that p and p' are the same person is sign something with your key, not giving any of keys to him, give this signed piece to him and ask him to sign with his key and bring the result with himself. You will be able to verify it in two ways: his signature and you can check the integrity of your initial crypto-message: the person "p" is not aware of what's inside, so it can't forge this. It should be fine and inexpensive, IMHO.


"X-Original-URL" and "X-Rewrite-URL" Related Vulnerabilities I am going through the Burpsuite Academy Training on Access Control and I came across a section I still don't fully understand. In their reading, they explain:

  Some application frameworks support various non-standard HTTP headers
  that can be used to override the URL in the original request, such as
  X-Original-URL and X-Rewrite-URL. If a web site uses rigorous
  front-end controls to restrict access based on URL, but the
  application allows the URL to be overridden via a request header, then
  it might be possible to bypass the access controls using a request
  like the following:

  POST / HTTP/1.1
  X-Original-URL: /admin/deleteUser

In the following lab you could modify the HTTP request so that you can access a restricted /admin page by changing the header to set the GET request to "/" and then adding X-Original-URL: /admin as a new line.

I can't find any documentation on either of these two headers. What do they do? And why does this vulnerability work? Is this a niche exploit, or something that might existing on many servers?

As mentioned in the comments, these are custom headers in some PHP frameworks.

  Many web frameworks such as Symfony 2.7.0 to 2.7.48, 2.8.0 to 2.8.43, 3.3.0 to 3.3.17, 3.4.0 to 3.4.13, 4.0.0 to 4.0.13 and 4.1.0 to 4.1.2 , zend-diactoros up to 1.8.4, zend-http up to 2.8.1, zend-feed up to 2.10.3 are affected by this security issue.

Fun fact: This was reported by Albino Wax

https://www.acunetix.com/vulnerabilities/web/url-rewrite-vulnerability/


SSH Key: Ed25519 vs RSA A lot of people recommend using Ed25519 instead of RSA keys for SSH.

The introduction page of Ed25519 (http://ed25519.cr.yp.to/) says:
[..] breaking it has similar difficulty to breaking [..] RSA with ~3000-bit keys [..]

So speaking only of security (not speed!), why should one not prefer RSA 4096 over Ed25519?
If Ed25519 only provides ~3000 bit key strength, RSA with 4096 bit should be much more secure?

Key strengths, and their equivalences, become meaningless when they reach the zone of "cannot be broken with existing and foreseeable technology", because there is no such thing as more secure than that. It is a common reflex to try to think of key sizes as providing some sort of security margin, but this kind of reasoning fails beyond some point.

Basically, the best known algorithms for breaking RSA, and for breaking elliptic curves, were already known 25 years ago. Since then, breaking efficiency has improved because of faster computers, at a rate which was correctly predicted. It is a tribute to researchers that they could, through a lot of fine tuning, keep up with that rate, as shown on this graph:

(extracted from this answer).

The bottom-line is that while a larger key offers longer predictable resistance, this kind of prediction works only as long as technology improvements can be, indeed, predicted, and anybody who claims that he knows what computers will be able to do more than 50 years from now is either a prophet, a madman, a liar, or all of these together.

50 years from now, the optimistic formula given in the answer quoted above ((year - 2000) * 32 + 512) means that, at best, RSA records could contemplate approaching 2592 bits.

The conclusion is that there is no meaningful way in which 3000-bit and 4000-bit RSA keys could be compared with each other, from a security point of view. They both are "unbreakable in the foreseeable future". A key cannot be less broken than not broken.

An additional and important point is that "permanent" keys in SSH (the keys that you generate and store in files) are used only for signatures. Breaking such a key would allow an attacker to impersonate the server or the client, but not to decrypt a past recorded session (the actual encryption key is derived from an ephemeral Diffie-Hellman key exchange, or an elliptic curve variant thereof). Thus, whether your key could be broken, or not, in the next century has no importance whatsoever. To achieve "ultimate" security (at least, within the context of the computer world), all you need for your SSH key is a key that cannot be broken now, with science and technology as they are known now.

Another point of view on the same thing is that your connections can only be as secure as the two endpoints. Nothing constraints your enemies, be they wicked criminals, spies or anything else, to try to defeat you by playing "fair" and trying to break your crypto upfront. Hiring thousands upon thousands of informants to spy on everybody (and on each other) is very expensive, but it has been done, which is a lot more than can be said about breaking a single RSA key of 2048 bits.


Wired VS Wireless Mouse & Keyboard Security Wired VS Wireless Mouse & Keyboard Security

For someone who is trying to maintain the highest level of security, which option proposes the LEAST amount of security flaws?

  Wired Keyboard & Mouse?

  OR

  Wireless Keyboard & Mouse

I have also been seeing more and more articles like this one which states things like:

  The Bastille researchers claim that “more than a billion” devices are
  affected in total.

So with wireless devices appearing compromised, what options does someone like me have? Should I use a wired keyboard and mouse, or should I use none of the above (If I'm using a Laptop with a built-in keyboard)? If anyone can shed some light on this subject, because I'm currently using a Logitech Wireless mouse & Keyboard which is great for convenience, I just hope I'm not conveniently giving up the cost of security.

USB mice and keyboards are generally "safe" from known vendors and distributors, but then again you cannot really trust anything. nation state etc etc.

The Bastille research is based on wireless keyboards and mice that do not use encryption, or at least, does not force encryption (downgrade attack) or uses weak keys. This is the key point on the wireless keyboard.

So your options, use a built in keyboard or a wired keyboard or a keyboard that forces encryption only with strong non-reused keys. (good luck)

unless you build your own keyboard you will have to trust things, not sure on PS/2 security, but you could always go back to that!


How to verify Ruby on Rails projects are at current patch levels? I've got a few Ruby on Rails systems running Ubuntu 14.04LTS. The Ubuntu version of supported Ruby is 1.9.1 but the developers use a Gemfile and Bundler which (AFAIK) installs Ruby (and gems) out-of-band from the OS updates to allow differernt projects to use different Rails stacks.

I believe the actual Ruby version in use is 2.3.5, but you can't tell that from the Ubuntu package utilities. It's been like this for years, but recent security policies are pushing us in the direction of proving we are on top of these updates and I can't just check a box that says "web developers say it's OK".

I've tried bundle show and to get a list of Ruby gems in use in the current (directory) project, but any single server may have several branches of projects, with many different versioins of gems in use in each branch. I couldn't tell you for sure which systems/projects are up-to-date with current patch levels.

The developers don't really care to be involved with the security aspects but if I take some hard data to managmement and say "This system is running vulnerable version X.X. This is the CVE. We are not patched" my job is done.

Is there an easier way to get current Ruby/Bundler/Gems versions other than some ugly find /var/www -name Gemfile -exec ... shell-fu ?

What you describe is a security nightmare in itself - multiple environments at unknown (effectively thus undocumented) versions, with no central registry what to update if necessary.

So, that's in itself worthy of reporting.

Now, your job becomes making a map of all the installations; run your commands on each of these (automatedly), and make a report out of that as well as integrating it in whatever infrastructure for server management (vagrant? Ansible? Puppet?...) You guys use. Congrats!


Crypto-shredding & backups of keys I was wondering, how is crypto-shredding implemented in an environment, where data backups/mirroring is mandatory for the "key database" - as it must not be possible to lose the machine/db with all the keys and shred everything by accident :-).

I always get in my mental model to the point, where I delete the encryption key for the given entry...but it still exists in some kind of offline backup. Or is there a restriction that for crypto-shredding all replicas of the "key database" are online and the DB may not be snapshotted?

Crypto keys for database encryption are stored and backed up separately from the database itself. To read a backup, you'd need both the backup file itself and a copy of the key.

To crypto-shred the database backup, you would simply destroy any copies of the key and any backups of the key. Because the key backup is much smaller and changes much less frequently (and therefore has fewer backups), it is much simpler to delete the key than hunt down all the database backups and destroy them.


Detecting IOT Devices on Corporate Network? I'm looking at trying to identify IOT devices which is sitting on my network.  Any suggestions on what I can look for? Common ports being open? User agents?

You want to look for "things" on your network, from cameras, coffee makers, and pedometers, and you are hoping there is some commonality?

I think you need to take a whitelisting approach and define what is allowed/expected, then investigate/suspect everything that is not that.

Laptops and desktops are more likely to have identifiable MACs, but what commonly makes an "IOT" is a cheap NIC, which means a generic MAC (a.k.a "general purpose" in nmap). But there is a lot on a network that will have cheap NICs, like printers, routers, and other "things" that make your network function.

User agents will only apply to those devices that connect through HTTP in a standard way, but there is no reason an IOT device has to do this. MQTT traffic is one efficient way to communicate data up to a IOT server, and there are multiple custom protocols, too.

It will be a lot easier if you define either what is allowed, or define what specific type of "thing" you want to identify. Your stated goal is to locate an undefined set of "things", and the challenges to do that will be easy to identify.


Sniffing 3g network Pockethound I was wondering if its possible to prevent 3g sniffing. Its not about the security of the information sent over 3g, but being able to use your 3g without anyone able to see traffic. There are machines that can detect any use of network nearby (Pockethound:http://www.bvsystems.com/Products/Security/PocketHound/pockethound.htm). I assume this machine uses something like a networkcard on monitoring mode. Is it possible to bypass machines like this?

Thanks in advance,

Michiel

No, because physics. Radios emit radio waves and these can always be detected by a suitable receiver.

Note that this is not sniffing - that means reading the packets as they go past. The device you link to doesn't sniff - it just looks for a signal at the appropriate frequency.

(You can sniff 3G as well as detect it, of course, but no-one bothers as it is encrypted well enough that other methods of intercepting the data usually prove easier.)


What is the expected performance impact/loss of meltdown/spectre patches? The patches related to the mitigation of meltdown and spectre attacks, have they caused significant and noticeable slow down of execution in systems they have been applied to?

The full impact isn't known yet. It is also going to differ massively based on workload - code invoking large numbers of system calls is likely to invoke a notable hit whilst any difference to code mostly operating in user mode is unlikely to be measurable.

Epic Games has already blamed the patches for service outages.
Some artificial benchmarks have shown drops as drastic as 50%.
Intel initially put out predictions of 5-7%.
Toms Hardware have found no difference outside margin of error on a storage based test (Storage is one workload expected to be hit hardest).


Use cases for GnuPG's --(import|export)-options (import|export)-(clean|minimal) I'm wondering in which scenarios I would make use of GnuPG's non-default --(import|export)-options (import|export)-(clean|minimal)?

The only practical use case I can imagine is to export my public key with the command gpg --armor --export --export-options export-minimal in order to publicize it on my homepage or distribute it via e-mail so that others can encrypt messages for me or verify signatures I made.

Debian maintainers sometimes use keys exported with export-minimal in their source packages to verify new upstream releases. That way the keys take up less space.


UUID in URL - how safe from accidental discovery is my proposed solution? Here is what I want to do:
We create reports for customers, normally we send them as pdf to our customer who then shares them with colleagues across his company.
We want to switch now to digital reports.

The report is accessible only via URL with UUID
When the user clicks on the link, he is redirected from https://example.com/uuid/ to https://example.com/customer/report/
The second domain checks the http referer for the UUID. We make this redirection to prevent the problem when the user clicks in the report on an external link that the other server has the UUID in their referers logs.
We create the UUID v4 with the NPM Package UUID
Everything is via https connections

My questions:

(edited to avoid duplicates)

Can crawlers find the UUID if it isn't posted anywhere?
Is my solution to redirect to separate report page to avoid the problem with UUIDs being exposed in the request URL effective?

Why don't we use username / password?
Simply because at the end with sharing the report these credentials are shared in emails as well. And either we make a long secure password or the client makes it but then there is a good chance that he has to share one of his standard passwords.

It's not very safe, but depending on how sensitive the file actually is, you may consider the risks worth the usability benefits.

  Can a robot index such pages and their UUIDs?

Yes, if someone posted the link to the file on the public internet, then they can be indexed. With major search engines, you can ask search engines to exclude this directory by using robots.txt, but compliance with robots.txt are voluntary and there are many other spiders that ignore robots.txt.

If you want to secure this without losing much of the usability, you may want to consider requiring viewers to create individual accounts to access your site. The viewers should enter their email, and you'd validate their address by sending an email with a confirmation token, you'd then send a message to the document owner to ask them to grant access to the user identified by their email. Additionally, you may want to allow the document owner to specify a list of email domains and addresses that will be automatically granted access, so that he wouldn't have to manually grant every requests. Most companies give their employees email addresses on a company domain, so this would cover a lot of use cases. This way, each user that accesses the document will still be identified, rather than being an anonymous user.

If you really don't want to require users to create an account, it is possible to implement this without requiring user password, when user type their email, they'll be sent an email which contains a link they'll click that have a unique token that grants them access to the document for a short period of time. When the short term token expires, the user can request a new token.


Secure way to shorten a hash If I want to save a hash of a certain number of bits, but my hashing algorithm gives me more bits than I need, then what is the safest way to shorten it?

Should I:

Just remove the first or last few bits
XOR the first or last few bits with the part I'm keeping
Do something else

Does it matter how I'm shortening it, or does it depend on the hash algorithm I'm using? Does this reduce the security of the hash (ex.: is a 128-bit hash trimmed to 64 bits worse than a 64-bit hash of the same algorithm)?

Simply truncating a hash is the common and accepted way to shorten it. You don't need to do anything fancy.

There are plenty of questions here, and on crypto.stackexchange about whether doing this reduces the strength of the hash (see the list of related questions at the bottom). The answer is that No, truncating a hash does not reduce its strength (apart from the obvious that shorter hashes have more collisions).

According to @Reid's answer in [2] and @ThomasPornin's answer in [3], the idea of truncating hashes is fully supported by NIST, in fact SHA-224 is just SHA-256 truncated, SHA-384 is just SHA-512 truncated, etc.

RELATED QUESTIONS

[1] truncated hash for message authentication?

[2] Is truncating a SHA512 hash to the first 160 bits as secure as using SHA1?

[3] Should I use the first or last bits from a SHA-256 hash?


dnsspoof doesn't spoof DNS request with IP-address of local machine I want to spoof all DNS requests with the IP address of my local machine.

However, running dnsspoof, all clients receive the real IP address and not the fake IP address of my host.

I know I can run dnsspoof using the -f option. But in this case, I just want to spoof all DNS requests with the same address of my local host.

Any ideas?

root@kali:~# dnsspoof -i wlan0
dnsspoof: listening on wlan0 [udp dst port 53 and not src 192.168.1.1]
192.168.1.106.51298 > 192.168.1.1.53:  21993+ A? api-glb-bln.smoot.apple.com
192.168.1.106.60866 > 192.168.1.1.53:  65045+ A? p09-keyvalueservice.fe.apple-dns.net
192.168.1.106.55219 > 192.168.1.1.53:  29989+ A? clients1.google.com
192.168.1.106.60383 > 192.168.1.1.53:  53500+ A? gateway.fe.apple-dns.net
192.168.1.106.58017 > 192.168.1.1.53:  51772+ A? tv2.dk
192.168.1.106.49725 > 192.168.1.1.53:  43764+ A? assets.adobedtm.com
192.168.1.106.49286 > 192.168.1.1.53:  39396+ A? shared.tv2.dk
192.168.1.106.59361 > 192.168.1.1.53:  45196+ A? tv2login.dk
192.168.1.106.59450 > 192.168.1.1.53:  61943+ A? platform.twitter.com
192.168.1.106.51695 > 192.168.1.1.53:  64740+ A? cdn.optimizely.com
192.168.1.106.62386 > 192.168.1.1.53:  2942+ A? static.chartbeat.com

It seems that dnsspoof needs a hosts file in order to know what address to reply with for which hostnames. In your case, you want all requests to resolve to the same address. From the manpage of Dsniff dnsspoof:

-f hostsfile
          Specify  the  pathname  of  a  file in hosts(5) format. Only one
          hostname allowed per line (no aliases), although  hostnames  may
          contain wildcards (such as *.doubleclick.net).

Note that hostnames in the hosts file can contain wildcards to match multiple names in a single line. We can use this to match all hostnames with a wildcard. Create a hosts file with the following line:

192.168.1.1 *

This will result in matching all hostnames to your address, 192.168.1.1.

Note that even after doing this and running dnsspoof with the -f flag, you still may run into issues, as the real DNS reply may reach the victim before yours. Other answers may help with this issue. There are also other tools that may better suit your use case, such as DNSChef.


What's the difference between X.509 and PKCS#7 Certificate? Am I correct calling file with .p7b file extension saved as 'Cryptographic Message Syntax Standard - PKCS#7 Certificates (.P7B)' in Windows - a 'PKCS#7 certificate'? Or is it better called 'X.509 certificate saved in PKCS#7 format'?
When would one choose one certificate format over another? Do these formats have any particular strengths or weaknesses?
Adding this question after my first two edits. How is PKCS#7 format different compared to DER/PEM file formats?

Thanks

Edit #1: Firefox under Linux offers me an ability to export some website's certificate as:

X.509 Certificate (PEM)
X.509 Certificate (DER)
X.509 Certificate (PKCS#7)

Does it mean that PKCS#7 here is just a binary file format similar to but distinct from DER? If true then .p7b file is just an X.509 certificate saved in PKCS#7 format (as opposed to PEM or DER formats).

Edit #2: Follow up to my first edit. This page OpenSSL: Documents, pkcs7 suggests that PKCS#7 can be encrypted in either DER or PEM. From that I deduce that PKCS#7 is not a distinct binary file format. Now I'm totally confused.

Edit #3: Ok, I figured the relationship between PEM and DER formats. The Base64 encoded payload of the PEM file is actually data in DER format. So initially the X.509 certificate is encoded in DER format and then optionally you can encode the resulted 'DER encoded certificate' to 'PEM encoded certificate'. I'm still having difficulties fitting PKCS#7 part of the puzzle.

Edit #4: Another piece of information. PKCS#7 seems to be a container that allows to bundle together several X.509 certificates prior to encode them into DER format (which is different from PEM format where you can bundle certificates together in the same file by just pasting them one after another).

You've evolved to mostly right, but to add several points
and expand on @CoverosGene' answer more than I felt comfortable doing in an edit:

X.509 defines a certificate (and some other things not relevant here) in ASN.1,
a (very!) general data structuring method which has several defined encodings, of which
DER Distinguished Encoding Representation is quite common and is used here.

PEM format -- for several types of data of which a certificate is only one --
is much as you say just binary (DER) data encoded in base64 (edit) broken into lines normally every 64 chars (but there are variations), plus header and trailer lines
consisting of dashes + BEGIN or END + the type of data, in this case CERTIFICATE + dashes.
Those lines look redundant to a human but they are expected and mostly required by software.
PEM (Privacy Enhanced Mail) was actually a complete standard for secure email that has now
been mostly forgotten (see below) except for its encoding format.
(edit) As of 2015 there is RFC 7468 describing in detail most use of 'PEM' formats for modern crypto data.

PKCS#7 was defined by RSA (the company, not the algorithm) as a multi-purpose format
for encrypted and/or signed data. It was turned over to IETF and evolved into
CMS Cryptographic Message Syntax in RFC 2630, then RFC 3369, then RFC 3852, then RFC 5652,
hence the wording of the Windows (inetopt) prompt. "PKCS#7" is often used to mean both
the original RSA PKCS#7 and the IETF successor CMS, in the same way "SSL" is often used for
both the original Netscape protocol and the IETF successor TLS Transport Level Security.

The .p7b or .p7c format is a special case of PKCS#7/CMS: a SignedData structure containing
no "content" and zero SignerInfos, but one or more certificates (usually) and/or CRLs (rarely).
Way back when this provided a standard way to handle (edit) the set of certificates needed to make up a chain (not necessarily in order).

PKCS#7/CMS is (are?) also ASN.1 and depending on circumstances can be either DER or BER,
a closely-related encoding with some very minor differences that most DER decoders handle.

While PKCS#7/CMS like any DER or BER object can be PEM-formatted, I've not seen any implementation other than
openssl (edit) it is rare for certs. (Java CertificateFactory can read PKCS7/CMS-certs-only from DER or PEM, but CertPath.getEncoded writes it only to DER.) In contrast both DER and PEM formats for a single cert are common.

PKCS#7/CMS is also used as the basis for S/MIME secure email (multiple rfcs starting from 5751).
Basically PEM encoded PKCS#7 into ASCII text which email systems of the 1980s could easily handle, while
S/MIME represents CMS as MIME entities which are encoded in several ways modern email systems can handle.

OpenSSL confused matters by implementing, in order: a pkcs7 command which handles
the certs-CRLs-only case not full PKCS#7; a crl2pkcs7 command which actually handles
CRLs and certs, but again not the rest of PKCS#7; a smime command which actually handles both S/MIME
and PKCS#7/CMS for most cases of encrypted and/or signed messages; and a cms command which actually handles
both S/MIME and PKCS#7/CMS for a more complete set of cases.

So I would describe the options as: a cert in PEM or DER format; a (single) cert
in a PKCS#7 container or for short just p7, and mention PEM only in the rare case it applies;
or a cert chain in PKCS#7 or p7. The semantic difference between a single cert and a cert chain
is at least as important as the format difference between a cert by itself or in a container.

And this doesn't even reach the widespread confusion between a certificate by itself (for some other entity, most often a CA root or anchor) and the combination of privatekey PLUS certificate -- or usually chain -- that you use to prove your own identity, for example as an SSL/TLS server or when signing S/MIME email. That uses the originally-Microsoft PFX Personal Information Exchange format, or its standardized form PKCS#12 or "p12".


Is CSRF possible in a Client Application? So i was testing a desktop application for first time and identified a possible endpoint vulnerable to csrf, but the problem i'm facing is that when i try to test it in a browser the request doesn't automatically get any cookies that are needed for the csrf to work.

In summary, is it possible to execute a CSRF attack in a desktop application? if yes, how would it work (add the cookies in the attack)?

For CSRF to work in a browser, the user needs to be authenticated in the browser. This is generally not the case with non-browser applications where users authenticate in the application, not the browser.

What you would need for a successful CSRF attack in such an application would be to somehow force a user to perform actions using the application.

For example, if the application processes user-supplied links to perform state-changing actions, then CSRF may be possible (see this example for an Android application processing deep links).


Door locks & deadbolt appropriate for exterior office door with decorative glass next to it Suppose I have an office door that has decorative glass on one side of the door.  The risk to me is that the window pane could be shattered and a gloved hand can manually unlock and open the door from the inside.

Question

What terminology and type of lock is appropriate for securing this type of door (as much as possible) without reinforcing the frame?

(I'm not looking for shopping examples for door locks, but am interested in terminology and criteria I should use to independently research these)

The window pane in your example photograph is wide enough to allow entry for more than a gloved hand; an entire intruder body could fit in the hole, should the pane be wholly removed. At that point, the lock becomes irrelevant.

Moreover, for safety reasons, chances are that the unlock mechanism from the inside must remain operable without a key; otherwise, someone could be trapped and unable to exit in a swift manner should a fire occur in the room. Under these conditions, there is probably no lock which will ensure security (or even simple improve security by a non-negligible amount) as long as there is a breakable window large enough to allow the "gloved hand". Also, note that an intruder who is ready to break a window could also have a crowbar; a wooden frame won't last long.

Therefore, I suggest that you do not look for a lock but for some way to reinforce the window itself, or for a deterrent (motion detectors and alarm in the office; armed guard and/or fierce dog on the inside or on the outside; additional protection layers, e.g. a safe or strongbox, for important assets in the office; and so on).


How is a public scriptable site like codepad or ideone manages it's sandboxing? I've researched this stuff a lot in the recent months but I can't grasp any solid basis on how they achieve running unsafe scripts in so many languages without a problem!

I'm sure they are running virtual machines since language specific sandboxes won't cut it, but what about white listing every language?

There has to be another restraint I'm not seeing.

Codepad explains how they provide security on their about page:

  codepad.org is an online compiler/interpreter.  [...] The strategy is to run everything under ptrace, with many system calls disallowed or ignored. Compilers and final executables are both executed in a chroot jail, with strict resource limits. [...]

  Rather than rely on just the chroot and ptrace supervisor, I've taken some additional precautions:

  The supervisor processes run on virtual machines, which are firewalled such that they are incapable of making outgoing connections.
  The machines that run the virtual machines are also heavily firewalled, and restored from their source images periodically.

This seems like a reasonable strategy to me.

For more background on sandboxing technologies, see the following: What is sandboxing?, How can I restrict what an application can do with my computer?, Monitoring system calls (in a reliable and secure way), and
Wikipedia's entry on chroot.


Is it insecure to have an SSH server on a workstation? I know one systems administrator who runs SSH Server on his workstation to push files to it and check things from a phone but I think it is a bad idea for several reasons:

An operations workstation is a sweet spot for the adversary. Once she is in, she won't find a better place to get access to other places.
If you get hacked anywhere then you don't know which other systems got affected - you have to check everything. How do you check? Maybe walk over to the server room with a Live CD. Maybe your data center is too large. Analyze logs, recent snapshots, start logging in to places. But very likely, at some point your workstation will be involved.

Lets only assume that there is nothing stopping the systems admin from performing all remote management tasks from the workstation. The admin would need to type in passwords and/or use certificates that are stored on the workstation. No two-factor authentication is being used.

What is the risk in running an sshd on an operations workstation?

(Shouldn't that workstation have a no-incoming-connections firewall?)

Very frightening! As a risk, this should be raised to the board - effectively an attacker on the internet only needs to find out that username and password (or an SSH 0-day) and your entire corporate network should be considered compromised. Could the business run without it? Is there anything sensitive on it?

This is a bad idea in so many ways:

It bypasses perimeter controls

It may be impossible to monitor the activities of this administrator - from a governance perspective this is not good. If the company is in a regulated industry this may breach rules. You should build systems so you don't have to trust people 100% - this would help persuade folks not to try something malicious, as they will get caught.
Prevention of attack from outside the perimeter relies entirely on the configuration of that SSH server, as opposed to a defence in depth scenario with firewalls and IDS

It is a key target

A system administrator's workstation can be the crown jewels for an attacker - these should be protected accordingly. If an attacker can get access to it, escalating to the rest of the network is likely to be much easier

It is unnecessary

Large organisations already have a range of options open to them for this sort of functionality. Usually it comes down to access through the normal Remote Access Solution under their domain account to a 'stepping stone' machine inside the network which has an SSH client, then a logon to the admin workstation, then an 'su' equivalent to raise privileges if necessary.

Each step can then have strong controls and logging enforced - a little bit more annoying for the admin (an extra couple of minutes to log in) but much more difficult for an attacker to get through unnoticed.


MD5 Preimage Vulnerability in 2017 I've recently discovered that one of our (strictly internal facing - no external risk unless other systems are completely compromised) platforms is storing passwords by salting and then MD5 hashing them. According to the Wikipedia article, MD5 is very vulnerable to collisions, but only theoretically vulnerable to preimage attacks (cost being ~2123). The article cites the preimage attack being created in 2009, however - quite a long time ago! I am unable to find any significantly more recent information about MD5 vulnerability to preimage attacks.

As a result, my question is this: Have there been any vulnerabilities found in MD5 that would allow a preimage attack on a hashed password, either to find a collision or determine the password, with a cost of less than 2123?

As a follow up question, how important is it that I attempt to pressure the vendor into moving off MD5 for password hashing? Is this major and immediate vulnerability, or more of a theoretical future one (should the database be breached).

MD5 should be considered completely compromised for password use, and has been "deprecated" for passwords for a long time.  It doesn't even have to involve preimage attacks or explicit vulnerabilities.  It is as simple as the fact that the hash rate for modern GPU stacks against MD5 is so fast that you can feasibly brute force nearly any password (okay, I exaggerate slightly)

This is an extreme setup, but it can run through almost 200 billion hashes per second.  That means it can guess about 200 billion passwords every second if they are hashed as MD5.  I don't have an exact translation but as you can imagine, being able to try 200 billion password guesses every second means that even strong passwords can get easily cracked.  The article suggests that it can crack a 14 character windows XP password (which is slightly weaker, and has roughly double the hash rate as for MD5) in just 7 minutes.

More realistic hashing setups might hash passwords at roughly a tenth of that rate, but even still it is quite possible to brute force any realistic password that is hashed with MD5.

Edit to address the second half of your question

Is this an immediate threat?  Yes and no.  In practical terms it is a theoretical threat, as your passwords will only be vulnerable in the event that this internal system is breached.  However, the more you read about the very involved kind of hacks that criminals go through when they want something, the more you realize how important it is to have thorough security at every level of the system.  I personally believe that internal systems should be as secure as external systems.  Here is a good example of a time that bad security lead to expensive breaches:

https://gizmodo.com/hackers-found-a-new-way-to-rip-off-atms-1818859798

Moreover, the other issue is that MD5 has been "out-of-fashion" for password storage for quite a long while now.  I would be very concerned that the rest of their security is equally out-of-date, and that this internal system of yours is full of security holes.

Another edit

An important thought to keep in mind: with these things an important consideration is the potential damage done in the event of a breach.  I don't know what this internal system does, but there is one important bit of sensitive information it definitely stores: your user's passwords.  Even if that is all it stores, it is potentially dangerous.  Here is a very plausible worse-case scenario.  What are the odds that you have an administrator that has a user account on this internal system?  If so, what are the odds that that person used the same password for the internal system as the did for the password to administer, say, your company-wide email system?  If so it is a short hop, skip, and jump from cracking an MD5 password to taking control of your email system, and from there to probably any aspect of your company that is web-facing.

While you try to work things out with the people who manage your internal system, you can think through this thought process yourself and take appropriate steps: "If a malicious user managed to get a hold of the password to email account X, how much trouble could they cause?".  You would be surprised how many companies out there have effectively their entire system dependent upon the security of a single email account, and that without any 2FA.  If that is the case for your company you should fix that, regardless of what this third-party vendor says.  Otherwise your worst-case-scenario is very bad, and this internal system is just one of many ways in which a malicious attacker may be able to cripple your company.


best way to encrypt code and data on IOT device? I have R scripts which are running on a Raspberry Pi device. I want to encrypt the code and data on the device so that if anyone unmounts the disk and try to read the content via other devices they should not be able to do it.

I used ecryptfs for encrypting the folder, but for automounting volume, we need to keep the passphrase on the same volume (in a file) which defeats the purpose. I want to know, what are the best ways to securing data and code on the device.

The Pi needs to be able to perform an unattended boot, without a password being entered.

If you're ok encrypting the entire filesystem then I'd recommend using LUKS to encrypt the disk. It may be a bit more difficult to set up at first but provides a really nice solution.

Offensive Security does a beautiful job describing the (somewhat lengthy) process:

https://www.offensive-security.com/kali-linux/raspberry-pi-luks-disk-encryption/

They use Kali Linux, but that's not necessary. Just use a different Raspberry PI OS image in place of that.

The high-level steps:

Download the OS image and copy to an SD card
chroot to the image and install/update several files to prep for crypted boot
Create an initramfs file which includes Dropbear and freshly generated SSH keys
rsync the modified rootfs to a temporary backup location and then delete the rootfs partition from the SD.
Recreate an encrypted partition to restore the root partition data

Good luck!


Is it secure to mount Veracrypt without sudo password in this way Does this way have any security issues other than what's mentioned in that post?

For reference:

  Create a new group called say veracryptusers and give it the necessary permissions to use VeraCrypt without root password. Any user that belongs to that group will be able to use VeraCrypt.
  Note: this slightly increases attack surface for user rights elevation, so be sure to add only trusted users to this group.

$ groupadd veracryptusers

  Now let's give this group sudo permissions limited to VeraCrypt:

$ sudo visudo -f /etc/sudoers.d/veracrypt
GNU nano 2.5.3        File: /etc/sudoers.d/veracrypt.tmp

  Users in the veracryptusers group are allowed to run veracrypt as
  root.

%veracryptusers ALL=(root) NOPASSWD:/usr/bin/veracrypt

  Also please make sure that veracrypt and /usr/bin have the proper
  permissions and are NOT writable by groups nor others:

$ ls -al /usr/bin/vera*
-rwxr-xr-x 1 root root 6341016 paź 17  2016 /usr/bin/veracrypt
$ ls -ald /usr/bin
drwxr-xr-x 2 root root 69632 lip 25 10:09 /usr/bin

  Otherwise a malicious user may replace the executable and gain total
  root right at his wish.

  Now reboot (or relogin) to have groups membership revaluated and voilà
  - you can mount and unmount your favourite volumes.

This is extremely insecure. I'm glad you asked elsewhere before running this setup yourself! I hope those 3000+ people on AskUbuntu were similarly cautious. So, why is this insecure? What can an attacker do if you put them in the group? That group will be able to elevate privileges to root. The reason is simple: VeraCrypt allows mounting an encrypted volume of arbitrary file permissions, using an arbitrary filesystem with arbitrary mount flags. Consider the following scenario:

An evil user is put in your special group, letting them run VeraCrypt as root without a password. This user wants to exploit your setup to get a root shell, allowing them to run commands other than /usr/bin/veracrypt as root. Their final goal is simple: bypass the restrictions you have in place and run arbitrary commands as root.

An encrypted volume is created, owned and writable by the evil user. It is formatted, and a bash binary is copied to the filesystem. As the volume is directly writable, the setuid bit can be set on the binary. This is normally impossible, but our attacker can modify the volume.

The evil user runs VeraCrypt as root and mounts the volume to /mnt (a normally privileged operation). They run /mnt/bash and get a root shell, from which they are able to execute any command as a privileged user. They have their root shell and can execute anything they want.

Normally, a user-mountable filesystem will have several restrictions in place. Such filesystems are typically configured by mounting with the user flag. According to the mount(8) manpage:

user

Allow an ordinary user to mount the filesystem. The name of the mounting
user is written to mtab so that he can unmount the filesystem again. This
option implies the options noexec, nosuid, and nodev (unless overridden
by subsequent options, as in the option line user,exec,dev,suid).

When a filesystem is mounted by an unprivileged user this way, despite the fact that they can create a filesystem with a setuid executable, the system will not honor the setuid bit when the filesystem is mounted. VeraCrypt has no way of knowing all this, and happily mounts the writable filesystem as root, with full support for setuid binaries. This safeguard is bypassed, and the attackers gets root, despite you only allowing one "safe" command via sudoers.
I'm sure there are other possible attacks as well. Does your filesystem have any mount flags that, on their own, can give an attacker root? Can keyfiles or new volumes be written to arbitrary locations? If so, can their contents be chosen by the user? When you bypass an important safeguard, you suddenly must rely on the designers of VeraCrypt writing the program in such a way that it protects from a threat model they never even considered. Unlike the mount program, which was designed from the start to be safe even when run as root by an unprivileged user, VeraCrypt had no such goals. The same considerations should apply to anything before you run it as root.


Does the browser still stores the website you visited Private Browsing [incognito Firefox]? As they clearly state in their website they mention that

What does Private Browsing not save?

Visited pages: No pages will be added to the list of sites in the
History menu, the Library window's history list, or the Awesome Bar
address list.
Cached Web Content and Offline Web Content and User Data: No temporary Internet files (cached files) or files that websites save for offline use will be saved.

Considering this Scenario

If I open a tab in incognito Mode as per below screenshot.

After I close the tab It gives me an option to Undo Close Tab and If I click on it,This restores the tab which I closed.!

So Does this mean that this statement is untrue?
Cached Web Content and Offline Web Content and User Data: No temporary Internet files (cached files) or files that websites save for offline use will be saved

Further research regarding this
I opened the about:config from Firefox and I filtered browser.sessionstore.and I'm setting the following preferences as follows,and now closed tab will no longer will be able to perform undo

browser.sessionstore.max_tabs_undo;0
browser.sessionstore.max_windows_undo;0

According to Firefox

  The saved session data is also cleared upon receiving the
  "browser:purge-session-history" notification.

  The data is stored on disk as a serialized javascript data structure
  (though it's possible that it will be converted to JSON once that
  becomes natively supported by Gecko/Spidermonkey)

The statement is not untrue but IS possibly misleading.

Certainly files are in fact cached while the in-private session is active, they are then cleared at the end. Of course, we all know this could leave a footprint.

In-private sessions are not really meant to prevent someone from discovering a footprint but more to prevent inadvertent "bleed" between sessions.


Yubikey - WebAuthn and U2F I have a yubikey which supports only U2F. It doesn't support FIDO2. I read about U2F and i understand how it works.

When i test my Yubikey for WebAuthn on https://webauthn.io it works. I wanted to know how WebAuthn works with my Yubikey when there is no support for FIDO2 on my yubikey?
When they say FIDO2 is backward compatible with U2F, does it mean once register my key for FIDO2, it can be used for U2F as well?
If register my key for U2F, can it be used for FIDO2?

Because WebAuthn is backwards compatible with U2F.
Yes.
Yes.

To your U2F key, a website using WebAuthn just looks like a website using U2F. There are certain WebAuthn features that can't be used with your U2F key (such as storing a userHandle), but for the most part the standards are very similar.


Is there any publicly available information about how sqlmap works? I want to understand the deep theory behind sqlmap - the decision making of the programm - how is it done? Is there any public paper? (There is still an option to read and understand sqlmap code and use -vvv switch).

I'm searching for a visualisation of sqlmap's decision tree.

Note: I know how SQL injection works and I'm familiar with sqlmap's wiki.

You may want to look at the list of presentations maintained by the sqlmap project.  For example, they list sqlmap - Under the Hood and link to the slides.  The same talk as presented by the author is available on Youtube (since slide decks often leave out the meat of the discussion).


Can eavesdropping be facilitated by injecting content that will be transmitted? I was asked during a job interview the following question, to which I couldn't find an answer then, and this thing is still bothering me. I was hoping someone might know the answer here:

Consider two banks that communicate through an encrypted channel, where you are able to listen to the communication between them:

Bank A holds credit card numbers (you can refer to the credit card numbers as decimal or binary number of some length of your choice - it doesn't matter) in its database, in a plain form; meaning the credit card numbers are not encrypted at rest - they are encrypted only right before they are sent to Bank B through the channel between them.

The goal is to steal Bank A's credit card numbers. But, as I mentioned, since you are listening to an encrypted channel, we suppose you somehow gained access to Bank A's database, where it holds its credit card numbers, and you are given a chance to plug your disk on key into it, and modify the data in the database.

So basically the question comes down to: Is there any data you can add to the database, or any manipulation you can do on the credit card numbers, that will then give you the ability to figure out the numbers by listening to the encrypted channel, or to provide any advantage in attempting to decrypt the credit card?
(Thanks to Xander for helping with overcome the language barrier by rephrasing the question, I'm not an English speaker)

I hope I didn't omit any important details (I should've write that down).
Is it doable?

Your description is a bit confusing, but from what I gather, the scenario is this:

You're able to add data to the credit card database, and then capture encrypted traffic off them wire.  The question then is: "Is there any data you can add to the database that will then give you an advantage in attempting to decrypt the credit cards?"

If, that is in fact the question, and if, in fact, the encryption used is strong, and properly configured, the answer is "No."   This is what is called a "chosen plaintext attack."  It means that you can choose the data (or some of the data) to be encrypted, in this case, the arbitrary data that you add to the database, in an attempt to determine if you can learn something about the plaintext from the ciphertext alone.  A strong encryption algorithm, properly implemented, will not allow this.  You can do whatever you want to the data to be encrypted, add anything you want, but once it's encrypted and sent across the wire, it won't help you in your quest to decrypt, or discover anything about the contents of the encrypted traffic.


Hiding BitTorrent clients One of the things that came out of the Snowden files, I believe, was that ISP's will monitor someone that has a BitTorrent client (uTorrent, qbittorrent etc.) installed on their PC, even if they don't use it. It is possible to hide BitTorrent traffic using a VPN, but, hypothetically, how does one hide the very existence of a BitTorrent client on their computer from potential snoopers?

Without a backdoor installed on your machine,  an attacker would not be able to know what software was installed. If 100% of your traffic passes though an encrypted VPN, then it is not possible for an ISP to know what data is being transmitted.  However, protecting the transport layer with a VPN may not conceal the type of protocol used to transmit the data.  Researchers have claimed that it is possible to identify protocols protected by a VPN using statistical analysis, and other reservedness claimed that it is possible to identify encrypted BitTrorrent with information theory.

The only way for an ISP to know that a BitTorrent client was installed is by looking at the traffic it produces.  If at any point the client calls home to check for an update,  an observable condition has been created.  Participating in the BitTorrent Distributed Hash Table,  or visiting well known trackers is also a dead give away.  But even if the data is encrypted, looking at a side-channel,  such as comparing protocol timing signature,  could reveal the use of a P2P protocol.


Difference between Certificate pinning and public key pinning I understand what pinning is. I had read about Certificate pinning and I appreciated it's use case. But today I learned pinning can be of two types -

pin the certificate or
pin the public key

Certificate and Public Key Pinning

I would like to understand the use cases for each. Any typical scenarios where we would prefer one over the other?

One doubt I have is: lets say we pinned a public key. Is our connection vulnerable to MitM attacks. Can there be a CA certified root cert that has the same public key as the cert that is used in the client?

Any differences between the two that can help me understand them better are appreciated.

It really depends on how your application/site manages the certificates and public keys, i.e. how often are the keys and certificates rotated. For example, if your site rotates the certificates very often, then you'll also need to update your application that often as well, if you are pinning the certificate. Whereas, in this use case, pinning public key will be a better idea since the public key associated with the certificate will remain static.

From the OWASP link that you mentioned in the question:

  Certificate

  The certificate is easiest to pin. You can fetch the certificate out
  of band for the website, have the IT folks email your company
  certificate to you, use openssl s_client to retrieve the certificate
  etc. When the certificate expires, you would update your application.
  Assuming your application has no bugs or security defects, the
  application would be updated every year or two. At runtime, you
  retrieve the website or server's certificate in the callback. Within
  the callback, you compare the retrieved certificate with the
  certificate embedded within the program. If the comparison fails, then
  fail the method or function.

  There is a downside to pinning a certificate. If the site rotates its
  certificate on a regular basis, then your application would need to be
  updated regularly. For example, Google rotates its certificates, so
  you will need to update your application about once a month (if it
  depended on Google services). Even though Google rotates its
  certificates, the underlying public keys (within the certificate)
  remain static.

  Public Key

  Public key pinning is more flexible but a little trickier due to the
  extra steps necessary to extract the public key from a certificate. As
  with a certificate, the program checks the extracted public key with
  its embedded copy of the public key. There are two downsides two
  public key pinning. First, its harder to work with keys (versus
  certificates) since you usually must extract the key from the
  certificate. Extraction is a minor inconvenience in Java and .Net,
  buts its uncomfortable in Cocoa/CocoaTouch and OpenSSL. Second, the
  key is static and may violate key rotation policies.

Regarding the MitM, no, your TLS connection will not be vulnerable to any MitM attack as long as you've implemented the certificate pinning correctly. Even if an attacker is able to get a valid certificate for their own domain with the same public key which your application has pinned (through a rouge CA let's say), they still wont have have the corresponding private key. Thus will not be able to create a valid TLS connection with your application (since they will not be able to perform TLS handshake itself).


What does the Juniper backdoor actually allow an attacker to do? The Juniper ScreenOS backdoor recently discovered provides administrative access to these firewalls, but in terms of access to valuable data can it actually provide an attacker with anything useful other than logs?

Can an attacker alter routing? Or disable firewall rules, for example? In most of the scenarios I come up against, these will be of far greater importance.

As the exploit gives root access to the Juniper device, an attacker can:

Decrypt all VPN traffic to the device, thus allowing viewing of all traffic through encrypted tunnels that terminate at the Juniper box
Edit firewall rules on the box, allowing an attacker to remove rules protecting assets within the network
Alter routing tables where these are used, perhaps redirecting traffic
View logs stored on the device
Edit logs on the device to remove any trace of compromise


Can a website detect which method you are using to connect (LL2P, SSTP and PPTP) When you connect to a website using a VPN with the same IP however using a different type of connection each time (LL2P, SSTP and PPTP) can the website detect the difference between these connection.

For example lets say you connect using an SSTP connection the first time but the next time you decide to use an LL2P connect. Is the website able to detect that you've used another method to connect to the website?

They cannot infer it from the technical analysis of their communication with you. All they see is TCP datagrams in IP packets, their characteristics shouldn't be impacted too much by your mode of connection (the MTU of the connection might be, but that's a pretty weak correlation).


How can I detect an infection in a database? Detecting infected files in a website or web application is very easy: you just need to compare the files with a clean backup or the original source (for example with diff) and that's it. However, detecting an infection in a database does not seem so easy. Comparing databases is probably way too complicated in most cases, because of the large amount of data that is constantly changing: tables with logs, options, posts, etc. So I thought that maybe the only reasonable solution is to actually check the data in the database and see if there's anything unexpected. But apart from a couple of obvious things, I'm not sure what to look for and how to look for it. The obvious things are those related to accounts and permissions, so for example I know I should definitely check for any users with unexpected high permissions, and that's normally easy to do. But how about... stored XSS? Should I look for strings like "script" or "onload", etc.? What else should I look for and how should I do it?

I know all this is highly dependent on the specific details of the web application (what it stores in the database and how it uses it), however I'm just looking for general advice. Note that I'm not asking how to recover from an infection: I'm just asking how to detect it, supposing it's restricted to the database. Also, by "infection" I mean anything that can lead to unauthorized access.

This question is rather generic and I can't suggest a specific solution without more specific context as to what kind of web application and database you are operating on.

To detect a breach of integrity of a RDBMS (think MySQL/Postgres) table that you don't expect any updates or new entires on, you can parse the query log for INSERT, UPDATEs to that particular table. This doesn't scale in the end. I'd rather suggest you to setup some triggers to log for certain conditions (INSERT, UPDATE, ...) on tables that is reflected on your site. There is a good guide on how to achieve this with OSSEC HIDS and a custom UDF log function on https://blog.rootshell.be/2011/01/07/auditing-mysql-db-integrity-with-ossec/.

As for post-mortem/forensic examination after a breach to find particular entries that might contain Stored XSS, you'd have to look at how your data is structured and try to find anomalies rather than specific strings as XSS comes in many variations and depend on your server-side technologies, different evasion techniques used by the attacker etc.

I understand that your question is specific to databases, and post-breach examination. But best-practice is to monitor and catch these at a way earlier layer, such as some WAF/content filtering before even hitting your application such as ModSecurity[1] or IronBee[2].

[1] https://www.modsecurity.org/

[2] https://github.com/ironbee/ironbee


Challenge-response login without storing a password equivalent A problem with many challenge-response login systems is that the server has to store a password equivalent. For example, if the server stores SHA1(salt + password), and an attacker captures that hash, then they would be able to directly use the hash to login, without having to crack the password.

I believe there are some variations of challenge-response login that avoid this weakness. In particular, I have heard that newer versions of MySQL have fixed it. I do not have any references or further information on this, but I would like to know how this can be done. I can imagine some approaches myself, but I would prefer to use a standard, peer-reviewed protocol.

I am aware that SRP solves this problem. However, SRP is more a public key protocol rather than challenge-response. I am particularly interested in protocols that only use symmetric ciphers, hashes, and maybe some XORing, etc.

Both the algorithms described here suits your description (doesn't require to store plaintext-equivalents on the server, achieves stretching and are simpler than public-key setups): http://openwall.info/wiki/people/solar/algorithms/challenge-response-authentication


anonymization for scanning and hacking What kind of anonymization can be used for scanning and exploiting? Of course there are VPNs and VPS, but thats a different story. I know some scanning can be done via TOR, but how can an exploit or something used via proxy?

I am not sure how VPNs will provide anonymity. Even for VPS (in case you meant Virtual Private Server), I am again not sure how will you use that to be anonymous. If you buy a bunch of VPS from linode/rackspace and use it to scan/exploit some servers, it is easy to trace you back. Linode requires a photographic copy of your credit card to activate your VPS.

If you make your scanning programs use Tor, your IP won't be revealed -- but I don't recommend using Tor. Running vulnerability scans using Tor can be really slow. That won't help if you are brute forcing. Also, Tor exit node policies may restrict which ports you can connect to.  In addition, it is unethical to use Tor to scan, exploit, or hack other systems.

Expert malicious hackers usually use compromised computers to run their attacks from. They might infect a computer (some university/govt. office) and use that to attack their target, making sure that they have put enough controls that a forensic examination of that computer won't reveal their IP or identity.
Again just IP anonymity may not be sufficient in what you are trying to do. Just by visiting a website, you can leave enough evidences to uniquely identify you.

  but how can be exploit or something used via proxy?

One way to mount attacks from a remote computer is to create a socks proxy to that host and run all the hacking programs using tsocks. Again this is just one scenario and one way... a lot depends on the exact requirements and the tools at hand.

Finally, please do not use these tricks to scan/attack someone without their authorization. Unless you are very thorough, you are bound to leave traces. Whether you'll be found or not depends on how much time and money the other party is willing to spend in the investigations.


How best to persist arbitrary user data from a PAM module? Is there a standard way for a PAM module to persist additional arbitrary data about each user, where that information is to be retrieved and updated in a later invocation of the same PAM module for the same user?

Probably not, apart from the usual filesystem organisation.

From the modules I checked, most don't save anything persistently, but only read a static configuration from the module options or from some file. Of those that do, pam_tally2.so uses /var/log/tallylog, and pam_pwhistory uses /etc/security/opasswd.

However, /etc is supposed to be used only by static configuration, so /var/lib would probably be more correct for variable data. That said, you probably want to make the location of the files configurable.

I don't see much reason to use anything other than files as storage.


Browser fingerprints, theory or reality? As you may or may not be aware, even when browsing "incognito", you can theoretically be tracked.  Browsers have unique fingerprints, just like people do.  Check this link to learn more.

While I can easily see and understand the theory behind it, I searched and found no recorded evidence of browser fingerprints being used to identify someone.  Is it purely theory or has there been any recorded and proven cases of browser fingerprints used in identifying someone?

Well I can only provide anecdotal evidence for this, but I have seen a site that I was reviewing make use of Panopticlick style functionality for tracking, so it definitely does occur.

It appeared to be part of their overall user tracking / analytics set-up


Is Tweetdeck authentication really safe? I have recently installed Tweetdeck, because my previous client stopped working.

In my custom client, and in the third party client I have used previously I had to setup authorize the application in my Twitter account and the use generated PIN to validate the client origin.

Now I have noticed that in Tweetdeck, I was only asked for my username and password for my account.

How can I verify that the executable is actually official from Twitter? And how can Tweetdeck access my Twitter account without my permission?

And how can Tweetdeck access my Twitter account without my permission?

You just gave Tweetdeck your "permission" by entering the username and password to your Twitter account...

I'm not very familiar with Twitter's API but it's definitely not as optimal as generating a PIN/token/whatever that limits access to one particular application in that it isn't as easy to revoke. However, I don't see any particular problems with it as long as you trust the application (and this doesn't change regardless of the authentication method.)


Will using a keyfile option to open a software such as KeePass defeat keyloggers and screen capture software? I was investigating the security of keyfiles vs passwords and thinking that possibly the keyfile could bypass keyloggers that might be installed on my machine.

Depending on what malware is installed on your system, like you said key loggers will log your master key back to the attacker but if an attacker wanted to gain access to your password database then he will just install a more sophisticated piece of malware to download your key file.


malicious website blocked - on a legit program? I'm fairly okay with PCs but when it comes to networking i'm quite lost with the details.
My brother started up Mount and blade war band napleonic wars - an official game and played multi player and joined a server. All of a sudden malwarebytes starts blocking outbound connections to 176.53.17.226, on ports 49287, 63932, 65135, 57512, and 60600.

Is my pc in danger? Or is it a false positive? Please help. It showed mountblade warband_/mb_warband.exe being blocked

After a quick google search I found THIS and according to them it's fine. mb_warband.exe is known to be published by a legitimate company (Taleworlds Entertainment) so everything should be fine. If this was happening to me I'd treat it as a false positive.