What kind of information is exposed during a Firefox private browsing session? I'm working with Firefox 43.0.1 on Windows 7 Pro 64 bit.  I just noticed an odd behavior, and I don't think Firefox used to behave this way.

I had a GMail tab open in private browsing mode, and then opened a new tab in that same window to go to YouTube.  YouTube recognized who I was and asked which account I wanted to use to browse YouTube with.  I promptly closed that tab, opened a new private browsing window and went to YouTube and it auto-logged me in as one of my accounts.

I was surprised by this behavior, though I'm not sure that I have previously tested it.  I expected that private mode would not allow webpages/sites access to other cookies and such, for purposes of limiting tracking and whatnot.  Even if it does not do this per tab, I expected each window to be pseudo-seperate.  Therefore, I would expect the above scenario to not occur and YouTube to not know anything about me and not auto log me in.

How is Firefox supposed to manage tabs and windows in private browsing mode?  Is Firefox supposed to allow websites access to the sort of data that knows if I am logged in or not?  Are my expectations realistic?  Am I expecting too much?

I found this Mozilla Wiki page explaining exactly what I expected, and if I am reading this right, it says that it was implemented circa Firefox 20.

I am also running several other privacy and security minded extensions, so maybe I previously experienced what i expected due to the combined effects of Firefox and the extensions.

Private Browsing and you

  I had a GMail tab open in private browsing mode, and then opened a new tab in that same window to go to YouTube. YouTube recognized who I was and asked which account I wanted to use to browse YouTube with.

Private browsing in Firefox is instance-based. This essentially means if you log into any google services, you will be detected during that session. If you have a single private browsing session, and you log into a website, close the tab and then go back later, you will still be logged in because you haven't terminated that private browsing session.

By default in Firefox, private browsing is not per-tab. It's per instance. For that particular session/instance, you should expect everything to operate like a normal browser, unless you disable cookies/etc.

YouTube belongs to Google. You'd use your Google account for YouTube, etc. In that particular private-browsing session, it is detecting your Google account since, as I've said before, private browsing does not create a new instance of itself every time you open a new tab.

Browser Fingerprinting

Keep in mind that changing your IP and going incognito will not protect your identity from browser-fingerprinting, among other things.


Centralized key management for IOS and Android Code Signing What is the best way for an enterprise to manage code signing certificates?  The default seems to be that Apple and Android keys get stored by each developer on their machines.

I see systems like Amazon Key Management Service and Microsoft Key Vault that seem to be ideal for this, but I don't think that it is actually possible to use them for iOS and Android apps.  To me, it looks like the ideal way to handle this, would be that the code is submitted to a centralized key server, which signs the code for the developer, without ever revealing the private key to the developer.  Change developers, and you simply revoke their access to the key management server.  Then you also have one strategy to handle all of your various keys. It also seems easier to integrate with continuous delivery.

Is there any strategy that organizations use to manage their private keys for code signing both ios and android apps?

For iOS and OSX there are 'developer' certificates, needed to provision on up to 100 devices; and 'distribution' certificates, needed to upload to the appstores. The first is personal and is bound by a developer license. The latter could be reserved for your corporate build Mac. The 'team agent' can use it and upload, and delegate  rights. The distribution is the one to watch.


Is there any way to write-protect a USB or hide its contents from deletion without hardware modifications? Data on external storage devices are not secure, I understand that. Despite hardware modifications they can still be hacked etc. However files can be hidden (steganography) or encrypted.

I'm wondering if there is any way of hiding a collection of files from an OS so they cannot be deleted (at least from an OS GUI).

Rohos creates an encrypted partition, hiding the files from plain sight (still accessible in memory). How does it fool the OS into not identifing this partition?

I haven't used Rohos before, so I can't say exactly how it works. But I've used TrueCrypt before and it should be capable of this (I would test it, except someone has stolen all my bloody flash drives).

TrueCrypt can create an encrypted partition on a drive (such as a flash drive). This partition should appear as complete gibberish to the OS so it should ignore it. Then you can either keep a small amount of space to hold the TrueCrypt program to decrypt and view the encrypted partition. Or you can just encrypt the entire drive and carry or download TrueCrypt separately.

This will likely only hide it from casual view. Using something like gParted, Windows Disk Management tool and whatever OSX has will likely reveal it. But then they would only be able to format the entire area the contents would still be hidden.


What is the best way to defend against an already comprised computer with a keylogger that is active? I'm curious to what are the possible solutions to defending against a comprised computer with a key logger installed. Assume you had to login to a site with a user / password and there's no way to disable the keylogger. What would one do to throw off the keylogger even if it recorded all your key strokes.

Some possible solutions come to mind is doing copy and paste instead of typing.

... presumably creating a file with the password on another machine and transfering via network or hot pluggable storage device. As Aria says, this doesn't protect you against something which can read the clipboard.

An on screen keyboard works around the problem in a different way - but if the logger is intercepting the key events in the gui, then no benefit.

Another option would be to proxy the connection (assuming the password is for a remote service) and inject the real password on the proxy - but this would require access to the server encryption key if the connection uses pinned keys.

One time passwords would seem to meet your requirement.

Whatever....passwords have no intrinsic value. They are critically important as a means for protecting assets with value. I.e. if you know the machine is compromised, then how can you be certain that the asset is adequately secured after authentication?


Crawler massively changing user-agent This morning I noticed a single IP-address was kinda crawling my website, though it was querying the same page many times in a few minutes. Then I noticed that it was doing that with different user-agents.

I decided to check what was going on by analyzing the Apache httpd logs

  cut -d' ' -f1 /var/log/apache2/*access.log | # Extract all IP-addresses from the server logs
  sort -u |                                    # List every IP-address only once
  while read ip; do                            # Cycle through the list of IP-addresses
    printf "$ip\t";                            # Print the IP-address
    grep ^$ip /var/log/apache2/*access.log |   # Select log entries for an IP-address
    sed 's/^.*\("[^"]*"\)$/\1/' |              # Extract the user-agent
    sort -u |                                  # Create a list of user-agents
    wc -l;                                     # Count the unique user-agents
  done |
  tee >( cat >&2; echo '=== SORTED ===' ) |    # Suspense is killing me, I want to see the progress while the script runs...
  sort -nk2 |                                  # Sort list by number of different user agents
  cat -n                                       # Add line numbers

Which results in a long list:

  line  IP-address      number of different user-agents used.
...
  1285  176.213.0.34    15
  1286  176.213.0.59    15
  1287  5.158.236.154   15
  1288  5.158.238.157   15
  1289  5.166.204.48    15
  1290  5.166.212.42    15
  1291  176.213.28.54   16
  1292  5.166.212.10    16
  1293  176.213.28.32   17
  1294  5.164.236.40    17
  1295  5.158.238.6     18
  1296  5.158.239.1     18
  1297  5.166.208.39    18
  1298  176.213.20.0    19
  1299  5.164.220.43    19
  1300  5.166.208.35    19

So there are tens of IP-addresses that are fiddling with the user agent over a span of a couple minutes. I checked the top 50 IP-addresses against my private little log of known bots, but no matches there.

This is what the access log looks like for a single IP address (vertically and horizontally truncated for readability):

"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0"
"GET / HTTP/1.0" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36"

Are other people seeing this? Anyone a clue what is happening here?

This is either just a simple spidering, penetration testing, browser randomization, or a mix of some of those.

Web Spiders

Many web-spiders allow you to randomize your user-agent while siphoning the contents of a website. This is rather trivial to implement, and some of my web spiders do the same thing. However, it is bad design to randomize user-agents while spidering.

Browser Randomization

There are browser plugins such as Secret Agent which allow you to randomize your browser fingerprint values to avoid detection.

Since you are only seeing upwards of 19 attempts, it's also possible they've viewed around 15-19 pages each, but it seems odd that they'd do this consistently. It could even be one person switching their VPN and browser settings for each page load, which would indicate next-level tinfoil hattery.

Penetration Testing

Automated penetration testing tools also randomize their user agents when visiting a page.

Conclusion

Without seeing more of what's going on, we can't really tell you what's happening beyond making a few guesses. Do you have any packet capture data? That would help tremendously.


Is it legal to publish viticim's password and email? With so many identities stolen last ten years, we know a bunch of emails and a bunch of passwords.

Are the two following databases legal under the US federal laws?

Publish a database which victim's identity is paired up with victim's known passwords
Publish a database which has a table of email addresses and another table of passwords that have been cracked  without pairing up with any victim.

Its depends on your state (But it's similar)
It's Illegal !
 for example for state of kansas :

  Statute 21-3755: Computer crime; computer password disclosure;
  computer trespass. (a) As used in this section:

  (1)   "Access" means to instruct, communicate with, store data in, retrieve data from or otherwise make use of any resources of a

  computer, computer system or computer network.

  (2)   "Computer" means an electronic device which performs work using programmed instruction and which has one or more of the

  capabilities of storage, logic, arithmetic or communication and
  includes all input, output, processing, storage, software or
  communication facilities which are connected or related to such a
  device in a system or network.

  (3)   "Computer network" means the interconnection of communication lines, including microwave or other means of electronic

  communication, with a computer through remote terminals, or a complex
  consisting of two or more interconnected computers.

  (4)   "Computer program" means a series of instructions or statements in a form acceptable to a computer which permits the

  functioning of a computer system in a manner designed to provide
  appropriate products from such computer system.

  (5)   "Computer software" means computer programs, procedures and associated documentation concerned with the operation of a

  computer system.

  (6)   "Computer system" means a set of related computer equipment or devices and computer software which may be connected or

  unconnected.

  (7)   "Financial instrument" means any check, draft, money order, certificate of deposit, letter of credit, bill of exchange,

  credit card, debit card or marketable security.

  (8)   "Property" includes, but is not limited to, financial instruments, information, electronically produced or stored data,

  supporting documentation and computer software in either machine or
  human readable form.

  (9)   "Services" includes, but is not limited to, computer time, data processing and storage functions and other uses of a computer,

  computer system or computer network to perform useful work.

  (10)   "Supporting documentation" includes, but is not limited to, all documentation used in the construction, classification,

  implementation, use or modification of computer software, computer
  programs or data.

  (b) (1)   Computer crime is:

  (A)   Intentionally and without authorization accessing and damaging, modifying, altering, destroying, copying, disclosing or

  taking possession of a computer, computer system, computer network or
  any other property;

  (B)   using a computer, computer system, computer network or any other property for the purpose of devising or executing a scheme or

  artifice with the intent to defraud or for the purpose of obtaining
  money, property, services or any other thing of value by means of
  false or fraudulent pretense or representation; or

  (C)   intentionally exceeding the limits of authorization and damaging, modifying, altering, destroying, copying, disclosing or

  taking possession of a computer, computer system, computer network or
  any other property.

  (2)   Computer crime is a severity level 8, nonperson felony.

  (3)   In any prosecution for computer crime, it is a defense that the property or services were appropriated openly and avowedly

  under a claim of title made in good faith.

  (c) (1)   Computer password disclosure is the unauthorized and intentional disclosure of a number, code, password or other means of

  access to a computer or computer network.

  (2)   Computer password disclosure is a class A nonperson misdemeanor.

  (d)   Computer trespass is intentionally, and without authorization accessing or attempting to access any computer, computer

  system, computer network or computer software, program, documentation,
  data or property contained in any computer, computer system or
  computer network. Computer trespass is a class A nonperson
  misdemeanor.

  (e)   This section shall be part of and supplemental to the Kansas criminal code.

More : http://kansasstatutes.lesterama.org/Chapter_21/Article_37/21-3755.html
More : http://oits.ks.gov/security/policy.htm


Does Speculative Store Bypass Attack Require Assembly/Source Code Knowledge? ok, so the gist of speculative store bypass attack to my understanding is that, cpu chooses the most frequent code path, bypass the if/else test and just assumes that it's true/false and then execute it onwards. later if the prediction proved to be wrong it simply discards the speculative execution results. but somehow the attacker could measure the discarded result and gain some information from the code he does not own(has privilege to access).

My question would be, in order for attacker to extract some useful information, should the attacker have some assembly level code understanding, or even source code level understanding of the targeted program? or how else is he gonna deteremine what the value he measured from data cache represents?

Yes, the attacker must know something about the program being attacked.  All the attacker can observe is how often cache lanes get evicted.  They need something else to tell them what those evictions mean.

The power of the attack is that, in the vast majority of cases (I'd say at least 99.99% of the time), it is far easier to get the code of the program being attacked than it is to get the information which is being protected by that code via normal means.  The only exception I can think of would be software which was developed on an air-gapped network which is never released outside of that network.  That kind of software could be difficult to attack with this.


How much faster would computers be if not for security? I was wondering, assuming a "The Invention of Lying" world, but where no one was able to steal or misrepresent themselves how much faster would computers be? Just to give two examples of what I mean, there would be no need for user permissions (because people would only access the files they were supposed to) and no need for separate users with different privileges. The first would speed up file systems on every level. So, basically, the question is how much does security slow down an average computer? (I know average isn't very well defined, so you can assume either a Windows 8 computer, a Mac OS Mavericks, or Ubuntu 13.10). If this is unclear please leave a comment and I'll try to explain further.

In a modern computer, separation of user process is enforced with the MMU. The MMU decides for each page (a block of RAM, usually 4 or 8 kB, depending on architecture) the relevant access rights, but also where the page actually is in physical RAM. Though the MMU is critical for the security framework, it also has a lot of other usages which grant extra functionalities which increase computing power, rather than decrease it:

support for virtual memory;
on-demand loading of mapped files (in particular executables);
copy-on-write forking.

When you have a MMU which can do the above, expanding it into a tool for security is basically "free": you have the MMU for functionality and performance, and you get security with it as well. In that sense, "without security", computers would not be faster.

There are corner cases, though. For instance, I know a researcher who has long specialized in discrete logarithm cracking. The best known algorithms for such tasks imply a task called sieving in which a computer will use a big array of bits (several gigabytes) and make seemingly random accesses in it. The MMU uses in-memory tables to store the metadata for each page; though the MMU has a dedicated cache (the TLB) to keep the most accessed page entries, random accesses in gigabytes of data imply that most accesses will cumulate cache misses: for the data itself, but also for the MMU tables. Bottom-line is the following: by booting his PC on a custom OS with no MMU usage, he could run his code about three times faster than with a "normal" operating system. Of course, without the MMU, no process separation either -- which was not an issue in his case, in particular since his custom OS was not multitasking anyway.

MMU-less architectures are common in small embedded systems. Not having a MMU does not make such systems faster; it makes them cheaper, because a MMU-less CPU can be smaller by a few thousand gates (it won't matter much on a PC with its billions of gates, though).


Secure Windows 10 Machine Two days ago a shady pop up was left running in the background for hours, when I returned to my computer, I had some error in the pop up window that network connection was lost from sleep.

Today I woke up in the middle of the night to the sound of my computer which was asleep to a windows bloop.  I noticed my computer had woken up from it's slumber.

Windows 10 constantly has High Process, Disk and Wifi Usage for service which I do not need running.

What is the best way to assure my computer is clean?

Download a copy of windows, from a secure machine as well as the bios for my computer,

Restart My computer, Flash the bios, Reformat my machine,  and the only access my old files from a VM?

Is there anything other steps I should take as a precaution, like Flash my video card, etc.  I know this question may sound broad, but I am trying to understand what the steps are for fully securing a computer?

The first thing I would do is run Wireshark and log some traffic to analyze later. Then you should boot from another system and virus-scan, malware scan, etc. the bejeezus out of it with your favorite scanners. You will lose at least a day or two on machine time, but at least you won't be infected anymore and may have logged the attackers IP.


Is there a method to decrypt *.p7m file without key? I need open .p7m message from my old PC, but I lost my old certs. Is there any method how to decrypt it without key?

Theoretically, you could brute-force it. Decryption will take somewhere between "immediate" and "The end of the universe", so it depends on how lucky you are.

Practically, no. It's not going to happen.


Do CAs issue intermediate Certificate for each new certificate request? Do CAs issue intermediate Certificate for each new certificate?

I am new to certificates and asking this to understand if the CAs have a ready set of intermediate certificates they use to issue leaf certificate or the its created based on the Certificate Request information provided by the requester?

Certificate that CA issue is a, simply said, confirmation that public key that you sent to CA in the Cerfiticate Request, really belongs to you (otherwise everyone could claim that he is the owner of domain google.com or amazon.com). Since the certificate contains your public key, it cannot be prepared in advance. Furthermore, response time depends on the type of certificate you requested. Simple certificates that confirm that the requester (you) really owns domain take little time to generate. Usually CA sends you a link to some email your domain, like admin@yourdomain.org. You click on the link and confirm you are the owner. Then CA generates a certificate and sends it to you.

But other types of certificates include much more verification, e.g. CA needs to verify that your company really exists and is really properly registered, that your company resides at the particular address, etc. Such verification can take much longer, days or weeks. It takes much effort, so the price is correspondingly higher. But also the certificate confirms much more than other certificates.

Besides domain certificates there are other types of certificates, like S/MIME: To sign your emails, so the the receiver can rely that the email is really from you; also it can be user for Email encryption. Verification and generation of such certificates takes even less time than for domain certificates. There are certificates for code signing, etc.

More details you can find on the web sites of CAs (I prefer not to promote here any of them).

To signing certificates:

CA has a root certificate. It is the most important piece in the certificate hierarchy. That's why it is stored with much security. For practical often usage it is inconvenient. That's why CA uses root certificate (whose validity is usually 10 years or more) to issue some signing certificates that have shorter validity, like 3 - 5 years. Shorter validity means less exposure and thus less risks of compromising.

To the question: Yes, such signing certificates are created in advance.


What information could be gained from an Amazon shipping label? My family has a bad habit of recycling Amazon shipping boxes without taking out the labels. We have been doing this for the past year or so and have noticed a slight and steady increase in the amount of spam calls we have received at home. I am not one to immediately assume this is directly tied with the shipping labels, as correlation does not imply causation, yet I am getting more and more concerned about this.

I have taken it upon myself to rip out as many shipping labels, but sometimes I myself will forget and end up throwing a box into the recycling without giving it a second glance.

What possible information could be garnered from an Amazon shipping label? I'm afraid that we're letting out much more information besides a telephone number or an address, or even a name. Are there any huge security risks of some attacker getting a hold of a shipping label? Could they get the credit card number or choice of Payment, etc?

A standard Amazon Shipping label (ANSI/UCC-128) has 6 zones.

Zone A: Ship From
Zone B: Ship To
Zone C: Carrier Routing Barcode(Ship to Postal Code)
Zone D: Carrier Segment (Carrier Specific info. Usually Bill of
Lading # & Tracking #)
Zone E: Customer Segment (Usually contains Purchase Order#/ contents
info - UPC, Qty, etc...)
Zone I: SSCC barcode( A unique identifier for the package. Like a
license plate.)

Aside from the human readable data on the label. None of these barcodes relate to any personally identifying information; A 9 digit postal code, and a license plate number identifying the package.

  Could they get the credit card number or choice of Payment, etc?

To answer directly, no.


Publishing a private key as a way to revoke it? Academically, I've been thinking of a system where every user has identities tied to private/public key pairs. A Web Of Trust style of verifying other users builds trust in who is who. If you want to be anonymous, just generate a new key pair and don't have anybody sign it. If these keys were used for absolutely everything in life both professionally and leisurely then a user could potentially generate a lot of keys. For one reason or another, some of these key pairs may wish to be destroyed.

If forward secrecy was always used with the key, could a method of revocation be to publicly post the private key? What downsides would this approach to revocation have?

The idea of simply publishing the private key works only if the private key is definitely not in use anymore. Apart from using forward secrecy for encryption it means that the key was never and will be never allowed to be used for digitally signing something (i.e. proof of authorship, proof of trust relationship...), because otherwise everybody could just take this private key to impersonate someone and claim that the message has been created by the other one before the private key was published.

Also, revocation by publishing the private key means that the owner still has access to the key. This is not necessarily the case if his computer was stolen or compromised by the attacker, but this is definitely a case where the owner wishes to revoke the key.

While one might probably construct a system were  guarantees about not signing can be given it looks like your specific system has not this property, since there is actually signing involved to have some web of trust. But in any case it would be better if revocation would be possible without relying on such restrictions in the first place.

One way would not to publish the private key itself but a revocation message which was signed by the private key and can be verified by the public key. This is kind of revocation message could be created at any time, for example immediately after creating a new key. It could also be kept separately from the key and replicated to many places so that in case the private key got lost it would still be possible to revoke it by publishing such revocation message.

And this kind of pre-created revocation message is actually used in practice. To cite from the GPG manual:

  After your keypair is created you should immediately generate a revocation certificate for the primary public key using the option --gen-revoke. If you forget your passphrase or if your private key is compromised or lost, this revocation certificate may be published to notify others that the public key should no longer be used.


802.11w protected management frames - Wi-Fi I've been reading about protected management frames, introduced in 802.11w, and had a few questions.

Apparently, a message integrity check is provided with de-authentication frames, allowing either the Access Point or Client to ignore spoofed frames with a bad MIC. I read that this MIC is derived from the PSK (e.g. WPA2 key). Does this mean that these frames are still spoofable from inside the network (i.e. if you own the PSK)? Or does it defend against insider de-auth attacks as well?

Finally, I also discovered 802.11w does not defend against most other attacks such as RF jamming, evil twin and rogue APs, but it does defend against misassociation attacks and de-auth attacks. Is it still useful for this reason? Despite them seeming very useful, I have not heard much about Protected Management Frames and cannot really find much information about them from after 2009. Are they widely used? In public and private networks?

I read that this MIC is derived from the PSK (e.g. WPA2 key). Does
  this mean that these frames are still spoofable from inside the
  network (i.e. if you own the PSK)? Or does it defend against insider
  de-auth attacks as well?

If you have the AP's MAC address, SSID and WiFi password then you have everything you need to impersonate an AP running 802.11w anyway (how else are the clients going to know the difference between real and fake?). So while a user on the LAN alone (i.e. they have plugged themselves into a nearby networking switch) may not be able to spoof your AP without having the PSK it does not defend against users who are trusted on the wireless (and have the ability to recover the wireless password) sending de-auths to other clients.

  does not defend against most other attacks such as RF jamming, evil
  twin and rogue APs, but it does defend against misassociation attacks
  and de-auth attacks. Is it still useful for this reason?

Put simply 802.11w just signs the integrity of management frame packets as coming from the AP. Previously only a MAC spoof of the AP was all it took to pretend to be the router asking you to leave the network. So once you know this, 802.11w will obviously not guard against jamming caused by a splatter of nonsense in the RF (because 802.11w is not above the laws of physics) or another AP with the same SSID and PSK of a stronger signal (because then the clients will just join that instead anyway).

802.11w put simply is there to stop the man/woman in the street telling your devices to disassociate from the WiFi network (in the hope of capturing your authentication data to then bruteforce the PSK), that is who it's protecting against. 802.11w is NOT there to defend against someone determined who is already on the inside from impersonating your access points or who can just jam every 2.4Ghz frame on those channels in that area.

If your clients support 802.11w (and they support it well!) and your Cisco AP isn't running a buggy 802.11w implementation itself, then why not turn it on :-)?

  I have not heard much about Protected Management Frames and cannot really find much information about them from after 2009. Are they widely used? In public and private networks?

"802.11w is an IEEE standard based on Cisco’s Management Frame Protection(MFP), a feature that was first supported on autonomous access points in release 12.3(8)JA in 2006 and in the unified release 4.0.155.5 in 2008. 802.11w isn’t a new standard. IEEE ratified the 802.11w standard in 2009, however the adoption has been slow to date, but that is expected to change with Windows 8."

Windows did not really support it until Windows 8 and up (though I speculate given it's the driver that supports it, probably any new driver does and very likely 802.11ac supporting ones).

There's also some horrendously buggy wireless implementations that claim to support message signing (because they have just repeated back the AP saying it supported it) but then refuse to sign even a single packet with it. See also https://supportforums.cisco.com/discussion/12543141/wap371-firmware-v1202-wireless-client-incompatibility which also links off to a list of bad clients I have discovered (I don't have the rep points on this site to post more than 2 links yet).

I also found this online (unable to link to source due to reputation limitation):

"The IEEE 802.11w amendment added this functionality to the 802.11 standard and since July 1st 2014, the Wi-Fi Alliance (WFA) made the support of Protected Management Frames (PMF) mandatory to pass 802.11ac or Passpoint aka HotSpot2.0 R2 interoperability certification. So we will see a much greater adoption of this feature in the near future."

The standard is probably the best guide to read (http://standards.ieee.org/getieee802/download/802.11w-2009.pdf).

802.11w uses AES in CMAC mode and AES was added as part of WPA2, so WPA2 support looks required to enable it.

Also to help your research, Cisco refer to it as Management Frame Protection (MFP) but the standard refers to it as Protected Management Frames (PMF). "For reference, 802.11w was rolled up in the 802.11-2012 maintenance release of the 802.11 standard."


Who is this strangely named Certificate Authority? I'm researching certificate authorities, and I just have no idea what to think of the CA named

x00Ax00-x00Tx00rx00ux00sx00tx00 x00Gx00ex00sx00.x00 x00fx00xFCx00rx00 x00Sx00ix00cx00hx00ex00rx00hx00ex00ix00tx00sx00sx00yx00sx00tx00ex00mx00ex00 x00ix00mx00 x00ex00lx00ex00kx00tx00rx00.x00 x00Dx00ax00tx00ex00nx00vx00ex00rx00kx00ex00hx00rx00 x00Gx00mx00bx00H

as indicated in the EFF observatory color CA map.  Google'ing comes up with nothing. Is this an encoding of a name or something? Not that I have seen the certificate on my system or trusted by Chrome. I'm just very curious what it is and where it comes from and why is it encoded/displayed like this?

This looks like a poorly encoded name which was even more poorly decoded and reencoded.

Initially, the name seems to be: A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH

The name was then encoded in big-endian UTF-16. In this case, this means that every character yielded two bytes, the first of which having value 0.

Upon decoding, whatever did the decoding failed to recognize the string as UTF-16 (maybe it was wrongly tagged in the certificate; an UTF-16 string should be BMPString but some cases of UTF-16 stuffed in TeletexString have been spotted in the wild; see the X.509 style guide for more about it). The string was decoded as if it was ASCII, with "invalid" bytes represented with the C-style convention of "\x" followed by two hexadecimal characters. This sequence is used in the C programming language to insert explicit byte values in literal strings. Therefore, the initial "A-T" became "\x00A\x00-\x00T". Similarly, "für" became "\x00f\x00\xFC\x00\xr" because "ü" is not an ASCII character, and has value 0xFC (aka 252) in Unicode.

When printing out the string, a further injury was inflicted on that string, namely the wholesale removal of all backslash characters. This yielded the exact string that you observe.

(Note that the EFF "CA map" shows other examples of this "C-style without backslashes" representation, e.g. "SCEE - Sistema de CertificaxE7xE3o ElectrxF3nica do Estado", which really should be "SCEE - Sistema de Certificação Electrónica do Estado".)

Now a simple Googling points to, indeed, a commercial German CA called A-Trust. Now the mystery deepens a bit, because the CA Web site uses a certificate issued by the CA itself, and the root CA uses the name: A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH, which is correctly encoded in the certificate (as an UTF8String), but is not exactly the one you observe: the "für" has been replaced with "f.".

My guess is that what you see is a previous version of the root CA certificate from that CA, and it had encoding problems, which were "solved" by changing the text into something which is pure ASCII. I.e., instead of fixing their software to handle non-ASCII characters properly, they sidestepped the issue. That's kind of sloppy.


Difference between Disk Encryption and Volume Encryption? I'm trying to understand the different between disk encryption and volume encryption, more specifically as it relates to SAP HANA, link here.
From my understanding Disk Encryption prevents the threat where someone physically disks your server/disk. Once the VM is running it offers no additional protection as all data is in plaintext.
Volume encryption as per SAP's solution states that:
"If data volumes are encrypted, all pages that reside in the data area on disk are encrypted using the AES-256-CBC algorithm. Pages are transparently decrypted as part of the load process into memory. When pages reside in memory they are therefore not encrypted and there is no performance overhead for in-memory page accesses"
If I'm interpreting this correctly it would seem that the data that is written to disk is encrypted using AES256, so even if someone could get access to the running server they will be unable to view the files unless they had the keys, which is different to disk encryption.
Any thoughts?

In practice, "disk encryption" and "volume encryption" (often prefixed with "full") are two terms for the same thing. It is almost always more correct to say volume encryption - I can imagine a disk encryption system, but as far as I know none actually are in use - but the terms are used interchangeably.
Now, with that said, I'm not familiar with SAP HANA, and it looks like it's doing something perhaps better termed "file encryption" or "data encryption". User-mode software approximately never interacts with volumes directly (except for operations like formatting or imaging), and a "volume" - especially in the sense of computer data storage - typically refers to a logical range of bytes suitable for e.g. formatting with a file system. (A volume is often, but not always, the same as a partition - which is a physical, rather than logical, range of bytes - but if you have e.g. two partitions which are spanned, they will form one volume.) Getting back to SAP HANA, the page you linked talks about securing against data access "at the operating system level". It's unclear whether this is supposed to be the OS that the software runs on (in which case true security is impossible, as the OS can always read the encryption key out of process memory, or indeed read the decrypted data out of process memory), or protection against the data being read by a different OS (i.e. after a disk was stolen and put in another computer).
It is possible SAP HANA writes to a a disk volume directly, bypassing the file system driver stack, but this is very unlikely. It's more likely that the "data volume" it refers to is contained in one or more files on a file system, and simply means the place where database data is persisted rather than anything an OS would recognize as a "volume". In that case, SAP HANA's "Data volume encryption" is simply a matter of encrypting that data (in userspace, with a key known to the process) before the data is sent to the disk. The degree to which this is a meaningful security measure depends on how secure the key is; it appears the key is stored in the file system, so an attacker with full access to the disk (either offline, or through an OS they control) can probably extract the key and decrypt all the data. However, an attacker that can only access specific files (potentially backups?) that do not include the key wouldn't be able to decrypt the data.
In this case, the difference between [full] disk encryption / [full] volume encryption and SAP HANA's data volume encryption comes down to two things: where the key is stored (must be re-derived or unsealed at boot e.g. from some hardware security device or a password, or just in the file system), and where the transparent encryption/decryption occurs (in the OS storage stack, or in the HANA process). Full volume encryption is meaningless against an attacker whose code is already running on the (virtual or physical) machine but is secure against somebody stealing the hard disk. Process-level data encryption is secure against an unprivileged attacker on the local machine who can't read the key, but is a trivial speed bump against anybody who has unrestricted access to either the file system or the running process.


Will my company’s VPN work internationally, and will it alert them or display as a security threat? I work remotely and have to go to Europe for a few weeks in order to deal with a family emergency. I don’t want to explain the situation to my company and I know it won’t affect my work productivity. Will I be able to log into the network/VPN from there, and if so, will it alert IT for a possible security threat? (There are no international branches, only based in the US).

Only your company can know the answer to that question.  However, I would suggest that there is still a firm answer here.
Europe may be blacklisted
If someone at your company wanted to track people connecting internationally, then they certainly can.  However, that wouldn't be my concern.  My concern would be that I would show up and find myself blocked entirely.  I've met many IT administrators here in the US who reflexively block international IP addresses simply because there is no legitimate need to accept international connections, but international traffic still causes trouble.  To pick two real life examples, I once watched someone block most of Asia because the Baidu spider happened to be hitting resource-intensive pages on a web server, and I saw someone block large sections of Europe because of automated port scanners coming out of Eastern Europe.  For companies that work exclusively in the US, it's not crazy to ban access from other parts of the world.
Here is a question from someone who discovered that their health care provider's website blocks all connections from anywhere outside of the US.  I figured it was worth a mention as an example of one (of many) cases where a company restricts international traffic.
You can always try to test it from here
If you can find a VPN with an exit point in your destination country, you could try signing up with that VPN service, using its exit point in Europe, and then connecting to your work VPN.  Setting up a double VPN can be a pain (I've never actually done it), but it's still less of a pain than showing up in Europe and having to call your boss because you can't work.  You may also find out if they track connections from Europe, if your boss calls you up and asks what's going on.
Summary
As a result, it's possible that you'll show up and find you can't connect at all.  It's also entirely possible that you'll show up, have no problems, no one will find out, and no one would care if they did.  Unfortunately the only thing that can be guaranteed is that your company could find out if they wanted to, and that they might have already blocked international traffic for reasons completely unrelated to employees like you.
Ultimately only your company can answer this question, and you're going to have to decide which you are more worried about: showing up in Europe, being unable to work, and having to call and fix it, or talking to your company about it.


(proper) way to inform TLS server to drop TLS session with clientAuth Is there a way for a TLS client to inform the server that it doesn't intend to resume its authenticated session(s) anymore?

Example:

A client established authenticated session with the server providing its certificate with clientAuth key usage, then performed all the application-level work, and now wishes to tell the server something like:

No need to keep my authenticated session any longer; next time you'll see this sessionID on a client hello - don't resume the session, because I have finished my work here

Is there a way to say that? As far as I see, close_notify alert doesn't mean this, it just informs that connection is going to be closed or unprotected data will be transfered through it.

Is there a way for a TLS client to inform the server that it doesn't intend to resume its authenticated session(s) anymore?

Yes, by sending an Alert with a Fatal severity.

From RFC 5077:

  5.1.  Invalidating Sessions

  The TLS specification requires that TLS sessions be invalidated
  when errors occur.

This is an apparent reference* to the following text from RFC 5246 (emphasis mine):

  7.2.  Alert Protocol

  One of the content types supported by the TLS record layer is the
  alert type.  Alert messages convey the severity of the message
  (warning or fatal) and a description of the alert.  Alert messages
  with a level of fatal result in the immediate termination of the
  connection.  In this case, other connections corresponding to the
  session may continue, but the session identifier MUST be invalidated,
  preventing the failed session from being used to establish new
  connections.

Practically speaking, choosing to terminate the SSL session with a fatal alert instead of with a warning close_notify alert probably won't cause anything worse than a log entry on the server.  Because you're not closing until after your data exchange has concluded, it's unlikely the fatal alert will affect that.  It's the moral equivalent of terminating a TCP connection with a RST instead of a FIN.

(I think you can actually just send a close_notify alert with Fatal severity instead of Warning severity, but I'd want to test that on the wire first).

Of course, if you have enough control over your client to impact how it closes the session, you have enough control to not send prior Session IDs on subsequent connections, which will achieve the same goal.  The server will never try to resume a session unless the client has first proposed that Session ID.  But if instead you're worried about third parties somehow gaining and re-using your Session ID, then triggering the server to purge it might be reasonable.

* When I say 5077 (January 2008) references 5246 (August 2008), it really was referencing an earlier version of the TLS spec; I'm just dragging out the most recent spec for you to look at.  In fact the language for "7.2 Alert Protocol" is equivalent for TLS 1.1 (RFC 4346) and TLS 1.0 (RFC 2246).


Intercepting HTTPS Android app traffic I'm trying to intercept Android application traffic from my Android phone....Basically what worked before was that i had simply installed fiddler proxy on my PC, exported the root certificate (and added it to my android devices CA storage), then i installed cydia's mobile substrate and Android-SSL-TrustKiller because apparently the apk in question uses certificate pinning that needs to be bypassed in order to properly MitM the app. I set my android wifi proxy settings to the same ip:port as the machine that fiddler is listening on.

Unfortunately this does not work anymore for the application in question and im left unable to properly read  the traffic..

I tried proxydroid (which uses iptables i believe), and fiddler showed attempts at connecting to one of the ip's, but it never goes through (i believe this is an issue with the IP not resolving to the host-name correctly, which causes certificate name mismatch errors)

With standard wifi proxy tuned to fiddler, i dont see ANY requests.  With proxydroid, i see this http://gyazo.com/6792f884e1f88453a8cacb1632d0b3d5
(tones of CONNECTS and cert mismatches, despite having imported fiddlerroot into CA storage.

I have tried to use Charles web proxy with the same results seen here : http://gyazo.com/164feead28263f1db84e300127de1594

I'm at my wits end here.  The thing is other apps seem to be displaying their traffic just fine (Facebook,instagram,dropbox, even banking apps)

I'm convinced that its some kind of certificate validation error but i don't know how to proceed... The only solution i can think of is just reformatting my phone and re-trying from square 1 entirely...

For proxying, it is possible to use Burp for android: https://systemoverlord.com/blog/2014/07/13/passing-android-traffic-through-burp/

(this second set of instruction assumes you are using an emulator)

http://resources.infosecinstitute.com/android-application-penetration-testing-setting-certificate-installation-goatdroid-installation/


How to make Location header invalid, on 3xx redirect resulting in showing HTML I came accross vulnerability where i can breakout in html body on 3xx redirect, my problem is that Location header is executed first means that html body is ignored.

here

URL can be changed only after /

I actually found way to show html body if we redirect to mailto:test@gmail.com"[INJECTION]

but this is not my case.

If anyone knows way how to make Location header invalid i appericate any help.

Yes! If you also control the value of Location header. In short, if you provide an invalid port, say x, browsers don't follow the redirect and render the content if it has body.
Here's a demo -> https://cm2.pw/redirect?url=http://example.com:x&refresh

Interestingly, it also works with mailto URI as you said. So, if your injection goes beyond /, there aren't any possible ways, at least, not in modern browsers.


Circuit level gateway vs Dynamic packet filter What is the difference between a Dynamic (or stateful) packet filter and a Circuit level gateway? Both monitor TCP handshaking between packets to determine whether a requested session is legitimate or not.

What you describe is true only for the packet filter. Circuit level gateway are more like a "Level-5 proxy" than a simple packet filter firewall.

In fact, when a client attempts to connect to a remote host through a circuit level gateway, the client does not execute its TCP handshake with the remote host. Instead, the circuit-level gateway intercepts the handshake and answers in place of the remote host.

Once the TCP handshake between the client and the circuit-level gateway has been fulfilled and that the circuit-level gateway considers that this connection can be allowed, the circuit-level gateway initiates a second TCP handshake this time between itself and the remote host. The remote host will therefore see the circuit-level gateway as IP source instead of the actual client.

Once this second handshake has been fulfilled, the the circuit-level gateway is in measure to transparently relay the data between the client and the remote server.

With a packet-filter firewall, there is only one TCP handshake occurring directly between the client and the remote host.


Enabling port forwarding on port 53 on a DNS server, why is it a risk? Well, actually I know that the risk is that somebody from an external network could access IPs and hostnames of the machines on a local network, but I am struggling to understand if this is it or if there is something else.

If the devices on the local network are all behind NAT, what would an attacker do with just a simple list of local IPs and hostnames?

It's all about recon.  The more an attacker can map your network, the better off they are.  This can be especially sensitive if you have static IP's that don't move around.

DNS servers, given you do not separate out recursive services from SOA (given you have any), can be used for various attacks that will affect hosts on your network such as cache poisoning.

Not to mention, that by opening up your DNS server with little config tweaking (rate-limiting, ACLs, etc.), you are opening yourself up for DNS Amplification and Reflection attacks similar to what is being seen with NTP lately.  Examples and explanations of the NTP reflection can be found here:
https://isc.sans.edu/diary/NTP+reflection+attacks+continue/17654

If you would like to know how to best secure your DNS server, I point you to the following document that the NSA published on securing the DNS architecture.  All NSA jokes aside, this is some very good information that falls inline with industry best practices.  The document can be found here:
http://www.nsa.gov/ia/_files/vtechrep/I733-004R-2010.pdf


How does an offline Root CA sign OCSP Response? As Root CA are kept offline for security purposes, how does it sign OCSP Response sent by Client for Intermediate Certificate Status Check?

OCSP responses may be signed not only by the CA itself, but also a designated OCSP signer. That's an X.509 certificate issued by that CA with the OCSPSigning (1.3.6.1.5.5.7.3.9) extended key usage.

For details see RFC 6960, section 4.2.2.2.


When should I generate a new CSRF token I'm building a CSRF prevention method in our application framework. I use, inter alia, the OWASP site.

We have chosen for the "Double Submit Cookies" prevention meassure, described at the OWASP CSRF cheat sheet

The cheat sheet states:

  When a user authenticates to a site, the site should generate a
  (cryptographically strong) pseudorandom value...

It sound like an user must log in first, before generating the CSRF token (aka "(cryptographically strong) pseudorandom value").

But how do I protect the forms who are accessible without authentication? Think about "forgotten password" and the login form.

I think the text should be
"When a user enters a site, the site should generate a (cryptographically strong) pseudorandom value..."

This is also easier to implement, as I did on the following way:

Application retrieves GET request: generate CSRF (session) cookie (if cookie isn't already in request)
(else)  Application retrieves non-GET (POST, PUT etc) request: validate CSRF cookie with CSRF token in request.

Am I missing a important aspect here?

Typically, you do not protect forms that are accessible without authentication.   The purpose of a CSRF attack is generally for an attacker to manipulate an authenticated user to perform an action on the site at with the attacker's data and the victim user's authenticated session.  Forms that do not require authentication generally aren't vulnerable to being manipulated in this way.

So, CSRF mitigations are typcially framed using language that assumes/requires the user to be authenticated in order for the vulnerability to exist.  Lumping unauthenticated forms in changes the threat model to one that may be valid for a given interaction, but is non-standard.

Your approach

Form a security perspective, your approach looks fine.  It eliminates the ability to generate a POST or PUT without a preceding GET, but for a browser-based interface that shouldn't generally be an issue, and for this specific threat model, is exactly what you need.


Using Nokia feature phones with new SHA256 Certificates Our site needs to provide SSL authentication with a number of older devices. These devices (mostly old Nokia Feature Phones) have a limited number of root certificates and are only able to authenticate using the SHA1 algorithm. SHA1 is being aggressively deprecated, which means that new certs issued are mostly issued using SHA256. While some CA’s will still issue SHA1 certs, they are not issued using older root CA’s as the base certificate.

Has anyone else run into a similar issue such that they need a certificate that authenticates entirely with SHA1 (we realize this is less secure, but necessary evil in order to accommodate older devices)?

Alternatively, we need a way to backport a SHA256 (I don’t know if this is even possible) cert such that an older device can handshake with that new cert. This new cert would still need to be signed by a root certificate in the same list.

Basically, you can't both support older devices, and have the improved security of hashes signed using the more modern algorithm.

The push to eliminate SHA-1 has been extensive, and, by the usual standards of these things, remarkably quick. This isn't a bad thing - there are well documented problems with SHA-1 signed certificates, and while these are not currently viable for most attackers, the technology is improving all the time, and it is better to have completely deprecated SHA-1 signatures before the technology reaches the dangerous point.

There is very little that can be done to handle the lack of support for older root certificates. These are designed to expire after a while, and although the expiration has been brought forward, the plan was always to eventually stop using them.

Similarly, you can't backport a certificate signature. You can, obviously, sign the same certificate with two methods, although you can only use one of them for a given web server safely (unlike ciphers, SSL doesn't negotiate signature methods).

If you could find a provider willing to sign a certificate using the SHA-1 algorithm, with the older root certificate, you could direct feature phone users to a distinct version of the site using this, while other users get a version signed with the newer algorithm. In order to do this, you would need to have your landing page either running over HTTP, or signed with the older certificate, then redirect from there. If you sign it with the newer certificate, the older devices won't be able to access it, so will never reach the redirection.

This does present a security risk, but this might be considered acceptable, and the difficultly of finding a willing and able CA remains.

The other option would be to perform a similar operation, but self-sign the certificate for these devices. This doesn't solve the root certificate issue, but may allow for an encrypted connection, if users can manually accept the certificate (I don't know whether this is always possible on feature phones - been a while since I tried). This provides confidentiality without implicit trust provided by a CA, but you get to control the signature and other features of the certificate.


What do I do when an ATM freezes I was using an ATM at Walmart when it froze on me.  My pin number was in the machine, the account opened.  I could not get the machine to cancel, or release my account.  I was stuck standing at the machine for almost an hour waiting for help.   Walmart told me it wasn't their machine, even thought the phone number to call was 1800 Walmart for help.

I had visions of my checking and savings being drained as I stood there feeling trapped and helpless. I called the 1800walmart number on the machine, which put me on permanent hold.  I demanded (I started to panic)   for a Store Manager to come to my aide. I even called my bank, who said it's not our ATM we can't help you.

Instead I guess I should have asked the bank and canceled my card.  I did not know if money was going to come out.  I did not know if the next person would access my account.

Shamefully I lost my temper and slammed my open hand on the touch screen while talking to the manager.  To my surprise the screen shattered.  I ended up paying Walmart $800.00 for the inconvenience and my temper.  I was informed by Walmart that no one stopped me from walking away from the ATM machine.  I was not stuck protecting my assests. I could have left anytime I wanted.

So what does one do when an ATM stalls with your information in the system?

JB

Issue to consider: You must assume the worst case scenario -you credit card info has just been stolen. The following answer deals with the actions you should take to safeguard yourself from you money being stolen as well. Note that this answer really doesnt address the mechanisms behind how your information may have been stolen (I can certainly elaborate, but that was not my initial intent here:)

Perhaps the easiest way to solve this unfortunate scenario is to call your bank (where the card was issued that is in the ATM) and report the card lost. They will immediately invalidate your current card and send you a new one (usually for free).

After I make the call, I could step away from the machine and feel very confident that there would be no further [potential] breach and move on to [potential] damage control:

Immediately find the store manager, like you did and discuss the issue with them (this is just a customer service thing and has little to do with security).
Do the same with the ATM operator and/or manufacturer. They will usually keep you posted as they perform tests to see what happened. Ideally, you just want them to find that it was just a fluke accident and that's that (perhaps they give you some compensation), but unfortunately, this scenario could have been a card skimmer that went wrong... If that is the case...
Monitor your accounts! and then perhaps...
Look into potential legal repatriations for negligence.

P.S. While you should NEVER reuse PINs, some people do so; so if that is you, change your other PINs as soon as possible.


Capture Response Attempting to Connect to Open SSH I want to be able to attempt to connect to a host using password authentication and store the server's response in a variable.  This is to see what hosts in my list accept passwords for their ssh services.

The problem is that I can not redirect this response to a variable:
root@ip's password:

The objective is to capture "root@ip's password:" as a string and store that in a variable.

Instead, the script hangs on root@ip's password: and expects input, preventing the loop from continuing to iterate.

Code:

#!/bin/bash

usernames=( root admin Administrator '' guest Anonymous )
response=

while read ip; do
    for user in "${usernames[@]}"; do
        response="$(ssh -o StrictHostKeyChecking=no -o PreferredAuthentications=password -o PubkeyAuthentication=no $user@$ip)"
        printf "The response is $response"
    done
done <ssh_telnet_open_ip_list

Edit, the code has been improved and this is what I have now:

#!/bin/bash
printf "\nProbing SSH services:\n\n"
while read ip; do
    printf "Response from $ip:\n"
    ssh -v root@$ip -o "StrictHostKeyChecking=no" -o "PreferredAuthentications=publickey" -I /dev/null 2>&1 | \
        grep "debug1: Authentications that can continue" | \
        cut -d : -f 3
    echo "------------------------------------------"
done <ssh_telnet_open_ip_list.txt

Example output:

Probing SSH services:

Response from ip:
 publickey,gssapi-with-mic,password
------------------------------------------
Response from ip:
------------------------------------------
Response from ip:
 publickey,password
------------------------------------------
Response from ip:
 publickey,gssapi-with-mic,password
------------------------------------------
Response from ip:
 publickey,gssapi-keyex,gssapi-with-mic,password
------------------------------------------
Response from ip:
 publickey,password

etc...

The command

ssh -v user@ip -o "PreferredAuthentications=publickey" -I /dev/null 2>&1 | \
    grep "debug1: Authentications that can continue" | \
    cut -d : -f 3

The output

publickey,gssapi-keyex,gssapi-with-mic,keyboard-interactive,hostbased

How it works

The SSH command connects, but only uses Public Key authentication, using /dev/null as the key
The grep command extracts the log line with the supported ciphers
The cut command extracts only the supported ciphers
As the SSH connection cannot be made with no key, it closes, returning from the command straight away

How to interpret the output

If you see keyboard-interactive, then password auth is likely accepted
If you see publickey, key based authentication is accepted


How to know whether a textfile has been edited or tampered with on the local system? Related to "How to know whether a textfile has been edited or tampered with?", I wonder if it's possible to detect file tampering on the local system?

Typical threat model: the old "Hack" computer game. I want to write out saved game state and later, when the user continues their saved game, I want to confirm they haven't edited the saved game file.

We can assume that the user has access to both the saved game file and the game executable.

Can this be done entirely on the local system, without resorting to storing hashes or signatures on a secure remote system?

I fear that the answer is "it's not possible", since any hash seed or signature key I apply to the saved game can be extracted from the executable.

I fear that the answer is "it's not possible"

You are right.

The user have the save file, and the executable. He can change the save file as much as he wants, and he have an infinite number of trials to change it, as he have access to the validator: the game executable. He can even run the executable under a debugger, set breakpoints on key functions, and infer how the save file works, and create a save editor.

  Can this be done entirely on the local system, without resorting to storing hashes or signatures on a secure remote system?

If asking the user "please don't alter the save file" does not work, it cannot be done.


EternalBlue exploit and ASLR Why is the EternalBlue exploit so successful when ASLR is likely enabled on modern machines? I may be wrong as i'm not familiar with windows internals. I can't find any explanation on this including this. Any links would be much appreciated.

Thanks.

RoRaZ and 40F4 made some real good points.

Another thing is, that especially in the health sector or finance sector, respectively in any enterprise that needs to use software specially crafted for their exquisite usage, it sometimes might not be possible to update the operating system without causing bugs in essential and expensive software that cannot be easily replaced. Especially hospitals work a lot with rather old Windows versions, making them highly vulnerable. Next thing is, it's not only the desktop systems; any (e.g. medical) device can build up on an operating system like Windows, and from what I learned those hardly ever receive any updates.

Just because there are fixes that doesn't mean that fixes are an easy option to take for everyone. The private user will not be concerned by this problem, but the private user is rather seldom the target group for exploits like EternalBlue.

Addition:

0xffffffff ffd00000 is the virtual address for 64-bit systems, if it is 32-bit, then it is just 0xffd00000


Security Risk Register Does anyone know of any good Risk Registers to start logging security risk that are found on the fly?

The problem that I am having is that we find so much in a day, things start to get lost in emails and we tend to forget the risks that was found because of multiple fires.

Something is wrong in your risk assessment process if you are finding new risks every day. It could also be that your risk identification was done at the wrong level of abstraction.

My guess is that you are doing this on a very low level and you should move up to understanding business impact. Risk is basically something of consequence that could go wrong. A technical vulnerability is not a risk. If you discover a new weakness in your webserver, that is a vulnerability and not a risk. The risk is, for example, that customer data could be stolen, or that your service could become unavailable.

If you view it like that, then discovering a new vulnerability would not create a new risk, it would affect the rating of an existing risk, and that is how it should be. So your server has more holes than you thought, that increases the potential frequency of loss, or whatever risk assessment method you are using (in FAIR, for example, it could reduce Resistance Strength).

Even if you uncover entirely new ways in which, say, personal data could be lost, the risk still is the loss of personal data. You just discovered a new attack path, not a new risk.

This doesn't directly answer your question, but it would solve your problem. I'm fairly certain that your existing Risk Register would serve you good enough if you thought of vulnerabilities as changing parameters in existing risks instead.


is it possible for an attacker to change a csr in x509? Is it possible for an attacker to forge a certificate signing request so he will be able to impersonate someone else  ? (by stealing the csr before it gets signed and changing it)

Imagine someone evil is eavesdropping on your communication in the exact moment that you submit the CSR to the CA (signer):

The attacker will attempt to impersonate on you by submitting the CSR and obtaining a certificate for your site. However, the signing entity will perform additional identity checks to assure that you own the site specified on the CSR (i.e: contact by email, challenge-password, upload x file ...). Then the attacker should control more than just the obtained CSR.

Note that the CSR carries a digital signature of the certificate request information, so the attacker can't just embed Google's public key, since it can't create valid signatures, thus CA will know that the public key owner isn't the requester.


Hacked Router Faking a Certificate Authority Does a typical computer begin with any shared secret with a certificate authority
when I buy it?  If not, a compromised home router could fake everything and get my
credit card info when I attempt to buy something, even if I were careful to use
https.

I assume your question was:

  Does a computer ship with CA certificates preinstalled?

This is the case.

The standard OEM installation of Windows (and all other OS) on a computer ships with a preinstalled list of trusted certificates.

Here are the lists for Windows and
iOS.

Even if you had CA certificates in your store that were preinstalled, they don't come there from nowhere. Windows updates the preinstalled list through Windows Updater. The connection to microsoft is also encrypted, so that you can trust the updates to be from microsoft.


Possible to safely send money via Paypal on public wifi networks? I will be away for 1 month and during that time period I will have Internet access only via public wifi networks.

I tried finding on the net tutorial on how to safely access and handle paypal payments, but I found advises on either buying a VPN or using Hamachi to access always-on PC. I don't have access to always-on PC and I would not like to pay for VPN if I don't have to. The other reason is that VPNs would slow down already slow public wifi connections.

Is there a way I can safely connect to public wifi and make paypal transactions?

I would be connecting to public wifis using PC laptop (win 7) or Android mobile phone.

Paypal transactions are already secured using SSL/TLS.

Assuming that you are using your own device that has not been compromised with malware, it should be perfectly secure to peform Paypal transactions on a public wifi network.


Why is home Windows 10 machine listening on port 8080 by default? Ever since we upgraded one of our home windows machines to Windows 10, Kaspersky has been logging blocked network intrusion attempts over port 8080.  The exploit is a strange one and tries to hit a vulnerability that the machine doesn't have.  Confused, I ran an nmap version scan on the local address of the machine in question.  Sure enough, (at least locally) it is listening on port 8080 (http) with this service: Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP).

I recently disabled UPnP in the router's settings out of security fears.  The actual program running on the machine that is tied to that port is...well...the system itself (PID 4).  If we weren't getting network intrusion attempts I'd think nothing of it, but obviously, something is being forwarded to the public internet for this to happen.  How can I fix this?

I think port 8080 is being used by Java apps, check if you have installed programs like Tomcat or anything else, also run: netstat -ba with administrator account and this will give you :

-b tells netstat to output executable name of the socket owner.

-a tella netstat to list all listening and client sockets.

Is there installed Apache by any chance ?


Where do I start to learn more about a given company's or software solutions' security track record? I don't personally have the resources or authority to audit for security issues all of the third-party services and companies I might want to use or be forced to use by business circumstances. How then can I learn more about their security track records?

Preface: Without insider knowledge, it is equally likely that a company with security incidents in the past:

is better prepared for the future
will continue to have problems in the future

While an analysis of company's response to a security incident might reveal some clues about their preparedness, it can also indicate strengths or weaknesses in areas other than security itself (mainly public relations). It extends to the frequency, severity, response time.

Without full insight their assessment might lead to wrong conclusions.

Personally, I would put most trust in a company/team/system with a significant, decreasing number of well-handled near misses--an information that won't be officially publicised (unless in retrospective).

  Where do I start to learn more about a given company's or software solutions' security track record?

This question boils down to "how do I choose a business partner in a free-market economy?" If you are concerned about the security, you start by:

navigating to the main page of an Internet search engine (like duckduckgo.com, google.com, bing.com)
typing company_name security into the search field
important clicking on the News hyperlink above the search results
reading media reports related to the company, service, product in question, taking into consideration reports from the entities you trust most
iterating with different search queries: company_name breach, company_name safety record, service_name security, product_name security etc.

In short (and in theory) in a free-market economy it is the role of independent media to gain the information (including insider) and present to the public with an analysis. It is however up to the public to whom it trusts.


Any advantage to rejecting a (cell phone) call vs ignoring it? I get several calls a month from numbers that are not on my contact list.  When I search these numbers on Google, it is not unusual see message boards saying that the number belongs to a known scammer or something along those lines. I am of the mindset that if it is someone really trying to reach me they will leave a message and I can call them back later.

This article states that answering these calls can lead to fraudsters creating a list of "known numbers" for future use, which could lead to more of these calls which I certainly don't want!.

My question is this:  Is it more secure to let the phone go to voicemail (no interaction required), or to reject the call (human interaction required to push the "reject call" button)?  In other words, could my pushing the "reject call" button somehow tell the "computer system" (from the previously mentioned article) on the other end there was human interaction and therefore record the number?

Are there other advantages to these options that I (most likely) missed?

Letting it ring has no such benefit, because either way, the caller still knows it's an active phone number by the presence of a voicemail system. (even if you haven't 'set up' your voicemail)

Unused active lines would be rather rare, because they cost money. :-)

So any time you like, just reject the call to stop that annoying ring, and proceed to enjoy your day.


Different SHA256 checksum of same version of ssh binary on different machines I was wondering if I compare SHA-256 of two binaries with same version on different machines, results will be two identical checksums.
I tried this on ssh on macOS (Catalina). (I checked that ssh -V produce exactly same version)
And tested with this command:
shasum -a 256 /usr/bin/ssh

and run same command on my friends macOS (Big Sur). But at the end I got two different results. Is this normal or I'm missing something?

The SSH version alone does not say anything. The build can be different. Even a recompile with a different compiler versions, different compiler options or maybe a different time can lead to changes. But in this case the change is much bigger and more obvious:
On Mac OS Catalina (19.6.0) the ssh binary has a size of 2142352 bytes and file reports Mach-O 64 bit executable x86_64 as architecture. On MacOS bigSur (20.1.0) the binary has a size of 4303584 and is an universal binary with support for x86_64 and arm64e. Because the size differs also the content differs and thus the hash differs.
Note that the version is the same (OpenSSH 8.1p1) on both systems.


Verify client-side created data I have a Java applet, which records the whole screen of the user and uploads the images to the server.

If one would be able to (and many people could, I know) falsify the screen recording they could cheat legitimate users of the system out of their money, so there are incentives.

I have been doing some reading on this topic and it seems like any attempt at client-side validation is pretty much useless ie. trusting the client is out of the question.
Obfuscation and such only create an inconvenience to malicious users, not an obstacle.

This problem is partially solved by a feature I came up with, which enables the system to be sure that the recording is authentic up to a certain point. After that point in time, however, it becomes ambiguous again. After that point the hacker could overwrite my applet's functions and upload faked screenshots. Or he could switch monitors of his computer, where the new monitor has a fake, but identical-looking screen, open programs etc.

Somehow I need to be 99.9% sure that the recording is authentic.

So far I have come up with something like this:
Log all upload times/rates of all screenshots of all users and then if someone is suspected of cheating, compare the upload rates to other users, especially before and after the potential "switch"/"overwrite", the underlying assumption being that overwriting the code slows down the application slightly or switching monitors creates some abnormal delay.

**The question is: is my theory valid? **

Your application looks like it's mainly running client-side because the server only receives those images. You therefore have very little data you can trust. This makes it very difficult to have it tamper proof, or be able to detect the data tampering.

Let's say you expect an untampered client to upload images every second to the server. Assuming the tampering takes half a second, you expect the tampered images to be uploaded every second and a half, but the tampered client can start processing earlier and still hit the 1 second upload rate. You cannot rely on timestamps provided by the client because they can also be forged.

You said you could rely on the upload rates of the other users in order to establish a pattern of know good rates, but what if an attacker or attackers would outnumber legitimate users? There is a difficult theoretical problem about this. A Google engineer described the difficult problem of detecting spam based on user reports and building systems that could resist sybil attacks.


How secure is Kerberos? I recently got interested about Kerberos and Radius, and I already found some information about their difference. But, I got curious about how secure Kerberos actually is.

I see from the official website of Kerberos, that it is still highly maintained, and it has new version issued. Though, I have the following questions:

How often is Kerberos used? I want to know how prevalent it is in practice.
How secure is Kerberos?
What are some security best practices when it comes to Kerberos? I mean how can one use it securely?

Kerberos is still used widely in Windows server and clients are included in all major OS's.
I would have to speculate to answer this really. All I can say is that, for it to have survived so long, it can't be all bad. It is, of course, limited mainly to private networks since both the server and the clients all have to trust the Kerberos server. This makes it unsuited to web-based developments.
Sorry, not a Kerberos expert so I can't really help here. All I can say is that a quick Google search brought up some promising articles.


What is the difference between SSL vs SSH? Which is more secure? What is the difference between SSH and SSL?   Which one is more secure, if you can compare them together?
Which has more potential vulnerabilities?

SSL and SSH both provide the cryptographic elements to build a tunnel for confidential data transport with checked integrity. For that part, they use similar techniques, and may suffer from the same kind of attacks, so they should provide similar security (i.e. good security) assuming they are both properly implemented. That both exist is a kind of NIH syndrome: the SSH developers should have reused SSL for the tunnel part (the SSL protocol is flexible enough to accommodate many variations, including not using certificates).

They differ on the things which are around the tunnel. SSL traditionally uses X.509 certificates for announcing server and client public keys; SSH has its own format. Also, SSH comes with a set of protocols for what goes inside the tunnel (multiplexing several transfers, performing password-based authentication within the tunnel, terminal management...) while there is no such thing in SSL, or, more accurately, when such things are used in SSL they are not considered to be part of SSL (for instance, when doing password-based HTTP authentication in a SSL tunnel, we say that it is part of "HTTPS", but it really works in a way similar to what happens with SSH).

Conceptually, you could take SSH and replace the tunnel part with the one from SSL. You could also take HTTPS and replace the SSL thing with SSH-with-data-transport and a hook to extract the server public key from its certificate. There is no scientific impossibility and, if done properly, security would remain the same. However, there is no widespread set of conventions or existing tools for that.

So we do not use SSL and SSH for the same things, but that's because of what tools historically came with the implementations of those protocols, not due to a security related difference. And whoever implements SSL or SSH would be well advised to look at what kind of attacks were tried on both protocols.


How does this wordpress XSS work? There is a new Wordpress exploit in wp-includes/formatting.php

$textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE);

General problem here is that they try to parse HTML using regular expression. If they had ever looked at Stackoverflow they would know it's a bad idea.

Anyway, I tried to figure out how it works to understand the problem. I could not find a working solution, but I was able to create get script>:

preg_split("/(<.*>|\[.*\])/Us", "<<<>script>e", -1, PREG_SPLIT_DELIM_CAPTURE);

See https://xrg.es/#17aydc5

How could you create a full <script> tag?

You might need to re-read the advisory, the important part is this:

  A text containing carefully mixed square and angle brackets confuses
  the splitting process and results in HTML code getting partially
  texturized.

  An attacker can exploit the bug to supply any attributes in the
  allowed HTML tags. A style attribute can be used to create a
  transparent tag covering the whole window, forcing the execution of
  its onmouseover handler.

The exploit is injecting a onmouseover attribute by mixing the square and angle brackets. It is likely that you cannot inject a scipt tag at all. And since the injected text requires partial texturisaiton you will not see the actual output with your regex url. It will only let you determine which chunks are sent to be texturized. In order to see the rendered output you would need a vulnerable version of wordpress to inject into,


In this instance, is code+security code really more secure than just a longer code? On credit cards, the security code is printed on the back of the card (usually), on the premise that having a credit-card slip or photo of the front of the card won't allow you to use it fraudulently. Recently, I got a voucher from an airline for losing my luggage. It had a voucher number and security code, but they were both printed together on the piece of paper, just like this:

Redemption code: xxxxx xxxxx xxxxx (15 digits)
Security code: xxxx (4 digits)

Is this really more secure than just using a 19 digit redemption code? Why? I would understand it if the numbers were physically separated or not transmitted at the same time, so is there any security advantage in presenting, and then redeeming it, using the 15+4 format as opposed to a single 19 digit number?

The benefits of splitting identity information into two parts is that the system can then treat them slightly differently.  In that situation you have a string that can identify a person (or other record) and a string that can authenticate the person.  The system can  limit certain functions or privileges to people who can provide the authentication string, while also allowing the identity string to be used in less risky functions.

When a string serves both as identification and authentication there is no way to prevent its use by anyone with a way view that record.  You can't identify yourself without also providing the receiving system or person with the info to impersonate you.  But if the only possible use of the identity string is during a transaction, like voucher redemption, then there may not be a need to split it into two separate codes.

You are right that in your situation having both strings on a single piece of paper doesn't offer any different protection if that paper falls into the hands of the wrong person.  But there may be other portions of the system that do better protect your identity since they can request only your redemption code without exposing the security code.  For example, an airline employee can confirm you have a valid claim with just the reference code and you don't have to worry about them taking your security code and using the voucher themselves.


How to set up OpenSSH to use x509 PKI for authentication? I do not mean simply putting the public RSA key of a x.509 certificate into ~/.ssh/authorized_keys - I'm looking for a way to set up a ssh such that x.509 certificates signed by a pre-defined CA will automatically be granted access to the linked user account. RFC 6187 seems to suggest such a functionality, but I can't find any documentation on this, or whether it is implemented in OpenSSH at all.

Here's a more elaborate description of what I want to do:

A CA ("SSH-CA") is set up
This CA is used to sign user certificates with keyUsage=digitalSignature (and maybe the id-kp-secureShellClient extendedKeyUsage field)
This certificate can now be used to log in on a server. The server does not require the public key being present in the authorized_keys. Instead, it is set up to trust the SSH-CA to verify the public key and signature of the certificate (or certificate chain) and the username/UID (probably directly in the subjectAltName field, or maybe using some server-side mapping) before the usual RSA authentication takes place

So, (how) can this be achieved with OpenSSH, and if it requires a patch how can client-side modifications be kept minimal?

As an alternative I guess one could also use any S/MIME certificate plus a username to email-address mapping, without requiring an own CA. The client could also still use only the private RSA key and a certificate server is used obtain a certificate from a public key, additionally offering the possibility to use PGP certificates as well (e.g. via monkeysphere) without the user requiring any knowledge about all this as long as they simply provide a public key.

If it's not natively possible, I guess I could come up with a semi-automatic "implementation" of this by letting a script on the server automatically check a somehow else submitted certificate via openssl (or gnupg) and have the public key be put to the respective user's authorized_keys file - although at that point I am probably more or less re-doing the monkeyshere project...

OpenSSH does not officially support x.509 certificate based authentication:

  The developers have maintained a stance that the complexity of X.509
  certificates introduces an unacceptable attack surface for sshd.
  Instead, they have [recently] implemented an alternative certificate
  format which is much simpler to parse and thus introduces less risk.

...

  OpenSSH just uses the low-level cryptographic algorithms from
  OpenSSL.

However Roumen Petrov publishes OpenSSH builds that do include X.509 support, and you could try with those.

  X.509 certificates can [be] used as "user identity" and/or "host key" in
  SSH "Public Key" and "Host-Based" authentications.

Roumen Petrov's builds can be downloaded via this page.

Here's a Debian how-to for SSH with authentication key instead of password that might also prove useful in setting up your OpenSSH to accept x509 PKI for user authentication.


Export GPG key from smartcard and import yubikey I have the OPEN PGP SMARTCARD V2.1 and there I have a signature key, a encryption key and a authentication key stored. The last 8 digits of the signature key is for example: 1234 5678.
Now I want to copy these keys to my Yubikey Neo for backup purpose. I was trying this:

Plug in Smartcard and remove Yubikey
gpg -a -o seckey.asc --export-secret-key 12456789
Plug in Yubikey and remove Smartcard
gpg --edit-key 12456789 - here I get: "Secret key is available" and my keys are listed
toggle
then:

gpg> keytocard
Really move the primary key? (y/N) y
Please select where to store the key:
   (1) Signature key
   (3) Authentication key
Your selection? 1
gpg: KEYTOCARD failed: Unusable secret key

Secret keys cannot be exported from OpenPGP smart cards -- that's the very idea behind them. If you created the key on a computer and imported it to the smart card, use the backup to copy it to the Yubikey.

Otherwise, you'll have to create a new key. Be aware the Yubikey is just another OpenPGP smart card, so if you create the key directly on the Yubikey, you will not be able to export it, again.


Computer worms, propagation and exploiting vulnerabilities I am doing research on computer worms. I have been through several sites and a few caught my attention. I have learned that worms propagate through email, there are types such as XSS worm and most of them are written in scripting languages and some through c and c++ which aren't scripting languages.

How is a worm made in c and c++ and is able to travel through the internet? Does it use some sort of protocol? I am not sure where to begin and how worms target vulnerabilities. I am looking for a small explanation and probably some sort of code that shows it exploiting a vulnerability. These are the sites I have visited and read:

http://www.cse.wustl.edu/~jain/cse571-09/ftp/worms/
http://en.wikipedia.org/wiki/Computer_worm

A good example of a self-propagating worm which targeted a specific vulnerability was Sasser which exploited a vulnerability in Windows to propagate.

The author of the Sasser worm was monitoring the updates Microsoft releases for Windows. One of them was fixing something Microsoft referred to as a "Critical Remote Code Execution Vulnerability", which for a malware author reads "$$$ JACKPOT! $$$". By downloading and examining the update he found out how exactly the bug worked.

Every Windows installation has a background program called "Local Security Authority Subsystem Service" (lsass.exe) which starts with the system and listens to port 445. Any other system on the internet can connect to this service. However, they can not do anything unless they send the correct login credentials, so this service is usually harmless. But Microsoft found and fixed a bug in this program: When you send a specifically crafted message to it, a buffer overflow will happen and parts of this message will be executed as a program.

So the author wrote a program which (grossly oversimplified):

connects to random IP addresses, port 445
sends the malicious message including its own code

When the system didn't install the update yet, it would also execute this program which would then do the same thing there.

This is basically how all internet worms work. The author finds a vulnerability which allows to execute arbitrary code. They write a program which automatically searches for vulnerable systems and then uses the vulnerability to smuggle a copy of itself onto the system and execute it.

What do we learn from this? Install any released updates fast, because the moment a software vendor releases an update, the vulnerability is known and black hats will start writing malware which exploits it. You must install the patch before they are finished!


Security risks in 301/2 redirect HTTPS to HTTP I have noticed that my employer's website, which handles sensitive information, redirects some pages from HTTPS to HTTP on another domain. This feels like a poor practice. Are there any security threats associated with such redirects? Could you please point me to documentation that talks about it? Or is it just a privacy issue? Thanks!

A redirect to HTTP by itself is not a problem, especially since the Referer (which might contain sensitive information) is not included when redirecting from HTTPS to HTTP.

Of course, there might be problems if sensitive information are included in the URL of the redirect target, but this is not actually a problem of the redirect itself (which is still done with HTTPS) but of the following request which accesses sensitive URL's via plain HTTP. But it is not known if this actually happens in your specific case so it is impossible to say if there is an actual problem or not.


code optimization and security? My background is in compilers/code optimization, and I'm wondering whether there might be any interesting applications of extremely aggressive runtime code specialization towards improving security applications.  So: suppose we have a JIT compiler that can perform aggressive code optimizations based on runtime constants.  (These runtime values are not known at compile time and so the corresponding optimizations can't be done at compile time.)  Are there interesting security-related problems that could benefit from something like this?

This is probably far-fetched (and admittedly speculative), but I'll post to hopefully stimulate ideas in others:

In traditional software design, code paths dependency was clear and not dynamically determined.  As such, any security [static] analysis that relied on source-sink trace analysis was "easy" to do. (E.g. finding a code path via static analysis that uses user input in a SQL without having passed through a cleansing function; or user input reflecting back in output opening to XSS; or password making it to log files in cleartext).

However, with modern design patterns like IoC as well as dynamic nature of some languages like JavaScript, source-sink analysis becomes inherently "hard" since sources and sinks aren't [yet] connected at compile time.

So one thing that a JIT compiler could, theoretically at least, do is identify new source-sink paths that are created, and either perform at least some rudimentary type analysis, or perhaps generate an event that a security monitoring app could trap and perform in-depth analysis at runtime.

The hurdle here is not just JIT-based source-sink identification in inexpensive way, but also that security type analysis on top of it is [currently] is prohibitively slow (AFAIK).  But perhaps some rudimentary type analysis may be done at runtime in at a reasonable performance expense.


Email header of an email sent from one email ID to the same email ID The SPF and DKIM Signature fields are missing in the email header when an email is sent from one email ID to the same email ID. What is the reason for this?

DKIM headers are usually added by some but not all mail servers for outgoing mail, i.e. mail leaving the domain. SPF headers are added by some but not all mail servers for external mail entering a domain. In your case the mail is only sent from one account to the same account so it probably never passes an outgoing nor an incoming mail server and thus these headers don't get added.